Concurrency and Distributed Systems
The language of Communicating Sequential Processes (CSP) is a powerful tool for understanding concurrent behaviour. It models parallel execution and inter-process communication, it supports a practical theory of correctness and refinement, and it is attractive and intuitive to use in specification.
Course dates
9th June 2025 | Oxford University Department of Computer Science - Held in the Department | 07 places remaining. |
Objectives
At the end of the course, students will have a deeper understanding of concurrency. They will be better equipped to design and develop distributed systems.
Contents
- Events and processes:
- models of concurrency; representing communication and interaction; components and interfaces; behavioural and state-based specification; levels of abstraction.
- Interaction:
- state machines; internal and external choice; nondeterminism; safety and liveness constraints; algebraic properties; traces and refusals; process refinement.
- Concurrency:
- parallel combination; specifying interfaces; static alphabets; refinement in context; dynamic process creation and mobile code.
- Abstraction:
- changing levels of abstraction; mechanisms: interleaving, renaming, and hiding; abstraction and nondeterminism; encapsulation and refinement.
- Communication:
- shared channels; synchronous and asynchronous communication; modelling values and state; input and output; indexing and replication; data independence.
- Sequential composition:
- distributed termination; sequential composition of parallel components; abstract data types; processes and state; polling, interrupts, and timeouts.
- Applications:
- case studies and exercises, including: communication protocols; critical systems; caching algorithms; objects, classes, and threads.
Requirements
There are no prerequisites for this course, although some familiarity with discrete mathematics would be useful: Software engineering mathematics would be an ideal preparation.