Please note! Course description is confirmed for two academic years, 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.


Upon successfully completing the course a student

(i) understands the essential functional structure of a programmable computer and its operation during program execution,

(ii) understands the physical limitations and possibilities of computers, including the main computational resources (time, space, parallelism, etc) and how to put these into use,

(iii) can determine/measure the performance of a computer program in practice, in simple cases by inspecting only the structure of the program,

(iv) understands what is meant by an abstract interface and its implementation, including the possibility of alternative implementations with different performance characteristics,

(v) understands the concept of recursion and can write programs that employ recursion and operate on recursive data structures, and

(vi) knows the basics of algorithm design and analysis, including selected designs for fundamental combinatorial tasks (searching, sorting, etc).

Credits: 5

Schedule: 01.03.2021 - 28.05.2021

Teacher in charge (valid 01.08.2020-31.07.2022): Mikko Kivelä

Teacher in charge (applies in this implementation): Shaofeng Jiang

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

Responsible Teacher: Shaofeng Jiang <>

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:

    Introduction to computer architecture and program execution from gate level to high-level programming languages. Programming abstractions and analysis of program performance. Aspects of functional programming, e.g. recursive definitions and recursion. Introduction to computer science and problem-solving with algorithms.

Assessment Methods and Criteria
  • Valid 01.08.2020-31.07.2022:

    Programming assignments and an exam

  • Applies in this implementation:

    There is no exam for the spring 2021 instance of this course. Students are assessed based on programming assignments and other exercises.

  • Valid 01.08.2020-31.07.2022:

    Lectures: 24 (4) [3*2 weeks, 2*2h lecture/week] Work in small groups: 36 (4) [3*3 weeks, 2*2 work in Maarintalo / week] Independent work: 72, Exam: 3. Total 135 [5 cr]

  • Applies in this implementation:

    There is no group work in the spring 2021 instance of this course, nor contact teaching in the Maarintalo labs. Work is done individually, and supported through remote teaching by course staff.


Study Material
  • Valid 01.08.2020-31.07.2022:

    Lecture notes, articles, and programming assignments

  • Valid 01.08.2020-31.07.2022:

    CS-A1110 Programming 1 / CSE-A1110 Programming 1


Details on the schedule
  • Applies in this implementation: