Malte Schwerhoff: Katalogdaten im Herbstsemester 2022

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
KurzbeschreibungDer Kurs behandelt die Grundlagen des Entwurfs und der Analyse von Algorithmen und Datenstrukturen, einschliesslich Graphentheorie und -problemen. Er bietet eine Einführung in generisches, sowie paralleles, Programmieren.
LernzielVerständnis des Entwurfs, der Analyse und der Implementation fundamentaler Algorithmen und Datenstrukturen. Überblick über die Konzepte des generischen und parallelen Programmierens. Erfahrung bei der praktischen Umsetzung all dessen in C++.
Inhalt* Asymptotische Laufzeit (algorithmische Komplexität)
* Fundamentale algorithmische Probleme, z.B. Suchen, Sortieren, kürzeste Wege, Spannbäume
* Klassische Datenstrukturen, z.B. Suchbäume, balancierte Bäume, Heaps, Hashtabellen
* Graphentheorie und -probleme
* Problemlösungsstrategien als Entwurfsmuster für Algorithmen, z.B. Induktion, Divide-and-Conquer, Backtracking, dynamische
Programmierung
* Generisches Programmieren: C++-Templates, Funktionen höherer Ordnung, Lambdas, Closures
* Paralleles Programmieren: (Un)abhängigkeit von Berechnungen, Parallelität und Nebenläufigkeit, geteilter Speicher, Wettlaufsituationen, wechselseitiger Ausschluss, Kommunikation und Synchronisation

Im Übungsbetrieb wird das Verständnis durch theoretische und/oder Programmieraufgaben (C++, Code Expert) vertieft.
SkriptDas gesamte Material (Folien, Vorlesungsaufzeichnungen, Beispiele, Übungen, etc.) wird auf der Kurswebseite bzw. auf Code Expert veröffentlicht.
Literatur* T. Ottmann, P. Widmayer: Algorithmen und Datenstrukturen,
Spektrum-Verlag, 5. Auflage, Heidelberg, Berlin, Oxford, 2011
* T. H. Cormen, C. E. Leiserson, R. Rivest, C. Stein: Algorithmen - Eine Einführung, Oldenbourg, 2010
* B. Stroustrup, The C++ Programming Language, 4th Edition, Addison-Wesley, 2013.
* B. Stroustrup, A Tour of C++, 3rd Edition, Addison-Wesley, 2022
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 successfully implemented and submitted. If no or insufficient solutions are submitted, the course is considered failed.
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.