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)

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

Old Exam