University of Oxford Logo University of OxfordSoftware Engineering - Home
On Facebook
Facebook
Follow us on twitter
Twitter
Linked in
Linked in
Google plus
Google plus
Digg
Digg
Pinterest
Pinterest
Stumble Upon
Stumble Upon

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 2025Oxford University Department of Computer Science - Held in the Department07 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.