Basic Information


Course overview

This course exposes students to the principal issues involved in software development for parallel computing and discusses a number of approaches to handle the problems and opportunities caused by the increased availability of parallel platforms.

The course includes lectures, assignments, self-study, and a project. 50% of your grade is determined by project work and 50% is determined by a written exam; the exam is given during the official examination period, and there is no makeup exam. Students must be able to program using Java and C/C++.

The course may cover: memory coherence and consistency models, implications for language-specific memory models, Java memory model, models of parallel programming and parallel program execution, performance models for parallel systems, transactional memory, compiler extraction of parallelism, language and compiler support for parallel programming, threads and their execution environment, synchronization, and implementation issues of these topics.

Course schedule

Lectures are given Mondays 13:15 - 16:00 in CAB G 11.

Recitation sessions take place Thursdays 14:15 -- 16:00 in CHN C 14. Some of the recitation session hours will be devoted to other activities (tutorials, reviews, etc) or will be devoted to group meetings. Please watch this page for updates and announcements.

Tentative schedule of lectures and recitation sessions

Week Monday Thursday
1 09/20: no lecture 09/23: no recitation
2 09/27: Organization, Introduction 09/30: Introduction (continued)
3 10/4: Caches, Cache Coherence 10/7: Introduction (continued)
4 10/11:Performance modeling 10/14:Caches
5 10/18: Scheduling 10/21: Performance models
6 10/25: Memory models 10/28: Sequential consistency
7 11/1: Memory models, languages, and locks 11/4: Locks
8 11/8: Locks 11/11: Spin
9 11/15: SIMD 11/18: SIMD & Linearizability
10 11/22: Special locks and lock free 11/25: Wait-free
11 11/29: Wait-free, consensus, simt, Pebbling 12/2: Pebbling
12 12/6: Simt, oblivious, Dataflow 12/9: Dataflow
13 12/13: Oblivious, Parallelism in Training Deep Neural Networks 12/16: SIMT
14 12/20: Oblivious 2, Network models and in-network compute 12/23:


You can ask questions about the course material on Moodle .


Assignments are an important part of the course. You will not learn this material from listening to a lecture alone and should do the assignments.

Note: Do not hesitate to write an email to your TA if you have trouble with the assignments!

Number Assignment Description Solution


The project is an integral part of the course and accounts for 50% of the grade. Proposed projects can be found here.

How it works


Template for project report


50% of your grade is determined by the project, and the other 50% of the grade is determined by a written 2 hr exam (Example Exam). You are not allowed to use any electronic devices or books, notes, etc. in the exam.


There exist a large number of books on programming multi-processors, multi-core system, or threads. These books may explore some topics in more depth than the lectures, or may provide background information. None of these books is mandatory. Copies of the first two books are "on reserve" in the CS library.