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 23 | Java Recap and JVM Overview |
Mar 1 | Introduction to Threads and Synchronization (Part I) |
Mar 2 | Introduction to Threads and Synchronization (Part II) |
Mar 8 | Introduction to Threads and Synchronization (Part II) |
Mar 9 | Parallel Architectures: Parallelism on the Hardware Level (Part I) |
Mar 15 | Parallel Architectures: Parallelism on the Hardware Level (Part II) |
Mar 16 | Basic Concepts in Parallelism |
Mar 22 | Divide and Conquer, Cilk-style bounds |
Mar 23 | Divide and Conquer, Cilk-style bounds |
Mar 29 | ForkJoin Framework and Task Parallel Algorithms |
Mar 30 | ForkJoin Framework and Task Parallel Algorithms / Shared Memory Concurrency, Locks and Data Races |
Apr 5 | ForkJoin Framework and Task Parallel Algorithms / Shared Memory Concurrency, Locks and Data Races |
Apr 6 | Shared Memory Concurrency, Locks and Data Races (High-level data races) / Fast Forward | Apr 12 | Data Races - Implementing locks with Atomic Registers | Apr 13 | Data Races - Implementing locks with Atomic Registers II | Apr 26 | Beyond Locks I: Spinlocks, Deadlocks, Semaphores | Apr 27 | Beyond Locks II: Semaphore, Barrier, Producer-/Consumer, Monitors | May 3 | Readers/Writers Lock, Lock Granularity: Coarse Grained, Fine Grained, Optimal, and Lazy Synchronization | May 4 | Lock tricks, skip lists, and without Locks I | May 10 | Without Locks II | May 11 | ABA Problem, Concurrency Theory | May 17 | Sequential Consistency, Consensus, Transactional Memory | May 18 | Consensus Hierarchy + Transactional Memory | May 24 | Transactional Memory + Message Passing | May 25 | Message Passing | May 31 | Consensus Proof and Reductions | June 1 | 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 | 28.02.2022 |
2 | Introduction to Multi-threading | 07.03.2022 |
3 | Multi-threading | 14.03.2022 |
4 | Parallel Models | 21.3.2022 |
5 | Divide and Conquer | 28.3.2022 |
6 | Task Parallelism | 11.4.2022 |
7 | Synchronization And Resource Sharing | 18.4.2022 |
The exam preparation session is scheduled at:
The session is hosted by Alessandro Legnani 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.