Markus Püschel: Catalogue data in Autumn Semester 2020

Award: The Golden Owl
Name Prof. Dr. Markus Püschel
FieldComputer Science
Dep. Informatik
ETH Zürich, CAB H 69.3
Universitätstrasse 6
8092 Zürich
Telephone+41 44 632 73 03
DepartmentComputer Science
RelationshipFull Professor

252-0026-00LAlgorithms and Data Structures Information Restricted registration - show details 7 credits3V + 2U + 1AM. Püschel, D. Steurer
AbstractThe course provides the foundation of the design and analysis of algorithms. The material is introduced using classical algorithmic problems including graph problems. The necessary basic introduction to graph theory is provided as part of this course.
ObjectiveAn understanding of the design and analysis of fundamental algorithms and data structures. A basic understanding of graph theory and several basic graph algorithms.
ContentThis course is an introduction into the design and analysis of algorithms. On the one hand this includes classical algorithm design patterns including induction, divide-and-conquer and dynamic programming. We study these using classical example such as searching and sorting. On the other hand the course covers the interaction between algorithms and data structures including linked lists, search trees, heaps, and union-find structures. A particular focus are graph algorithms for shortest path and minimal spanning tree problems. We provide the necessary introduction into graph theory as part of this course.
Lecture notesA complete script in German is under development. A complete draft is already available on the course website.
LiteratureAbgesehen vom Skript und Vorlesungsunterlagen empfehlen wir die folgenden Bücher als zusätzliches Nachschlagewerk.

Th. Ottmann, P. Widmayer: Algorithmen und Datenstrukturen, Spektrum-Verlag, 5. Auflage, Heidelberg, Berlin, Oxford, 2011

Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein: An Introduction to Algorithms, 3rd edition, MIT Press, 2009
252-2600-05LSoftware Engineering Seminar Restricted registration - show details
Number of participants limited to 22.

The deadline for deregistering expires at the end of the second week of the semester. Students who are still registered after that date, but do not attend the seminar, will officially fail the seminar.
2 credits2SP. Müller, M. Püschel, M. Schwerhoff
AbstractThe course is an introduction to research in software engineering, based on reading and presenting high quality research papers in the field. The instructor may choose a variety of topics or one topic that is explored through several papers.
ObjectiveThe main goals of this seminar are 1) learning how to read and understand a recent research paper in computer science; and 2) learning how to present a technical topic in computer science to an audience of peers.
ContentThe technical content of this course falls into the general area of software engineering but will vary from semester to semester.
263-2800-00LDesign of Parallel and High-Performance Computing Information 9 credits3V + 2U + 3AT. Hoefler, M. Püschel
AbstractAdvanced topics in parallel and high-performance computing.
ObjectiveUnderstand concurrency paradigms and models from a higher perspective and acquire skills for designing, structuring and developing possibly large parallel high-performance software systems. Become able to distinguish parallelism in problem space and in machine space. Become familiar with important technical concepts and with concurrency folklore.
ContentWe will cover all aspects of high-performance computing ranging from architecture through programming up to algorithms. We will start with a discussion of caches and cache coherence in practical computer systems. We will dive into parallel programming concepts such as memory models, locks, and lock-free. We will cover performance modeling and parallel design principles as well as basic parallel algorithms.
Prerequisites / NoticeThis class 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.