Malte Schwerhoff: Katalogdaten im Herbstsemester 2021

NameHerr Dr. Malte Schwerhoff
Adresse
Dep. Informatik
ETH Zürich, CAB H 31.2
Universitätstrasse 6
8092 Zürich
SWITZERLAND
Telefon+41 44 632 21 08
E-Mailmalte.schwerhoff@inf.ethz.ch
DepartementInformatik
BeziehungDozent

NummerTitelECTSUmfangDozierende
252-0232-AALSoftware Engineering
Belegung ist NUR erlaubt für MSc Studierende, die diese Lerneinheit als Auflagenfach verfügt haben.

Alle anderen Studierenden (u.a. auch Mobilitätsstudierende, Doktorierende) können diese Lerneinheit NICHT belegen.
6 KP13RF. Friedrich Wicker, M. Schwerhoff
KurzbeschreibungThis course introduces both theoretical and applied aspects of software engineering. It covers:

- Software Architecture
- Informal and formal Modeling
- Design Patterns
- Software Engineering Principles
- Code Refactoring
- Program Testing
LernzielThe course has two main objectives:

- Obtain an end-to-end (both, theoretical and practical) understanding of the core techniques used for building quality software.
- Be able to apply these techniques in practice.
InhaltWhile the lecture will provide the theoretical foundations for the various aspects of software engineering, the students will apply those techniques in project work that will span over the whole semester - involving all aspects of software engineering, from understanding requirements over design and implementation to deployment and change requests.
LiteraturWill be announced in the lecture
252-0836-00LInformatik II Information 4 KP2V + 2UM. Schwerhoff, F. Friedrich Wicker
KurzbeschreibungEs werden grundlegende Entwurfsmuster für Algorithmen (z.B. Induktion, divide-and-conquer, backtracking, dynamische Programmierung), klassische algorithmische Probleme (Suchen, Sortieren) und Datenstrukturen (Listen, Hashverfahren, Suchbäume) behandelt. Ausserdem enthält der Kurs eine Einführung in das parallele Programmieren.
LernzielVerständnis des Entwurfs und der Analyse grundlegender Algorithmen und Datenstrukturen. Wissen um die Chancen, Probleme und Grenzen der parallelen und nebenläufigen Programmierung.
InhaltEs werden grundlegende Algorithmen und Datenstrukturen vorgestellt und analysiert. Dazu gehören auf der einen Seite Entwurfsmuster für Algorithmen, wie Induktion, divide-and-conquer, backtracking und dynamische Optimierung, ebenso wie klassische algorithmische Probleme, wie Suchen und Sortieren. Auf der anderen Seite werden Datenstrukturen für verschiedene Zwecke behandelt, darunter verkettete Listen, Hashtabellen, balancierte Suchbäume und Heaps. Das Zusammenspiel von Algorithmen und Datenstrukturen wird anhand von Graphenproblemen illustriert.

Im Teil über parallele Programmierung werden Konzepte der parallelen Architekturen besprochen (Multicore, Vektorisierung, Pipelining). Konzepte und Grundlagen der Parallelisierung werden behandelt (Gesetze von Amdahl und Gustavson, Task- und Datenparallelität, Scheduling). Probleme der Nebenläufigkeit werden diskutiert (Wettlaufsituationen, Speicherordnung). Prozesssynchronisation und -kommunikation in einem System mit geteiltem Speicher werden erklärt (Gegenseitiger Ausschluss, Semaphoren, Mutexe, Monitore). Die erlernten Konzepte werden mit Beispielen zur nebenläufigen und parallelen Programmierung und mit Parallelen Algorithmen untermauert.

Übungen werden in der Online-IDE und Übungsmanagementsystem Code-Expert durchgeführt

Alle benötigten mathematischen Tools ausserhalb des Schulwissens werden im Kurs behandelt, einschliesslich einer Einführung zur Graphentheorie.
Skripttba
LiteraturTh. Ottmann, P. Widmayer: Algorithmen und Datenstrukturen, Spektrum-Verlag, 5. Auflage, Heidelberg, Berlin, Oxford, 2011

Thomas H. Cormen, Charles E. Leiserson, Ronald Rivest, Clifford Stein: Algorithmen - Eine Einführung, Oldenbourg, 2010

B. Stroustrup, The C++ Programming Language (4th Edition) Addison-Wesley, 2013.
Voraussetzungen / BesonderesVoraussetzungen: Informatik I
252-0864-00LEngineering Tool: Parallel and Concurrent Programming in C++ Information
Die Ingenieur-Tool-Kurse sind ausschliesslich für MAVT-Bachelor-Studierende.
0.4 KP1KM. Schwerhoff
KurzbeschreibungThis course provides an introduction to parallel and concurrent programming, using C++. Basic challenges and concepts will be introduced and illustrated, and applied by students in small projects.
LernzielStudents develop a basic understanding of the advantages and pitfalls of concurrency, and gain an overview of the field and its concepts. They learn how to solve small problems using concurrent programs.
Voraussetzungen / BesonderesThe course can only be passed if the projects are executed and submitted. If no or insufficient solutions are submitted, the course is considered failed ("drop out").
252-0865-00LVorkurs Informatik Information 1 KP1PM. Schwerhoff
KurzbeschreibungDie Veranstaltung bietet eine Einführung in die Grundlagen der Programmierung mit C++. Es wird keine Programmiererfahrung vorausgesetzt.
LernzielVerständnisaufbau für grundlegende Konzepte der imperativen Programmierung sowie für das systematische Herangehen an Programmierprobleme. Studierende können einfache C++-Programme lesen und schreiben.
InhaltDiese Veranstaltung führt Sie in die Grundlagen des Programmierens mit C++ ein. Programmieren bedeutet, einem Computer eine Abfolge von Befehlen zu erteilen, deren Abarbeitung ein bestimmtes Problem löst.

Der Kurs setzt sich wie folgt zusammen:
- Allgemeine Einführung in die Informatik: Entwicklung, Ziele, elementare Konzepte
- Interaktives Tutorial zum Selbststudium als Einführung in C++: behandelt werden Variablen, Datentypen, Verzweigungen und Schleifen
- Einführung in das systematische Lösen von Programmierproblemen mittels schrittweiser Verfeinerung
- Zwei kleine Programmierprojekte: praktische Anwendung der gelernten Grundlagen
SkriptDas Lernmaterial ist vollständig online verfüg- und nutzbar; die Programmierprojekte werden in einer Online-Entwicklungsumgebung umgesetzt.