Undergraduate course

Concurrent programming

Semester of Instruction

Autumn. Taught for the first time autumn 2017.

Objectives and Content

The course introduces principles for programming secure, reliable and robust software in a multi-threaded or multi-process environment. Concurrent programming techniques are particularly central to the course, but related techniques such as event-driven programming may also be covered. The course combines a strong theoretical foundation with practical exercises.

Learning Outcomes

After successfully completing the course, the students shall be able to:
- Write correct concurrent programs using multiple programming models, e.g., shared memory, message-passing, actors, futures, and data-parallelism primitives.
- Understand, relate and use synchronization primitives appropriately.
- Model a concurrent process using a formal method.
- Explain the potential run-time problems arising from the concurrent operation of many separate tasks.

Required Previous Knowledge

At least 60 ECTS in computer science, preferably including some mathematics

Recommended Previous Knowledge


Compulsory Assignments and Attendance

Compulsory exercises

Forms of Assessment

Written exam. If less than 20 students take the couse an oral exam may be arranged instead.
Compulsory exercises may count towards the final grade.

Grading Scale

The grading scale used is A to F. Grade A is the highest passing grade in the grading scale, grade F is a fail.

Subject Overlap


Exam information

  • Type of assessment: Written examination

    3 hours
    Withdrawal deadline