Concurrent Systems (prof. Gorla) - AA 2016-2017

Teacher Daniele Gorla
Phone 06-4991 8434
Office Via Salaria 113, 3rd floor, room 310

The class is focused on the foundational aspects and on the formal/mathematical semantics of concurrent programming languages. The class is structured in two main parts. The first part describes the main characteristics and the basilar problems of every concurrent system (mutual exclusion, synchronization, atomicity, deadlock/livelock/starvation, ...) and the relative solutions at the implementation level (semaphores, monitors, system primitives, ...). Furthermore, more evolute notions are shown, like: failure detectors, their implementation and their use to obtain wait-free implementations; universal object, consensus object and consensus number; transactional memory, ... The second part of the course describes the preliminary notions of a minimal concurrent language called CCS (execution of parallel processes through labelled transition systems, interleaving semantics, syntonization, non-determinism, process simulability) and presents a mathematical model, with different features for the specification and the analysis of systems written in such a language.

In the time left, we shall have lectures in the form of seminars where more advanced programming mechanisms (like name creation and exchange, type systems for the verification of properties, cryptography, distribution, truly concurrent semantics) will be presented.

The course integrates didactic parts to recent research problems.


2nd semester (end of February --> end of May).

Orario Aula
tue 8:30-10:30 Aula G50 (Via Regina Elena)
thu 8:30-10:30 Aula G50 (Via Regina Elena)

Text books

First part:

  • M. Raynal: Concurrent Programming: Algorithms, Principles and Foundations. Springer, 2013. (chapters 1, 2, 3, 4, 5, 10, 14, 16 and part of 17).

Second part:

  • R. Milner. Communicating and Mobile Systems. Cambridge University Press, 1999. (chapters: 1, 2 (no 2.3), 3, 4 (no 4.1, 4.4, 4.5 and 4.6), 5 (no prop. 5.2, ex 5.3, lemma 5.4/5.5, theor. 5.6, def. 5.17, prop. 5.18, prop. 5.23), 6 (no 6.3) and 7 (only 7.2 and 7.3).
  • R. Cleaveland and S. Smolka. Process Algebra. In Encyclopedia of Electrical Engineering, John Wiley & Sons, 1999. Available at (sect. 3.2, 4.1 and 4.2).
  • R. Cleaveland and O. Sokolsky. Equivalence and Preorder Checking for Finite-State Systems. In "Handbook of Process Algebra," pp. 391-424, Elsevier, 2001. Available at (sect. 3.1).

Third part:

Detailed Program

The course is split into 3 parts:

  • The first part studies foundational problems of concurrent systems:
    • sequential vs concurrent programs
    • Process synchronization (competition vs cooperation)
    • Safety and liveness properties; a hierarchy of liveness properties (deadlock freedom, starvation freedom, bounded bypass)
    • Mutual exclusion: atomic registers (algorithms by Peterson and Lamport; how to obtain a starvation free lock object from a deadlock free lock object), with specialized hardware primitives (test&set, compare&swap, fetch&add) and with non-atomic registers (Bakery algorithm).
    • Semaphores, monitors and their use for solving classical problems (producers-consumers, readers-writers, rendezvous, dining philosophers)
    • Transactional memory
    • Atomicity and its properties
    • mutex-free concurrency: liveness revisited (obstruction freedom, non-blocking and wait-freedom); mutex-free implementation of an unbounded stack; failure detectors Omega_X and Diamond_P, and the associated construction of non-blocking and wait-free implementations from an obstruction free implementation; hints on how to implement the Omega failure detector.
    • Universal object; consensus object and its universality; primitives hierarchy based on the consensus number.

  • The second part is focused on CCS (Calculus of Communicating Systems [Milner:1980]):
    • non-determinism
    • Labeled transition systems
    • recursion
    • parallel composition (interleaving semantics)
    • synchronization
    • restriction
    • bisimulation: strong vs weak, axiomatization, logical characterization, algorithmic verification.

  • The third part will present possible enhancements of the previous material (every lecture will be on a different topic). By following the students' interests, some of the following topics can be presented:
    • communication: name creation and passage
    • polyadic communication (type system for correct communications and encodability in the base calculus)
    • asynchronous communication and encodability of synchrony
    • higher-order communication and its encodability in the base calculus
    • encoding of the lambda-calcolus
    • a model for object-oriented languages
    • concurrent calculi with cryptography or distribution
    • truly concurrent semantics


Here, [R] denotes Raynal's book; [CCS] and [PI] denote teacher's lecture notes on CCS and pi-calculus (that are a unified and coherent presentation of the texts for the second and the third part of the course listed above).

Exam modalities

There are two possible ways to pass the exam:

  • First modality (better suited for students who regularly attend the classes)
    • a homework on the first two parts of the course;
    • a short presentation of a simple research paper about the topics of the third part of the course;
  • Second modality: oral exam on all the topics presented during the classes.


Beginning of the classes Classes will regularly start on February 21st, 2017.

-- DanieleGorla - 20 Jan 2016

-- DanieleGorla - 03 Mar 2005

Edit | Attach | Watch | Print version | History: r80 < r79 < r78 < r77 < r76 | Backlinks | Raw View | Raw edit | More topic actions
Topic revision: r80 - 2017-02-13 - DanieleGorla

Questo sito usa cookies, usandolo ne accettate la presenza. (CookiePolicy)
This site is powered by the TWiki collaboration platform Powered by PerlCopyright © 2008-2017 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback