The course will be split into two halves. One half will focus on practical concurrent programming in a variety of programming languages using a range of paradigms. It will cover:
- Shared memory concurrent programming in C++
- Synchronisation using locks and atomic operations
- Implementation of synchronisation primitives
- Functional programming and concurrency
- Dynamic data race detection
The other half will explore the theory and practice of shared memory concurrency, which underpins many of the concurrency models studied in the first half. It will focus on:
- Primitives for shared-memory concurrency
- Architecture support for single and multi-core shared memory
- Strong and weak memory models
- Challenges of correct concurrent programming (races, deadlocks, livelocks, progress guarantees)
- Design patterns for synchronisation (mutexes, locks, monitors)
- Concurrent objects and linearisability
Theory: Dr Azalea Raad
Practice: Dr Alastair Donaldson
- College Site
- Year 3 Tar [Imperial Students Only]