General description

Algorithm: named after محمد بن موسى الخوارزمی (Muhammad ibn Musa al-Khwarizmi)

Any well-defined computational procedure that takes some value, or set of values, as input and produces some value, or set of values, as output. [1]

Data Structure:

A particular way of storing and organising data in memory so that it can be used efficiently.

Algorithms and data structures are fundamental notions in computer science. This course will teach you how to use data structures to represent data and algorithms to process them in efficient ways. The course uses the Python programming language.

def hello():
  print "Hello World"
## Hello World

The course examines the implementation of basic data structures, such as arrays, lists, stacks, sets, trees and graphs along with algorithms for efficiently creating, storing, searching and traversing them. It also touches upon more advanced topics such as genetic algorithms and dynamic programming.

Learning Objectives

This course enables the student to:

Course Organization


You can find the course assignments linked through this page. All assignments are mandatory.

Your submission material is a Jupyter notebook including the full assignment text, your solutions and the results of running your solutions on the provided datasets.

You submit your assignments THE DAY BEFORE the deadline. For example, the deadline for the first assignment is on 28/11. You must submit your assignment by Nov 27, 23:59.

To submit your assignment, you must export the Jupyter notebook to PDF (Save as…) and upload it to the designated BrightSpace folder (you can find those on BrightSpace). Name your submission file as student_id1-student_id2.pdf, replacing student_id1 and student_id2 with your TU Delft IDs. It is enough if one member of each group uploads a version of the assignment.

The assignments are signed-off and graded by TAs. You are expected to be at the lab at the designated timeslot assigned to your group. Timeslots will be announced well in advance. During your timeslot, you must be able to demonstrate a notebook with your solution running live. The TAs will compare your results with the ground truth and grade your solution in place.

Late submission: All submissions must be handed in time, with no exceptions. Any late submission will be discarded and will be graded with 0. In case of provable sickness, please contact the course teacher to arrange a case-specific deadline.


Week Lecture Topic Lecturer Assignment (Deadline)
1 1 Course introduction, Recursion GG
1 1 Algorithm Analysis GG
2 1 Arrays, Queues and Stacks MK Doubly-linked lists (jypyter, html, solutions) (28/11/2017)
2 2 Lists, Sets MK
3 1 Trees: basic concepts and binary Trees JH Red-Black Trees (jupyter, html, solutions) (12/12/2017)
3 2 More Trees: AVL and B+ Trees JH
4 1 Graphs (Representation and Traversal) PK Graph algorithms (jupyter, html, solutions) (9/01/2018)
4 2 Graph algorithms (Shortest paths, Topological sorting) PK
5 1 Sorting JH Searching (jupyter, html, solutions) (15/01/2018)
5 2 Searching JH
6 1 Strings and string search GG
6 2 Genetic algorithms MS
7 1 No Lecture
7 2 Overall Q/A GG

Lecture notes alternative formats (may be obsolete/contain errors):



In order to pass the course, you must obtain a passing grade (6+) to all the assessment criteria specified below:

Example exam material


[1] T. H. Cormen, C. E. Leiserson, Ronald L. Rivest, and C. Stein, Introduction to algorithms (3rd ed.). MIT press, 2009.

[2] P. Louridas, Real world algorithms. MIT press, 2017.