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.


You will learn how to solve algorithmic programming challenges, both individually and as a team. You will be able to design and implement efficient algorithms for challenging computational problems, in practice, quickly and correctly.

Credits: 2

Schedule: 12.09.2020 - 17.10.2020

Teacher in charge (valid 01.08.2020-31.07.2022): Jukka Suomela

Teacher in charge (applies in this implementation): Jukka Suomela

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

The course is organised by Jukka Suomela and Jan Studený. To contact the course staff, please use our Slack chat if possible.

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:

    This is a practical hands-on course. We will meet once a week in a computer lab and organise a mini-contest. During the course, you will also take part in NCPC, Nordic Collegiate Programming Contest.

  • Applies in this implementation:

    This is a practical hands-on course that is intended for students who are interested in competitive programming and algorithmic challenges. During this course, you will learn how to solve algorithmic programming challenges in practice, both individually and as a team.

Assessment Methods and Criteria
  • Valid 01.08.2020-31.07.2022:

    Programming challenges.

  • Applies in this implementation:

    The grading is pass/fail.

    You will get 2 credits by taking successfully part in at least 5 meetings during period I. Any of the following counts as a successful participation:

    • You solve at least 2 problems during the meeting.
    • You solve at least 1 problem during the meeting and at least 2 additional problems during the following week.

    NCPC counts as one meeting.

  • Applies in this implementation:

    2 credits ≈ 50 working-hours ≈ 10 working-hours per week ≈ active participation in the meeting (5 hours) plus self-study between meetings (5 hours).


Study Material
  • Valid 01.08.2020-31.07.2022:

    Available online.

  • Applies in this implementation:

    We will refer to some parts of the Competitive Programmer's Handbook by Antti Laaksonen. Additional material will be posted on Slack.

  • Valid 01.08.2020-31.07.2022:

    Students are expected to have a working knowledge of computer programming, algorithms, and data structures, and preferably some practical experience with C or C++ programming languages.



Registration and further information