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 RZ F21.

Recitation sessions take place Thursdays 13:15 -- 15:00 in IFW B 42 and take place when announced. Some of the lecture 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

Week Monday Thursday
0 09/23: Organization and Introduction, one slide per page 09/26: No meeting
1 09/30: Cache Coherence, one slide per page 10/03: No meeting
2 10/07: Memory Models, one slide per page 10/10: Project Proposals and Cache Coherence
3 10/14: Linearizability, one slide per page 10/17: Sequential Consistency
4 10/21: Languages and Locks, one slide per page 10/24: Linearizability
5 10/28: Locks and Lock-Free, one slide per page, Notes (unchecked, use at your own risk) 10/31: Locks
6 11/04: Project Presentations, Locks and Lock-Free cont., one slide per page 11/07: Implementing Locks Code, Slides
7 11/11: Locks and Lock-Free cont. 11/14: Locks and Lock-Free cont.
8 11/18: Amdahls law, one slide per page, Notes 11/21: Progress Presentations
9 11/25: Roofline Model, one slide per page, Notes 11/28: Amdahl's Law
10 12/9: Lock-Free and Distributed Memory, one slide per page 12/12: No meeting

Groups and assistants

Thursday 13:15 - 15:00
Room Assistant Email
IFW B 42 Timo Schneider


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

Note: Do not hesitate to write on the mailing list or make an appointment with your TA if you have trouble with the assignments!

Week Assignment Out Description Solution
2 1 09/26 Cache Coherence Cache Coherence
3 2 10/09 Sequential Consistency Sequential Consistency
4 3 10/17 Linearizability Linearizability
5 4 10/24 Locks Locks
6 5 11/01 Locks and Lock-Free Code, Slides
7 6 11/07 Locks and MPI Code
8 7 11/21 Amdahl's law Amdahl's law
9 8 11/29 Balance principles Balance principles solution
10 9 12/12 Consensus, Distributed Memory Consensus, Distributed Memory


Number Members Team Name Project Description Final Presentation
1 Boris Peltekov, Xavier Lapillonne BitrepS Bit Reproducible Sum Final Presentation
2 Christian Zeman, Lukas Mosimann Deadlocked Fringe Search Final Presentation
3 Benjamin Ulmer, Tobias Wicky Connected Components Final Presentation
4 Christine Zeller, Karolos Antoniadis Redpanda Concurrent Skiplists Final Presentation
5 Giuseppe Accaputo, Pascal Iselin Due Fratelli Parallel A* Final Presentation
6 Otto Bibartiu, Mauro Calderara SPIKE Final Presentation
8 Erik Henriksson Parallel AVL Trees Final Presentation

Template for project report

Your final report is due on the 17th of January 2014.


50% of your grade is determined by the project, and the other 50% of the grade is determined by a written 2 hr exam which takes place on Tuesday, the 21st of January between 09:00-11:00. You are not allowed to use any electronic devices or books, notes, etc. to 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" the CS library.