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.
1 Feb 21 Motivation, topics, organization PDF
1 Feb 22 Java recap PDF
2-3 Feb 28-29 Introduction to Threads and Synchronization PDF
4-5 Mar 7-8 Introduction to Threads and Synchronization (continued) PDF
6 Mar 14 Parallel Architectures PDF
Mar 15 Parallel Concepts PDF
Mar 21 Parallel Models 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

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