Extreme Multiprogramming (XMP)

Course content

Multithreaded programming is often considered complex, and classic concurrency problems, such as race conditions and deadlocks occur frequently in multithreaded programs. The overall purpose of this course is to enable the student to use threading as the primary design mechanism for large, maintainable, and high-performance applications. 

The course will equip the student with the tools, primarily Communicating Sequential Processes (CSP), required to understand and apply concurrency as a fundamental tool for building both computational platforms (systems-level programming) and end-user applications. It contains a brief introduction to the abstract CSP algebra and in depth concrete realizations in practical programming systems.

Learning outcome

At course completion, the successful student will have: 

Knowledge of:

  • The CSP framework: concepts, notation, and reasoning principles.

  • CSP-based libraries and languages, such as PyCSP, Go, or Occam.

  • Implementation techniques for efficiently executing concurrent programs on highly parallel platforms.

  • Tools for automatic analysis and verification of concurrent systems.


Skills to:

  • Design and implement highly concurrent programs using the CSP paradigm.

  • Analyze and verify properties of concurrent programs (or program fragments), with respect to both correctness and performance.

  • Reduce to overall complexity of managing concurrency by means of compositionality


Competences to:

  • Construct and validate maintainable, high-performance concurrent and/or parallel applications according to sound structuring and reasoning principles.

  • Communicate effectively and rigorously about key aspects of concurrent systems in both theoretical and practical contexts.

Lectures and mandatory assignments. Independent work at home will be a major part of the workload.

See Absalon for final course material. The following is an example of expected course litterature.

Selected articles and notes.

Supplementary textbook: Tony Hoare, Communicating Sequential Processes (freely downloadable from usingcsp.com);

Solid sequential programming competences; BSc-level background in computer architecture (CPU organization, memory hierarchy, ...) and multiprogramming (threads, locks, monitors, semaphores,,,,); basic discrete mathematics (sets, sequences, functions, relations, quantifiers, induction, ...).

7,5 ECTS
Type of assessment
Written assignment, 12 days
An individually written report based on a fixed assignment, containing both design, reasoning and programming tasks. The report is due on the last day of the exam period and is submitted electronically.
All aids allowed
Marking scale
7-point grading scale
Censorship form
No external censorship
Several internal examiners
Criteria for exam assessment

See learning outcome.

Single subject courses (day)

  • Category
  • Hours
  • Lectures
  • 28
  • Exam
  • 50
  • Preparation
  • 128
  • English
  • 206