252-0029-00L Parallel Programming

FS 2024

T. Hoefler, B. Solenthaler

Basic Information

  • Semester: Spring 2024
  • Course Number: 252-0029-00L
  • Lecturers: T. Hoefler, B. Solenthaler
  • Edoz: Open in Course Catalogue
  • Lectures: Mo 10:15-12:00 and Tue 10:15-12:00 both in HG F 5 and HG F7
  • Exercises: Wed 16:15-18:00, Fri 10:15-12:00
  • Head TAs: Philine Witzig (first part), Timo Schneider (second part)
  • TAs: Daniel Dorda,  Aurel Gruber,  Lasse Lingens,  Till Schnabel,  Nikola Kovacevic,  Lingchen Yang,  Yingyan Xu,  Agon Serifi,  Alexandru Calotoiu  Tomasz Sternal  Marcin Chrapek  Yakup Budanaz  Saleh Ashkboos  Tiancheng Chen  Jiayong Li 

News:

  • 18.02.24: Website online
  • 23.02.24: The room assignment for exercise class G-05 has changed to LFW B2.
  • 21.03.24: The exercise classes G-08 and G-10 are canceled. Please go to G-01 or check the availabilities on myStudies.
  • 16.04.24: The exercise G-08 at ETZ K 91 with Vera Schubert is canceled today.

Overview

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

  • Sophomoric Parallelism and Concurrency (from: spac)
  • The Little Book of Semaphores
  • Programming concurrency on the JVM, 2011. Venkat Subramaniam
  • Structured Parallel Programming: Patterns for Efficient Computation, 2012. Michael McCool, Arch Robison, James Reinders.
  • Patterns for Parallel Programming, 2004. Timothy G. Mattson, Beverly A. Sanders, Berna L. Massingill.
  • A minicourse on multithreaded programming. Charles E. Leiserson, Harald Prokop.
  • (Optional) Inside the Java Virtual Machine. 2000. Bill Venners.

Introduction to Java books (freely available)

  • How to Think Like a Computer Scientist, 2012. Allen B. Downey.
  • Introduction to Programming Using Java, 2011. David J. Eck.

All material is available on Moodle.

  DateTitle
  Feb 19 Introduction & Course Overview
  Feb 20 Java Recap and JVM Overview
  Feb 26 Introduction to Threads and Synchronization (Part I)
  Feb 27 Introduction to Threads and Synchronization (Part II)
  Mar 4 Introduction to Threads and Synchronization (Part III)
  Mar 5 Parallel Architectures: Parallelism on the Hardware Level
  Mar 11 Basic Concepts in Parallelism
  Mar 12 Divide & Conquer and Executor Service
  Mar 18 DAG and ForkJoin Framework
  Mar 19 Parallel Algorithms (Part I)
  Mar 25 Parallel Algorithms (Part II)
  Mar 26 Shared Memory Concurrency, Locks and Data Races
  Apr 08 Virtual Threads
  Apr 09 Exam Preparation (First Half)

Exercises

All material (exercise slides and exercises) is available on Moodle.

All exercises start in the first week of the semester.

Group Assignment - First half

Wednesday 16:15 - 18:00

  • Group G-01 (Till Schnabel, German, Focus Group): ETZ E 8
  • Group G-02 (Aurel Gruber, German): ETZ F 91
  • Group G-03 (Lasse Lingens, German): CHN D 48
  • Group G-04 (Daniel Dorda, English): CHN E 42
  • Group G-06 (Benjamin Gruzman, German): ETZ H 91
  • Group G-07 (Gamal Hassan, German): LFW C 11
  • Group G-08 (Finn Heckman, German, Focus Group): ETZ K 91
  • Group G-09 (Sarah Kuhn, German, Focus Group): ML J 34.3
  • Group G-10 (Raphael Larisch, German): LFW C 1

Friday 10:15 - 12:00

  • Group G-05 (Sarah Kuhn, German, Focus Group): LFW B 2
  • Group G-11 (Aurel Gruber, German): HG G 26.5
  • Group G-12 (Lasse Lingens, German): ML J 34.1
  • Group G-13 (Daniel Dorda, English): NO D 11
  • Group G-14 (Benjamin Gruzman, German): CHN D 42
  • Group G-15 (Julianne Orel, English, Focus Group): LFW C 1
  • Group G-16 (Raphael Larisch, German): ML H 34.3
  • Group G-17 (Till Schnabel, German, Focus Group): CLA E 4
  • Group G-18 (Gamal Hassan, German): IFW C 31
  • Group G-19 (Finn Heckman, German, Focus Group): NO E 11

Group Assignment - Second half

Wednesday 16:15 - 18:00

  • Group G-02 (Tomasz Sternal, English): ETZ F 91
  • Group G-03 (Yakup Budanaz, German): CHN D 48
  • Group G-04 (Tiancheng Chen, English): CHN E 42
  • Group G-07 (Wetzel Jonas, German): LFW C 1
  • Group G-08 (Vera Schubert, German, Focus Group): ETZ K 91
  • Group G-09 (Li Erxuan, German, Focus Group): ML J 34.3
  • Group G-10 (Raphael Larisch, German): LFW C 1

Friday 10:15 - 12:00

  • Group G-05 (Li Erxuan, German, Focus Group): LFW B 2
  • Group G-11 (Tomasz Sternal, German): HG G 26.5
  • Group G-12 (Yakup Budanaz, German): IFW C 31
  • Group G-13 (Tiancheng Chen, English): NO D 11
  • Group G-15 (Jiayong Li, English, Focus Group): LFW C 1
  • Group G-17 (Marcin Chrapek, German, Focus Group): CLA E 4
  • Group G-18 (Wetzel Jonas, German): ML J 34.1
  • Group G-19 (Vera Schubert, German, Focus Group): NO E 11

Exercises

WeekTitleDue Date
  1 Introduction 26.02.2024
  2 Introduction to Multi-threading 04.03.2024
  3 Multi-threading 11.03.2024
  4 Parallel Models 18.03.2024
  5 Divide and Conquer 25.03.2024
  6 Task Parallelism 08.04.2024
  7 Synchronization and Resource Sharing 15.04.2024

Exams and Grading

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

  • 100% of grade determined by final Exam