21.2.2018: Group Assignment is Online 27.3.2018: [Week 6] Due to Easter the students from Friday exercises can attend an exercise on Wednesday (28.3). The groups are merged as follows:
- Fri 10-12 HG G 26.5 -> Wed 15-17 CHN E 46
- Fri 10-12 ETZ G 91 -> Wed 15-17 ML J 34.1
- Fri 10-12 LFW E 13 -> Wed 15-17 CHN E 42
- Fri 10-12 NO D 11 -> Wed 15-17 ML J 34.3
- Fri 10-12 NO E 11 -> Wed 15-17 ETZ J 91
- Wed 15-17 ETZ H 91 -> Wed 15-17 ETZ F 91
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.
- Basic parallel programming concepts
- Parallel programming using Java
- Synchronization techniques
- Case studies of building parallel programs starting from sequential algorithms
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.
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.
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