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.


Having completed the course, you can define, compare and implement many fundamental data structures and algorithms. For instance, you understand how the most commonly used sorting algorithms such as insertion sort, mergesort and quicksort work and are familiar with the divide and conquer algorithm design approach. You know some data structures and algorithms based on trees. You understand how different set and map/dictionary data structures can be implemented either with trees or with hashing, and can compare their properties. You know the idea of dynamic programming and can apply it to some problems. You understand how elementary graph algorithms such as depth first search, breadth first search, and shortest path search algorithms work. You are aware that there are computational problems for which no efficient algorithms are known and can name some. You have implemented many of the above mentioned data structures and algorithms or their variants yourself. You master the basic terminology used in the domain and are able to independently study algorithms not covered in the course. You know basics of algorithm analysis and can, for instance, deduce the worst-case running time of a given algorithm in some simple cases.

Credits: 5

Schedule: 10.09.2018 - 12.12.2018

Teacher in charge (valid 01.08.2020-31.07.2022): Tommi Junttila

Teacher in charge (applies in this implementation): Tommi Junttila

Contact information for the course (applies in this implementation):

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:

    Dynamic arrays, trees, hash tables, graphs and other data structures. Sorting and searching methods, dynamic programming, graph and other algorithms. Principles of algorithm analysis. Detailed contents will be described on the MyCourses page of the course instance.

Assessment Methods and Criteria
  • Valid 01.08.2020-31.07.2022:

    Personal online exercises. and examination.

  • Valid 01.08.2020-31.07.2022:

    Self-study and non-obligatory exercise sessions. Lectures, self-study and teaching in small groups, and examination.


Study Material
  • Valid 01.08.2020-31.07.2022:

    Will be announced on the MyCourses page of the course.

  • Valid 01.08.2020-31.07.2022:

    CS-A1120 Programming 2 / ICS-A1120 Programming 2

SDG: Sustainable Development Goals

    4 Quality Education

    7 Affordable and Clean Energy

    9 Industry, Innovation and Infrastructure



Registration and further information