Design and Analysis of Algorithms (6 op) 3621511

Course description

Design principles of algorithms and their application to computing problems. Topics include NP-completeness, analysis techniques, and main design principles including divide-and-conquer, dynamic programming, and branch-and-bound. Examples of advanced data structures and algorithmic approaches (like heuristics, approximation, and randomization) to solving hard computational problems.


Lectures are in youtube videos and should be watched before the given date.
Schedule and Lecture Notes

Teacher: Pasi Fränti
Schedule: 34 h, starting from 7.9.2021 (Tue)
Tuesday 14-16: Discussions (Teams) about the weekly topics.


Exercises are made at your own time. Solutions must be submitted via moodle (link will appear later), or by email before the exercise session starts. Minimum of 33% tasks need to be done to pass the course. Deadline for the submissions each week is Friday 10:00. All submitted exercises count as one point. To pass the course, you need 33% of the total points. Participating the exercise sessions is obligatory.

Teachers: Practical arrangements: Gulraiz I. Choudhary
Teachers on the session: Pasi Fränti and Sami Sieranoja
Schedule: 16 h, starting from 10.9.
Friday: 10-12 (Teams)

Exercise 1 (new)
Exercise 2 (new)
Exercise 3 (new)
Exercise 4 (new)
Exercise 5 (new)
Exercise 6 (new)
Exercise 7 (new)
Exercise 8 (new)

Exercises are submitted via Moodle. Use the course key: daa2021


Your course score is calculated as a weighted sum of the exam points (90%) and the exercise points (20%). Course grade is calculated based on the following lower limits:

Preliminary knowledge

Data Structures and Algorithms I and II


Friday 29.10. 12-16 (Joensuu M100)
Friday 26.11. 12-16 (Joensuu M100)
Register via WebOodi

Recommended literature

T. Cormen, C. Leiserson, and R. Rivest: Introduction to Algorithms, MIT Press, 1990.
P. Fränti, Design & Analysis of Algorithms, Lecture Notes, 2012-2018.
Course page in WebOodi
Advanced Topics in Algorithms