Parallel, Concurrent and Distributed Programming
This course on basic concurrent and parallel algorithms has been taught by Ilya Sergey at Yale-NUS College in 2019-2024. Feel free to use all the materials and submit pull requests on GitHub (the links to the sources are given below).
Please, get in touch is you’d like to get access to the homework assignments or to the model solutions for the midterm/final projects.
Lectures
- 1. Week 01: Introduction
- 2. Week 02: Scala Primer
- 3. Week 03: Mutual Exclusion
- 4. Week 04: Spin Locks and Contention
- 5. Week 05: Monitors and Blocking Synchronisation
- 6. Week 06: Concurrent Objects
- 7. Midterm Project
- 8. Week 07: Fine-Grained Concurrent Data Structures
- 9. Week 08: More Concurrent Data Structures
- 10. Week 09: Data Race Detection in Practice
- 11. Week 10: Asynchronous Computations and Futures
- 12. Week 11: Data-Parallel Collections
- 13. Week 12: Actors and Message-Passing Concurrency
- 14. Week 13: Distributed Consensus, BFT; Wrap-Up
Supplementary Materials
Textbooks
The Art of Multiprocessor Programming by Maurice Herlihy and Nir Shavit
Learning Concurrent Programming in Scala by Aleksandar Prokopec
Copyright
The lectures for Weeks 1 and 3-8 of the course are based on the The Art of Multiprocessor Programming book and adapt its accompanying slides.
The lectures for Weeks 10-12 follow the material and the code from the Learning Concurrent Programming in Scala book.