Parallel, Concurrent and Distributed Programming (Autumn 2020)¶
- Lectures: Thursdays, 1:00-4:00pm (Zoom link available on Canvas)
- Office hours: Tuesdays, 10:30-12:00pm, #RC3-01-03E (Cendana)
- Peer Tutor: Bryan Tan
- Tutoring Sessions: Wednesdays, 7:00-9:00pm, CR18 (Cendana)
Lectures¶
- 1. Week 01: Introduction
- 2. Week 02: Scala Primer
- 3. Week 03: Mutual Exclusion
- 4. Week 04: Concurrent Objects
- 5. Week 05: Wait-Free Implementations and Consensus
- 6. Week 06: Spin Locks and Contention
- 7. Week 06: Monitors and Blocking Synchronisation
- 8. Midterm Project
- 9. Week 07: Concurrent Lists and Fine-Grained Locking
- 10. Week 08: Concurrent Queues and Stacks
- 11. Week 09: Skiplists
- 12. Week 09: Data Race Detection in Practice
- 13. Week 10: Futures and Asynchronous Computations
- 14. Week 11: Data-Parallel Collections
- 15. Week 12: Actors and Message-Passing Concurrency
- 16. Week 13: Distributed Consensus and BFT; Wrap-Up
Supplementary Materials¶
- Code from the Lectures (you might need to email me you GitHub name to get access)
- GitHub Organisation
Textbooks¶
- The Art of Multiprocessor Programming by Maurice Herlihy and Nir Shavit
- Learning Concurrent Programming in Scala by Aleksandar Prokopec
- Introduction to Reliable and Secure Distributed Programming by Christian Cachin et al.