General description

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

Learning Objectives

This course enables the student to:

Course Organization


Week Lecture Topic Homework
1 1 Course introduction, Recursion
1 1 Algorithm Analysis
2 1 Basic Data Structures (Lists, Stacks, Sets)
2 2 Algorithms for basic data structures
3 1 Trees (Binary trees)
3 2 More Trees (B+ Trees)
5 1 Graphs (Traversal)
5 1 Graph algorithms (Topological sorting, Routing)
4 1 Sorting
4 2 Searching
6 1 Hashing
6 2 Strings and string search
7 1 Dynamic programming (Memoization, Shortest paths)
7 2 Genetic algorithms


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


If you would like to get an in-depth treatment of the subject, I recommend investing in the following books:

[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.