This masters level algorithms course aims to refine the algorithmic thinking of a student, moving her/him from an algorithm consumer to an algorithm designer. The project-oriented course structure is tailored to facilitate the transition. The first part of the course focuses on the analysis of algorithm complexity and correctness, amortised and probabilistic analysis, while we later discuss advanced data structures, approximation algorithms, heuristic methods and biologically-inspired computing. The course also introduces computational geometry and parallel algorithms.

This course is held in English language and is oriented towards a practical course project. You will need to know the basic algorithms and data structures, and be ready to program a lot!

The course mark is composed of the coursework (the course project and homework) 50%, and the final exam 50%. To take the exam you need to score at least half of the coursework points. In addition, to pass the course, you need at least half of the final exam points.