Topic outline

  • General

    Welcome to CS-A1120 Programming 2 - 2021

    Quick links


    Course contents

    In this course we will introduce you to many of the central principles of computing and programming; to the computer as a machine, and to programming paradigms that enable you to virtualize and scale up your computations all the way to industrial-scale infrastructure.

    • The course material is collected in an extensive set of course notes.
    • The course consists of 11 rounds, each round has an associated set of exercises.

    Rounds and deadlines
    Main exercise deadline (100%)
    Extended deadline (70%)
    1. Warmup
     (video, slides, notes, exercises)
    March 5, 2021 March 10, 2021
    March 16, 2021
    2. Bits and data
     (video, slides, notes, exercises) March 12, 2021
    March 23, 2021
    3. Combinational logic
     (video, slides, notes, exercises) March 19, 2021
    March 30, 2021
    4. Sequential logic
     (video, slides, notes, exercises) March 26, 2021
    April 6, 2021
    5. A programmable computer
     (video, slides, notes, exercises) April 7, 2021
    April 27, 2021
    6. Collections and functions
     (video, slides, notes, exercises) April 21, 2021
    May 4, 2021
    7. Efficiency
     (video, slides, notes, exercises) April 28, 2021
    May 11, 2021
    8. Recursion
     (video, slides, notes, exercises) May 7, 2021
    May 18, 2021
    9. Concurrency and parallelism
     (video, slides, notes, exercises) May 14, 2021
    May 25, 2021
    10. Virtualization and scalability
     (video, slides, notes, exercises) May 21, 2021
    June 1, 2021
    11. Machines that learn?
     (video, slides, notes, exercises) May 28, 2021
    June 4, 2021

    Course information and exercises

    The exercises are distributed and returned in the A+ system, where the content will be opened in the first lecture.

    Reserve around 9 hours to work on the exercises of each round. It is recommended that you start working on the exercises in good time before the deadline.
    Course staff will hold exercise sessions online most workdays during the course where you will be able to recieve help. Attending these is an excellent way to schedule your studies.

    • The exercises on each round have two deadlines per round:
      1. a main deadline, and
      2. an extended deadline.
      Deadlines for each round can be found in the table below. All deadlines are in Finnish time.
    • Exercises returned within the main deadline are graded with full points
    • After the main deadline is reached, there is an extended deadline
    • Exercises returned after the main deadline but before the extended deadline are graded and given 70% of the full points
    • It is not possible to return the exercises for grading after the extended deadline

    • Course schedule 2021

    Normal exercises and challenge exercises

    The exercises in each round are divided into normal exercises and challenge exercises. The challenge exercises are meant to be programming puzzles, which you can use to challenge yourself. Note that some of the challenge exercises are intentionally made to be much more laborious than the normal exercises, and that the course can be passed with the grade 5 by only solving normal exercises. Only try to solve the challenge problems if you feel you need more challenge from this course and you have the enthusiasm and time to work on them! Note also, that the teaching assistants will mainly only help with the normal exercises.

    Working on the exercises
    • Programming is both an individual and group activity, where sufficient individual skills lays the basis for productive group work. The idea of the course CS-A1120 Programming 2 is to work individually to achieve sufficient individual programming skills. Because writing code independently is a compulsory skill for a programmer, writing code together with someone is forbidden in this course.
    • Each students solves and returns the exercises for grading by themselves as confidential and individual solutions. Confidentiality here means that you are not allowed to share your solutions individually or publicly so that the other students independent programming skills suffer or that they cannot be evaluated based on the returned solutions, for example because the program code was copied
    • More information:
    • Please note that because this is a very large course, the course staff will not be able to provide help on solving exercises via email or direct messages.

    We use Visual Studio Code (with the Scala Metals extension). Please see the notes for more information on how to get started using it and the course material on your own computer or Aalto VDI (please note that VDI can be really busy).

    If you need help we encourage you to join our course Zulip discussion, where you can ask questions and request one-on-one help over zoom from course staff using our lab queue.

    Detailed instructions are available in the course notes.
    The Zulip lab queue is open the following times throughout the week, with at least two TAs present:

    Zulip lab queue open.


    The course is graded as follows. It is possible to get 200 points (including bonus for providing feedback) from the warmup round and at least 400 points from each of the the other 10 rounds. In addition, solving challenge problems allows for more points. The course grade is determined by summing up the points from all of the rounds. The sum includes all point including the ones from normal exercises, challenge exercises, and feedback. After the sum is computed the grade is determined by reading it from the following scale:

    • less than 1200 points -- failed,
    • at least 1200 points -- grade 1,
    • at least 1900 points -- grade 2,
    • at least 2600 points -- grade 3,
    • at least 3300 points -- grade 4,
    • at least 4000 points -- grade 5.

    • Responsible teacher for the course is Assistant Professor Shaofeng Jiang (
    • Exercise sessions are led by University Teacher Lukas Ahrenberg (

    The best way to discuss course content and to get help with exercises and ask questions is via our Zulip workspace.

    Please note that because this is a very large course, the course staff will not be able to provide help on solving exercises via email or DMs.