Please note! Course description is confirmed for two academic years (1.8.2018-31.7.2020), which means that in general, e.g. Learning outcomes, assessment methods and key content stays unchanged. However, via course syllabus, it is possible to specify or change the course execution in each realization of the course, such as how the contact sessions are organized, assessment methods weighted or materials used.


In this course, we study the principles of efficient algorithm design and you will learn how to systematically approach new algorithmic problems. You will be able to formally argue why your algorithm works correctly and identify the challenges you need to overcome to solve a given problem. You will also learn to analyse the efficiency of algorithms and algorithmic approaches prior to their implementation.

Credits: 5

Schedule: 09.09.2020 - 11.12.2020

Teacher in charge (valid 01.08.2020-31.07.2022): Jara Uitto

Teacher in charge (applies in this implementation): Jara Uitto

Contact information for the course (valid 07.08.2020-21.12.2112):

Responsible professor

  • Jara Uitto

Teaching assistants

  • Pisl Jan
  • Nikitin Alexander
  • Sander Aarts

CEFR level (applies in this implementation):

Language of instruction and studies (valid 01.08.2020-31.07.2022):

Teaching language: English

Languages of study attainment: English


  • Valid 01.08.2020-31.07.2022:

    Algorithm design paradigms: divide-and-conquer, greedy algorithms, dynamic programming. Principles of analysis of algorithms: correctness, potential functions, duality, randomization

  • Applies in this implementation:

    We will mainly follow the book by Jeff Erickson

    We will cover the topics particularly from chapters 1, 2, 4, 5, 7, 12
    Furthermore, we discuss some basic concepts in randomized algorithms and parallel/distributed algorithms.

Assessment Methods and Criteria
  • Valid 01.08.2020-31.07.2022:

    Exercise sessions, programming assignments, graded homework, and exam. 

  • Applies in this implementation:

    The topics are divided among 8 weeks of lectures. In 2020, the lectures are online. Depending on the topic, the lecture videos (divided into several pieces) will sum up to roughly 2 hours on average. 

    There are 8 exercise sessions, one per the 8 weeks of lectures. Depending on the Corona situation, these sessions will either be "live" or arranged as a virtual Q&A session. For the best grade, you are expected to be able to solve these exercises with the help of the Q&A sessions.

    There is one graded exercise per lecture week that is submitted and evaluated.

    There are 4 programming exercises that are evaluated by an automated grader.

    Due to Corona, there is no exam in 2020.

  • Valid 01.08.2020-31.07.2022:

    Lectures. Exercise sessions. Exam. Independent work. Graded homework.

  • Applies in this implementation:

    8x2 hours of lectures

    8x2 hours of independent study to learn the material

    4x3 hours to solve the programming exercises

    Up to 70 hours for the weekly exercises


Study Material
Substitutes for Courses
  • Valid 01.08.2020-31.07.2022:

    Replaces the courses T-79.4202 Principles of Algorithmic Techniques and T-106.4100 Design and Analysis of Algorithms.

  • Valid 01.08.2020-31.07.2022:

    First year engineering mathematics, together with an introduction to probability theory (e.g. MS-A05XX), and programming skills (e.g. CS-A111X). Familiarity with basic data structures (e.g. CS-A114X) is an asset.

SDG: Sustainable Development Goals

    7 Affordable and Clean Energy

    9 Industry, Innovation and Infrastructure



Registration and further information