Kursussøgning, efter- og videreuddannelse – Københavns Universitet

Videresend til en ven Resize Print Bookmark and Share

Kursussøgning, efter- og videreuddannelse

Extreme Multiprogramming (XMP)

Practical information
Study year 2016/2017
Block 2
Programme level Full Degree Master
Course responsible
  • Brian Vinter (6-7f72777d6e7b49776b7237747e376d74)
  • Department of Computer Science
  • The Niels Bohr Institute
Course number: NDAK13000U

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 thorough introduction to the abstract CSP algebra and its 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 or Occam.
  • Implementation techniques for efficiently executing concurrent programs on highly parallel platforms.
  • Tools for automatic analysis and verification of concurrent systems.


Skills to:

  • Prove equivalences and other formal properties of processes in the CSP algebra.
  • 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.


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.

Recommended prerequisites

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, ...).

Sign up

As an exchange, guest and credit student - click here!

Continuing Education - click here!


Study Board of Mathematics and Computer Science

Course type

Single subject courses (day)


1 block


---- SKEMA LINK ----

Teaching and learning methods

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


No limit




Expected textbook: Tony Hoare, Communicating Sequential Processes (freely downloadable from usingcsp.com); selected articles and notes.


Category Hours
Lectures 28
Exam 50
Preparation 128
English 206


Type of assessment

Written assignment, 12 days
An individually written report based on a fixed assignment, containing both theoretical 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

Criteria for exam assessment

See learning outcome.

Censorship form

No external censorship
Several internal examiners


One-week take-home assignment + 30-minute oral examination without preparation; electronic submission.

If student is not yet qualified for the exam, qualification can be achieved by hand-in and approval of equivalent assignments. The assignments must be submitted no later than 14 days before the start of the re-exam.

Mere information om kurset
Er du BA- eller KA-studerende?
Er du bachelor- eller kandidat-studerende, så find dette kursus i kursusbasen for studerende:

Kursusinformation for indskrevne studerende