Concurrency: Models and Programming

Module aims

•     To introduce the basic concepts of concurrent programs, and demonstrate them in Java. •     To provide an introduction to model-based program design and apply it to concurrent programs. •     To teach the students how to translate concurrent models into executable Java applications.   •     Understand how to describe the structure of concurrent programs •     Acquire modelling skills to construct working FSP models •     Learn how to translate FSP models into executable Java code •     Learn how to describe concurrent properties of the system and verify them using models.  

Module syllabus

 Processes and Threads •     Finite State Processes •     Labelled Transition Systems •     Threads in Java  Concurrent Execution •     Interleaved actions •     Synchronisation  Shared Objects, Interference, and Condition Synchronization •     Critical sections •     Monitors •     Entry queues •     Condition variables •     Wait and signal, alternative signalling mechanisms, reasoning about monitors •     Condition Synchronization •     Waiting sets in Java  Safety and Liveness Properties •     Deadlocks •     Starvation •     Progress  Model-based Design •     Full lifecycle from specification to implementation   Format Three hours per week over nine weeks of combined lectures and tutorials. Optional Java surgery hour.  


Two coursework exercise. One written exam.   *This is a level 7/M course

Reading list

Core Reading

Supplemental Reading

Module leaders

Professor Nobuko Yoshida