# Data Structures and Algorithms

Vrije Universiteit Amsterdam

## Course Description

• ### Course Name

Data Structures and Algorithms

• ### Host University

Vrije Universiteit Amsterdam

• ### Location

Amsterdam, The Netherlands

• ### Area of Study

Computer Science

• ### Language Level

Taught In English

• ### Course Level Recommendations

Upper

ISA offers course level recommendations in an effort to facilitate the determination of course levels by credential evaluators.We advice each institution to have their own credentials evaluator make the final decision regrading course levels.

### Hours & Credits

• ECTS Credits

6
• Recommended U.S. Semester Credits
3
• Recommended U.S. Quarter Units
4
• ### Overview

COURSE OBJECTIVE
Upon successful completion of this course, the students are expected to
• be able to analyse algorithms' resource usage by using asymptotic analysis and asymptotic notations,
• identify the algorithm design technique used by a given algorithm such as divide-and-conquer, dynamic programming, greedy, etc.),
• use these algorithm design techniques to develop new algorithms for simple computational problems,
• be aware of some common computational problems and some known algorithms for these problems.

COURSE CONTENT
Algorithms lie at the heart of computing. An algorithm is a well-defined computational procedure that takes a value (or a set of values) as input and produces a value (or set of values) as output, as a solution to a computational problem. Algorithms usually rely on a set of data structures that allow them to manipulate the data efficiently. No matter which programming language you program in, learning about data structures and algorithms is essential to build scalable systems. This course is an introduction to data structures, algorithmic design and complexity. We will start by covering the basics of data structures, including linear data structures, tree-like data structures, graph-like data structures and hash tables. We will continue with an introduction to algorithms, covering sorting algorithms, the divide-and-conquer paradigm, greedy algorithms, and dynamic programming. We will analyze the efficiency of such algorithms, using big-Oh notation and worst-case time complexity.

TEACHING METHODS
Lectures, exercises, practical work. Attendance is mandatory.

TYPE OF ASSESSMENT
4 assignments (40%) and a written exam (60%).

RECOMMENDED BACKGROUND KNOWLEDGE

It is helpful to know recursive procedures and arrays such as for example taught in the course Computer Programming (XB_40011).
It is helpful to know graphs and elementary graph algorithms as for example taught in the course Networks and Graphs (X_401010).

### Course Disclaimer

Courses and course hours of instruction are subject to change.

Some courses may require additional fees.

This site uses cookies to store information on your computer. Some are essential to make our site work; others help us improve the user experience. By using the site, you consent to the placement of these cookies.