IMPORTANT:
This is the Moodle page for the 2020 version of this course. If you are attending this course in 2021, please sign up for the appropriate Moodle page: https://moodle.taltech.ee/course/view.php?id=31476 
Students can enroll to that page themselves using the password: MYqHC3wa


Course aims:
The students are able to apply a variety of advanced algorithms and data
structures in different application contexts.

After completing this course the student:
- knows the internals of many advanced algorithms for a variety of applications:
- is able to adapt these algorithms to different problems;
- understands the internals of advanced data structures and know how to use them;
- can analyze the complexity of sequential and recursive algorithms.

The course covers the following topics:
- in-depth treatment of algorithm paradigms,
- techniques of algorithm analysis, including amortized analysis and solving of recurrence equations;
- efficient algorithms for a variety of problems, including sorting, graph search, and matrix multiplication;
- data structures that support efficient algorithms, including data structures for ordered sequences, lists, and trees;
- randomized algorithms.

Further potential topics:
- integer multiplication, signal processing, other data structures (priority queues, disjoint sets), and hashing