Syllabus

Principles of Concurrent Programming

Principer för parallell programmering

Course
DIT392
First cycle
7.5 credits (ECTS)
Disciplinary domain
NA Natural sciences 100%

About the Syllabus

Registration number
GU 2025/3968
Date of entry into force
2026-03-15
Decision date
2025-11-27
Valid from semester
Autumn term 2026
Decision maker
Department of Computer Science and Engineering

Grading scale

Four-grade scale, digits

Course modules

Written exam, 4.5 credits
Laboratory work, 3 credits

Position

The course is a compulsory course in the Computer Science, Bachelor’s Programme (N1COS).

The course can also be part of the following programmes:

  1. Computer Science, Master's Programme (N2COS)
  2. Software Engineering and Management, Master's Programme (N2SOF)
  3. Applied Data Science Master's Programme (N2ADS)
  4. Bachelor's Programme in Mathematics (N1MAT)
  5. Mathematical Sciences, Master's Programme (N2MAT)

The course is a also a single-subject course at Gothenburg University.

Main field of study with advanced study

ITDVA Computer Science - G1F First cycle, has less than 60 credits in first-cycle course/s as entry requirements

Entry requirements

The student should have successfully completed at least 7.5 hec in imperative/object-oriented programming such as DIT012, DIT948 or equivalent, an additional course in programming or data structures. Moreover, the student must also have knowledge in propositional logic, which is acquired by successfully completing courses such as DIT980, DIT725, the part on introductory algebra from MMGD200, or equivalent.

Applicants must prove knowledge of English: English 6/English level 2 or the equivalent level of an internationally recognized test, for example TOEFL, IELTS.

Content

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 interaction 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.

The concepts covered in the course include:

  • 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)

The course illustrates practical solutions to concurrent programming using both imperative and functional programming languages. Thus, the course will also include short introductory tutorials on functional programming in general and on the functional programming language used in the course, providing sufficient background to
understand and use the concurrent programming abstractions demonstrated by means of functional languages.

Objectives

After successful 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;

Competence and skills

  • apply common patterns, such as lockings, 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;

Judgement 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.

Sustainability labelling

No sustainability labelling.

Form of teaching

Lectures, exercise classes, and laboratory sessions.

Language of instruction: English

Examination formats

The course is examined by an individual written exam carried-out in an examination hall, and laboratory assignments which are normally carried out in pairs of students.


If a student who has been failed twice for the same examination element wishes to change examiner before the next examination session, such a request is to be granted unless there are specific reasons to the contrary (Chapter 6 Section 22 HF).

If a student has received a certificate of disability study support from the University of Gothenburg with a recommendation of adapted examination and/or adapted forms of assessment, an examiner may decide, if this is consistent with the course’s intended learning outcomes and provided that no unreasonable resources would be needed, to grant the student adapted examination and/or adapted forms of assessment.

If a course has been discontinued or undergone major changes, the student must be offered at least two examination sessions in addition to ordinary examination sessions. These sessions are to be spread over a period of at least one year but no more than two years after the course has been discontinued/changed. The same applies to placement and internship (VFU) except that this is restricted to only one further examination session.

If a student has been notified that they fulfil the requirements for being a student at Riksidrottsuniversitetet (RIU student), to combine elite sports activities with studies, the examiner is entitled to decide on adaptation of examinations if this is done in accordance with the Local rules regarding RIU students at the University of Gothenburg.

Grades

Sub-courses

  1. Written exam, 4.5 credits
    Grading scale: Pass with distinction (5), Pass with credit (4), Pass (3) and Fail (U)
  2. Laboratory work, 3 credits
    Grading scale: Pass (G) and Fail (U)

The grading scale comprises: Pass with distinction (5), Pass with credit (4), Pass (3) and Fail (U).

To pass the course, all mandatory components must be passed. To earn a higher grade than Pass, a higher weighted average from the grades of the components is required.

Course evaluation

The course is evaluated through meetings both during and after the course between teachers and student representatives. Further, an anonymous questionnaire is used to ensure written information. The outcome of the evaluations serves to improve the course by indication which parts could be added, improved, changed or removed.

Other regulations

Knowledge in functional programming (corresponding for example to DIT441 or DIT143) is beneficial but not required.

The course is a joint course together with Chalmers.

The course replaces the course DIT391, 7.5 credits. The course cannot be included in a degree which contains DIT391. Neither can the course be included in a degree which is based on another degree in which the course DIT391is included.