Course syllabus for Principles of Concurrent Programming

Course syllabus adopted 2026-02-10 by Head of Programme (or corresponding).

Overview

  • Swedish namePrinciper för parallell programmering
  • CodeTDA384
  • Credits7.5 Credits
  • OwnerTKDAT
  • Education cycleFirst-cycle
  • Main field of studyComputer Science and Engineering, Software Engineering
  • DepartmentCOMPUTER SCIENCE AND ENGINEERING
  • GradingTH - Pass with distinction (5), Pass with credit (4), Pass (3), Fail

Course round 1

  • Teaching language English
  • Application code 49124
  • Open for exchange studentsYes
  • Only students with the course round in the programme overview.

Credit distribution

0117 Laboratory 3 c
Grading: UG
3 c
0217 Examination 4.5 c
Grading: TH
4.5 c

In programmes

Examiner

Course round 2

  • Teaching language English
  • Application code 49123
  • Open for exchange studentsYes
  • Only students with the course round in the programme overview.

Credit distribution

0117 Laboratory 3 c
Grading: UG
3 c
0217 Examination 4.5 c
Grading: TH
4.5 c

In programmes

Examiner

Eligibility

General entry requirements for bachelor's level (first cycle)
Applicants enrolled in a programme at Chalmers where the course is included in the study programme are exempted from fulfilling the requirements

Specific entry requirements

The same as for the programme that owns the course
Applicants enrolled in a programme at Chalmers where the course is included in the study programme are exempted from fulfilling the requirements

Course specific prerequisites

Knowledge in propositional logic. Basic familiarity with object-oriented and functional programming is recommended, as both paradigms are heavily used in exposition of the principles of concurrency and laboratory work. More specifically, we use Java and Erlang as programming languages. Students without knowledge of Java or Erlang but with experience in other similar programming languages typically quickly adapt.

Aim

Concurrent and parallel programming has become ubiquitous in modern software and systems, where concurrency is leveraged to exploit physical parallelism and speed up computations, to provide interactive multi-tasking, and to handle the interactions with asynchronous external events. This course aims to provide an introduction to the principles underlying concurrent systems, as well as to practical programming solutions for modeling and exploiting concurrency in programs. Domains where such principles and practices are relevant include operating systems, distributed systems, real-time systems, and multicore architectures.

Learning outcomes (after completion of the course the student should be able to)

Knowledge and understanding:
  • demonstrate knowledge of the issues and problems that arise in writing correct concurrent programs;
  • identify the problems of synchronization typical of concurrent programs, such as race conditions and mutual exclusion

Skills and abilities:

  • apply common patterns, such as lock, semaphores, and message-passing synchronization for solving concurrent program problems;
  • apply practical knowledge of the programming constructs and techniques offered by modern concurrent programming languages;
  • implement solutions using common patterns in modern programming languages

Judgment and approach:
  • evaluate the correctness, clarity, and efficiency of different solutions to concurrent programming problems;
  • judge whether a program, a library, or a data structure is safe for usage in a concurrent setting;
  • pick the right language constructs for solving synchronization and communication problems between computational units.

Content

  • Physical vs logical parallelism
  • Concurrency problems: race conditions, interference, deadlock, fairness, livelock
  • Mutual exclusion
  • Shared memory synchronization: using semaphores or fine grained locking
  • Message-passing synchronization: using message queues

Organisation

The course is organized in lectures and laboratory assignments.

Literature

We use two books:
  •  "Principles of Concurrent and Distributed Programming (Second edition)", M. Ben-Ari, Addison-Wesley, 2006. ISBN 0-321-31283-X.
  • "The Art of Multiprocessor Programming, Revised Reprint", M. Herlihy and N. Shavit, Morgan Kaufmann, 2012. ISBN 978-0-12-397337-5.

Examination including compulsory elements

The course is examined by an individual written exam (4.5 hec), carried-out in an examination hall, and laboratory assignments (3.0 hec) which are normally carried out in pairs of students. The complete course grade is then determined by the sum of the scores of both the laboratory part and the written exam, given that both were a pass separately. 

The course examiner may assess individual students in other ways than what is stated above if there are special reasons for doing so, for example if a student has a decision from Chalmers about disability study support.

Principles of Concurrent Programming | Chalmers