- Profs: T. Hoefler, B. Solenthaler
- Website: https://spcl.inf.ethz.ch/Teaching/2025-pp/
- Moodle: https://moodle-app2.let.ethz.ch/course/view.php?id=24843
- Admin: Admin
- Material: Material
- Videos:
This Parallel Programming course, taught by Profs Hoefler and Solenthaler, was a well-taught and thoughtfully organized exploration of concurrent and parallel computing. The course is effectively split into two halves, covering foundational principles before moving on to more advanced, low-level concepts.
In the first half, led by Prof Solenthaler, the course laid the groundwork. While the initial pace felt a bit slow at times, I really appreciated the constant connections made to modern applications, research, and industry use cases. This practical context was extremely effective at grounding the theoretical material.
The second half of the course, taught by Prof Hoefler, picked up the pace and delved into more complex and intricate topics such as lock-free data structures, memory models, and transactional memory. This segment was taught exceptionally well, clearly explaining challenging concepts that are crucial for high-performance computing.
Overall, the blend of practical, real-world context in the first part and the deep dive into advanced concurrency mechanisms in the second made for a comprehensive and highly valuable learning experience.
Lecture Notes
- 01 Introduction & Course Overview
- 02 Java Recap and JVM Overview
- 03 Introduction to Threads and Synchronization (Part I)
- 04 Introduction to Threads and Synchronization (Part II)
- 05 Introduction to Threads and Synchronization (Part III)
- 06 Parallel Architectures - Parallelism on the Hardware Level
- 07 Basic Concepts in Parallelism
- 08 Divide & Conquer and Executor Service
- 09 DAG and ForkJoin Framework
- 10 Parallel Algorithms (Part I)
- 11 Parallel Algorithms (Part II)
- 12 Shared Memory Concurrency, Locks and Data Races
- 13 Virtual Threads
- 14 Exam Preparation (First Half)
- 15 Memory Reordering, Java Memory Model, Data Races
- 16 Implementation of Mutual Exclusion, Critical Section, Decker’s Algorithm, Peterson’s Lock, Filter Lock, Lamport’s Bakery Algorithm
- 17 Read-Modify-Write Operations, TAS, CAS, TATAS Locks, Deadlocks
- 18 Deadlocks, Semaphores, Barriers
- 19 Producer Consumer Pattern, Queue, Monitors
- 20 Producer Consumer, Sleeping Barber, Conditional Waits, Reader Writer Locks, Lock Granularity
- 21 Optimistic Sync, Lazy Sync, Lazy Skip Lists, Lock-Free Programming
- 22 Lock-Free Stack, Lock-Free List-Based Set, Lock-Free Queue
- 23 Lock-Free Unbounded Queue Protocol
- 24 ABA Problem, DCAS, GC, Pointer Tagging, Hazard Pointers, Linearizability
- 25 Linearizability Formalism, Sequential Consistency (Weaker Alternative), Quiescent Consistency
- 26 Consensus, Consensus Hierarchy, Transactional Memory, Atomic Blocks, Scala-STM, Clock Based STM
- 27 Transactional Memory, Distributed Memory, Message Passing, Go Concurrency Model, Message Passing Interface