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 19 | Introduction & Course Overview | Slides |
Feb 20 | Java Recap and JVM Overview | Slides |
Feb 26/27 | Introduction to Threads and Synchronization | Slides |
Mar 5 | Introduction to Threads and Synchronization | Slides |
Mar 6/12/13 | Parallel Architectures | Slides |
Mar 19 | Basic Concepts in Parallelism | Slides |
Mar 20 | Parallel Programming Models: Task and Data Parallelism | Slides |
Mar 26/27 | ForkJoin Framework and Task Parallel Algorithms | Slides |
Apr 2 | Shared Memory Concurrency, Locks and Data Races | Slides |
Apr 9 | Data Races, Solving Mutual Exclusion with Atomic Registers | Slides |
Apr 10 | Solving Mutual Exclusion for many processes, Hardware Primitives for mutual exclusion | Slides |
Apr 16 | Spinlocks, Deadlocks, Semaphores | Slides |
Apr 17 | Beyond Locks II: Semaphore, Barrier, Producer-Consumer, Monitors | Slides |
Apr 30 | Readers/Writers Lock, Lock Granularity: Coarse Grained, Fine Grained, Optimal, and Lazy Synchronization | Slides |
May 7 | Lock Tricks, Skip Lists, and Without Locks I | Slides |
May 8 | Without Locks II | Slides |
May 14 | Concurrency Theory | Slides |
May 15 | Transactional Memory | Slides |
May 21 | Transactional Memory and Message Passing | Slides |
May 22 | Message Passing II | Slides |
May 28 | Message Passing, Parallel Algorithms | Slides |
May 29 | Parallel Algorithms II | Slides |
Students should bring their laptops to the exercise sessions as most of the exercises involve programming.
Title | Slides | |
---|---|---|
Command Line Basics |
There is a written, centralized exam after the end of the semester. Exercise sessions are not graded.