The purpose of this course is to introduce students to parallel programming. By the end of the course students will be able to design and implement working parallel programs in traditional (e.g., Java Threads) and emerging parallel programming models. Moreover, students will master fundamental concepts in parallelism and be able to reason about the correctness, performance, and the construction of parallel programs using different parallel programming paradigms (e.g., task parallelism, data parallelism) and mechanisms (e.g., threads, tasks, locks, communication channels). Finally, the course will examine how parallel programming methodologies can be applied in different algorithmic domains by investigating parallelization of algorithms.
Topics include:
Main text and reference book
Related resources, text and reference books
Introduction to Java books (freely available)
All material (lecture slides & recordings) is available on Moodle.
Date | Title | Live Stream |
---|---|---|
Feb 23 | Introduction & Course Overview | Live Stream (23.2 at 10:15) |
Feb 24 | Java Recap and JVM Overview | Live Stream (24.2 at 14:15) |
Mar 2 | Introduction to Threads and Synchronization (Part I) | Live Stream (2.3 at 10:15) |
Mar 3 | Introduction to Threads and Synchronization (Part II) | Live Stream (3.3 at 14:15) |
Mar 9 | Introduction to Threads and Synchronization (Part II) | Live Stream (9.3 at 10:15) |
Mar 10 | Parallel Architectures: Parallelism on the Hardware Level (Part I) | Live Stream (10.3 at 14:15) |
Mar 16 | Parallel Architectures: Parallelism on the Hardware Level (Part II) | Live Stream (16.3 at 10:15) |
Mar 17 | Basic Concepts in Parallelism | Live Stream (17.3 at 14:15) |
Mar 23 | Divide and Conquer, Cilk-style bounds | Live Stream (23.3 at 10:15) |
Mar 24 | Divide and Conquer, Cilk-style bounds | Live Stream (24.3 at 14:15) |
Mar 30 | ForkJoin Framework and Task Parallel Algorithms | Live Stream (30.3 at 10:15) |
Mar 31 | ForkJoin Framework and Task Parallel Algorithms / Shared Memory Concurrency, Locks and Data Races | Live Stream (31.3 at 14:15) |
Apr 13 | ForkJoin Framework and Task Parallel Algorithms / Shared Memory Concurrency, Locks and Data Races | Live Stream (13.4 at 10:15) |
Apr 14 | Shared Memory Concurrency, Locks and Data Races (High-level data races) / Fast Forward | Live Stream (14.4 at 14:15) | Apr 20 | Data Races - Implementing locks with Atomic Registers | Live Stream (20.4 at 10:15) | Apr 21 | Data Races - Implementing locks with Atomic Registers II | Live Stream (21.4 at 14:15), Alternative Stream (YT) We expect a higher latency on YouTube but also a higher video quality. | Apr 27 | Beyond Locks I: Spinlocks, Deadlocks, Semaphores | Live Stream (27.4 at 10:15) Alternative Stream (Twitch) | Apr 28 | Beyond Locks II: Semaphore, Barrier, Producer-/Consumer, Monitors | Live Stream (28.4 at 14:15) Alternative Stream (Twitch) | May 4 | Readers/Writers Lock, Lock Granularity: Coarse Grained, Fine Grained, Optimal, and Lazy Synchronization | Live Stream (4.5 at 10:15) Alternative Stream (Twitch) Today we try twitch-only, in case of a catastrophic failure we fall back to zoom. | May 5 | Lock tricks, skip lists, and without Locks I | Chat-only Alternative Stream (5.5 at 14:15) Live Stream (Twitch) | May 11 | Without Locks II | Chat-only Alternative Stream (11.5 at 10:15) Live Stream (Twitch) | May 12 | ABA Problem, Concurrency Theory | Chat-only Alternative Stream (12.5 at 14:15) Live Stream (Twitch) | May 18 | Sequential Consistency, Consensus, Transactional Memory | Chat-only Alternative Stream (18.5 at 10:15) Live Stream (Twitch) | May 19 | Consensus Hierarchy + Transactional Memory | Chat-only Alternative Stream (19.5 at 14:15) Live Stream (Twitch) | May 25 | Transactional Memory + Message Passing | Chat-only Alternative Stream (25.5 at 10:15) Live Stream (Twitch) | May 26 | Message Passing | Chat-only Alternative Stream (26.5 at 14:15) Live Stream (Twitch) | June 1 | Consensus Proof and Reductions | Chat-only Alternative Stream (1.6 at 10:15) Live Stream (Twitch) | June 2 | Parallel Sorting | Chat-only Alternative Stream (2.6 at 14:15) Live Stream (Twitch) |
All material (exercise slides, recordings, exercises) is available on Moodle.
All exercises are provided online via Zoom and start in the first week of the semester. The meetings IDs are likely to change so please always refresh the website to get the latest version.
Week | Title | Due Date |
---|---|---|
1 | Introduction | 1.03.2021 |
2 | Introduction to Multi-threading | 8.3.2021 |
3 | Multi-threading | 15.3.2021 |
4 | Parallel Models | 22.3.2021 |
5 | Divide and Conquer | 29.3.2021 |
6 | Task Parallelism | 12.4.2021 |
7 | Synchronization And Resource Sharing | 19.4.2021 |
The exam preparation sessions are scheduled as follows:
The sessions are hosted by Robin Renggli. Please us the following Zoom Link: 2480870652.
All material of the exam preparation sessions will be available on Moodle.
There is a written, centralized exam after the end of the semester. Exercise sessions are not graded.