Introduction to Parallel Programming

5 credits

Syllabus, Master's level, 1DL530

A revised version of the syllabus is available.
Education cycle
Second cycle
Main field(s) of study and in-depth level
Computer Science A1N, Technology A1N
Grading system
Fail (U), Pass (3), Pass with credit (4), Pass with distinction (5)
Finalised by
The Faculty Board of Science and Technology, 9 March 2017
Responsible department
Department of Information Technology

Entry requirements

120 credits including 20 in computer science including a second course in programming using an imperative and object-oriented language and Algorithms and Data Structures I.

Learning outcomes

To pass the course, the student should be able to

  • explain and recognize basic concepts of concurrent and parallel computation,
  • write and modify programs that use threads and locks to exploit shared-memory concurrency,
  • explain common issues in shared-memory programming and use synchronization to avoid these issues,
  • implement solutions for fundamental synchronization problems,
  • explain consistency models and apply them to reason about the correctness of concurrent programs,
  • identify potential for concurrency or parallelism in sequential algorithms, and reimplement them accordingly.


Basic concepts of concurrent and parallel computation, e.g., speedup and parallel slowdown, Amdahl's law, Flynn's taxonomy, instruction-level parallelism, data independence. Shared-memory concurrency based on threads and locks, and its use in a language such as C++. Associated concepts and issues, e.g., synchronization, non-determinism, data races, deadlocks, fairness. Fundamental synchronization problems, such as the producer-consumer problem, and techniques for their solution. Consistency models such as linearizability and sequential consistency. The fork-join model. Task parallelism vs. data parallelism.


Lectures, labs.


Oral and written examination of assignments. Written exam.

Other directives

The course cannot be included in the same degree as 1DL540 Language Abstractions For Concurrent and Parallel Programming, 10 ECTS credits, or 1DT096 Operating Systems and Process Oriented Programming.