Concurrency Theory

Instructors Fabrizio Montesi < fmontesi [at] >
Marco Peressotti < peressotti [at] >
Period Fall 2017
Code DM861 (10ECTS, Master level,
Office hours Open door.
Prerequisites Students taking the course are expected to be confident with the content of DM519 (Concurrent Programming).


Multi-core processors, cloud computing, and web services make concurrent systems widespread. However, designing and programming such systems correctly is challenging, since it requires predicting how multiple programs executed independently will interact. This course aims at presenting and investigating models, reasoning techniques, and abstract programming disciplines for concurrent systems. These tools allow for translating concrete requirements and designs into precise mathematical definitions, which can be used to prove that the desired properties are provided (such as lack of deadlocks or safe usage of asynchronous channels).

Many of the models covered in the course are the bases of recent or emerging programming languages and design tools, such as BPMN, Go, and Jolie.

In relation to the competence profile of the degree it is the explicit focus of the course to:

At the end of this course, the student is expected to have the following competences:

Selected topics

Course evaluation

Results of the final course evaluation.