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 is available on Moodle.
Date | Title |
---|---|
Feb 22 | Introduction & Course Overview |
Feb 28 | Java Recap and JVM Overview |
Mar 1 | Introduction to Threads and Synchronization (Part I) |
Mar 7 | Introduction to Threads and Synchronization (Part II) |
Mar 8 | Introduction to Threads and Synchronization (Part II) |
Mar 14 | Parallel Architectures: Parallelism on the Hardware Level (Part I) |
Mar 15 | Parallel Architectures: Parallelism on the Hardware Level (Part II) |
Mar 21 | Basic Concepts in Parallelism |
Mar 22 | Divide and Conquer, Cilk-style bounds |
Mar 28 | Divide and Conquer, Cilk-style bounds |
Mar 29 | ForkJoin Framework and Task Parallel Algorithms |
Apr 4 | ForkJoin Framework and Task Parallel Algorithms / Shared Memory Concurrency, Locks and Data Races |
Apr 5 | Shared Memory Concurrency, Locks and Data Races (High-level data races) / Fast Forward | Apr 18 | Data Races - Implementing locks with Atomic Registers | Apr 19 | Data Races - Implementing locks with Atomic Registers II | Apr 25 | Beyond Locks I: Spinlocks, Deadlocks, Semaphores | Apr 26 | Beyond Locks II: Semaphore, Barrier, Producer-/Consumer, Monitors | May 2 | Readers/Writers Lock, Lock Granularity: Coarse Grained, Fine Grained, Optimal, and Lazy Synchronization | May 3 | Lock tricks, skip lists, and without Locks I | May 9 | Without Locks II | May 10 | ABA Problem, Concurrency Theory | May 16 | Sequential Consistency, Consensus, Transactional Memory | May 17 | Consensus Hierarchy + Transactional Memory | May 23 | Transactional Memory + Message Passing | May 24 | Message Passing | May 30 | Consensus Proof and Reductions | May 31 | Parallel Sorting |
All material (exercise slides and exercises) is available on Moodle.
All exercises start in the first week of the semester.
Week | Title | Due Date |
---|---|---|
1 | Introduction | 27.02.2023 |
2 | Introduction to Multi-threading | 06.03.2023 |
3 | Multi-threading | 13.03.2023 |
4 | Parallel Models | 20.3.2023 |
5 | Divide and Conquer | 27.3.2023 |
6 | Task Parallelism | 10.4.2023 |
7 | Synchronization And Resource Sharing | 18.4.2022 |
The exam preparation session is scheduled at:
The session is hosted by Elia Trachsel and will be in German.
All material of the exam preparation session will be available on Moodle.
There is a written, centralized exam after the end of the semester. Exercise sessions are not graded.