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)
Date | Title | Slides |
---|---|---|
Feb 17 | Introduction & Course Overview | Slides |
Feb 18 | Java Recap and JVM Overview | Slides Demo Code |
Feb 25/26, Mar 3 | Introduction to Threads and Synchronization | Slides Demo Code Recap I Recap II |
Mar 4/10 | Parallel Architectures: Parallelism on the Hardware Level | Slides Demo Code Recap I Recap II |
Mar 11 | Basic Concepts in Parallelism | Slides |
Mar 17 | Divide and Conquer, Cilk-style bounds | Slides (1-28) Video Live Stream (17.3 at 10:15) |
Mar 18 | Divide and Conquer, Cilk-style bounds | Slides (28-50) Video Live Stream (18.3 at 13:15) |
Mar 24 | ForkJoin Framework and Task Parallel Algorithms | Slides (1-34) Video Live Stream (24.3 at 10:15) |
Mar 25 | ForkJoin Framework and Task Parallel Algorithms / Shared Memory Concurrency, Locks and Data Races | Slides (35-60) Slides (1-24) Video Live Stream (25.3 at 13:15) |
Mar 31 | Shared Memory Concurrency, Locks and Data Races | Slides (24-55) Video Live Stream (31.3 at 10:15) |
Apr 1 | Java Streams | Slides Video (password: 2pftj2) Live Stream via Zoom (1.4 at 13:15) Demo Source Code |
Apr 7 | Data Races - Implementing locks with Atomic Registers | Slides Video (nethz login) Live Stream (7.4. at 10:15) | Apr 8 | Data Races - Implementing locks with Atomic Registers II | Slides Video (nethz login) Live Stream (8.4. at 13:15) | Apr 21 | Beyond Locks I: Spinlocks, Deadlocks, Semaphores | Slides Video (nethz login) Live Stream (21.4. at 10:15) | Apr 22 | Beyond Locks II: Semaphore, Barrier, Producer-/Consumer, Monitors | Slides Video (nethz login) Live Stream (22.4. at 13:15) | Apr 28 | Readers/Writers Lock, Lock Granularity: Coarse Grained, Fine Grained, Optimal, and Lazy Synchronization | Slides Video (nethz login) Live Stream (28.4. at 10:15) | Apr 29 | Lock tricks, skip lists, and without Locks I | Slides Video (nethz login) Live Stream (29.4. at 13:15) | May 5 | Without Locks II | Slides Video (nethz login) Live Stream (05.05. at 10:15) | May 6 | ABA Problem, Concurrency Theory | Slides Video (nethz login) Live Stream (06.05. at 13:15) | May 12 | Sequential Consistency, Consensus, Transactional Memory | Slides Video (nethz login) Live Stream (12.05. at 10:15) | May 13 | Consensus Hierarchy + Transactional Memory | Slides Video (nethz login) Live Stream (13.05. at 13:15) | May 19 | Transactional Memory + Message Passing | Slides Video (nethz login) Live Stream (19.05. at 10:15) | May 20 | Message Passing | Slides Video (nethz login) Live Stream (20.05. at 13:15) | May 26 | Consensus Proof and Reductions | Slides Video (no login required) Live Stream (26.05. at 10:15) | May 27 | Parallel Sorting | Slides Video (nethz login) Live Stream (27.05. at 13:15) |
All exercises are provided online via Zoom. The meetings IDs are likely to change so please always refresh the website to get the latest version.
Title | Slides | |
---|---|---|
Command Line Basics | ||
Terminology | link Note that this list is intended as a reminder, not a replacement for the definitions given on the slides. |
There is a written, centralized exam after the end of the semester. Exercise sessions are not graded.