Parallel, Concurrent and Distributed Programming (Autumn 2021)¶
- Instructor: Ilya Sergey
- Lectures: Fridays, 2:30pm-5:30pm
- Location: Stephen Riady Centre, Global Learning Room
- Office hours: Wednesdays, 5:15pm-6:30pm, #RC3-01-03E (Cendana)
- Peer Tutor: Mark Weilong Yuen
- Tutoring Sessions: Tuesdays, 6:30pm-8:00pm, Classroom 22 (RC3-02-03)
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
- 11. Week 09: Concurrent Stacks and Skiplists
- 12. Week 09: Data Race Detection in Practice
- 13. Week 10: Asynchronous Computations and Futures
- 14. Week 11: Data-Parallel Collections
- 15. Week 12: Actors and Message-Passing Concurrency
- 16. Week 13: Distributed Consensus, BFT; Wrap-Up
Lecture materials will be posted gradually as we progress through the course.
Supplementary Materials¶
- GitHub Organisation
- Code from the Lectures (email me you GitHub name to get access)
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.