Parallel Programming

Course no.
Spring 2017
Thorsten Hoefler, Martin Vechev
Head TA
Tobias Grosser, Pavol Bielik
Timon Gehr, Daniele Spampinato, Vytautas Astrauskas, Johannes de Fine Licht,
Konstantin Taranov, Tobias Gysi, Michael Rabinovich, Andre Kahles,
Srdan Krstic, Dimitri Stanojevic, Jingyi Wang, Julian Croci and Nicolas Ochsner
Tue 10-12 and Wed 13-15 [ETF E 1]
Wed 15-17 or Fri 10-12 [Student assigment to exercise groups]


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:
  • Basic parallel programming concepts
  • Parallel programming using Java
  • Synchronization techniques
  • Case studies of building parallel programs starting from sequential algorithms

Course Content

Main text and reference book

  • Introduction to Java Programming, 2014. Daniel Liang. ISBN-13: 9780133813463
  • Java Concurrency in Practice, 2006. Brian Goetz, Tim Peierls, Joshua Bloch, Joseph Bowbeer, David Holmes, Doug Lea. ISBN-13: 9780321349606
  • The Art of Multiprocessor Programming, 2011. Maurice Herlihy, Nir Shavit. Morgan Kaufmann. Also available online in the ETH network.

Related resources, text and reference books

Introduction to Java books (freely available)

Presentation Schedule

All course materials are password protected using your ETHZ credentials.
  Feb 21 Motivation, topics, organization PDF
  Feb 22 Java recap PDF
  Feb 28-29 Introduction to Threads and Synchronization PDF
  Mar 7-8 Introduction to Threads and Synchronization (continued) PDF
  Mar 14 Parallel Architectures PDF
  Mar 15 Parallel Concepts PDF
  Mar 21 Parallel Models PDF
  Mar 28 Fork Join PDF
  April 4 Shared Memory Concurrency: Races, Atomicity PDF
  April 11 Data Races, Solving Mutual Exclusion with Atomic Registers PDF
  April 12 Solving Mutual Exclusion for many processes, Hardware Primitives for mutual exclusion PDF
  April 25 Beyond Locks: Deadlocks, Semaphores PDF
  April 26 Beyond Locks II: Producer-/Consumer, Monitors PDF


The assignment of students into exercise groups.
Students should bring their laptops to the exercise sessions as most of the exercises involve programming.
  WeekTitleDue DateAssignmentSolution
  1 Introduction - PDF
  2 Java Threads 7.3 PDF PDF PDF
  3 Java Threads II 13.3 PDF PDF PDF
  4 Parallel Models 20.3 PDF PDF
  5 Task Parallelism 27.3 PDF PDF PDF PDF
  6 Task Parallelism II 3.4 PDF PDF PDF
  7 Synchronization and Resource Sharing 10.4 PDF PDF PDF PDF
  8 More on Synchronization 24.4 PDF PDF PDF
  9 Beyond Locks 2.5 PDF PDF

Exams and Grading

There is a written, centralized exam after the end of the semester. Exercise sessions are not graded.

  • 100% of grade made up from written exam