The course covers all aspects of high-performance computing ranging from architecture through programming up to algorithms. We start with a discussion of caches and cache coherence in practical computer systems. We then dive into parallel programming concepts such as memory models, locks, and lock-free. We cover performance modeling and parallel design principles as well as basic parallel algorithms.

This course is intended for the Computer Science Masters curriculum. Students must have basic knowledge in programming in C as well as computer science theory. Students should be familiar with the material covered in the ETH computer science first-year courses “Parallele Programmierung (parallel programming)” and “Algorithmen und Datenstrukturen (algorithm and data structures)” or equivalent courses.