Overview
Computer networks, multiprocessors and parallel algorithms, though radically different, all provide examples of
processes acting in parallel to achieve some goal. All benefit from the efficiency of concurrency yet require
careful design to ensure that they function correctly.
The concurrency course introduces the fundamental concepts of concurrency using the notation of Communicating
Sequential Processes. By introducing communication, parallelism, deadlock, live-lock, etc., it shows how CSP
represents, and can be used to reason about, concurrent systems. Students are taught how to design interactive
processes and how to modularise them using synchronisation. One important feature of the module is its use of
both algebraic laws and semantic models to reason about reactive and concurrent designs. Another is its use of
FDR to animate designs and verify that they meet their specifications
Learning Outcomes
At the end of the course the student should:
- understand some of the issues and difficulties involved in Concurrency
- be able to specify and model concuurent systems using CSP
- be able to reason about CSP models of systems using both algebraic laws and
semantic models
- be able to analyse CSP models of systems using the model checker FDR