Ralf Sasse: Katalogdaten im Frühjahrssemester 2021

NameHerr Dr. Ralf Sasse
Adresse
Lehre D-INFK
ETH Zürich, CAB H 33.2
Universitätstrasse 6
8092 Zürich
SWITZERLAND
Telefon+41 44 632 53 89
E-Mailralf.sasse@inf.ethz.ch
DepartementInformatik
BeziehungDozent

NummerTitelECTSUmfangDozierende
252-0832-00LInformatik Information 4 KP2V + 2UR. Sasse, M. Schwerhoff
KurzbeschreibungDie Vorlesung bietet eine Einführung in das Programmieren mit einem Fokus auf systematischem algorithmischem Problemlösen. Lehrsprache ist C++. Es wird keine Programmiererfahrung vorausgesetzt.
LernzielPrimäres Lernziel der Vorlesung ist die Befähigung zum Programmieren mit C++. Studenten beherrschen nach erfolgreichem Abschluss der Vorlesung die Mechanismen zum Erstellen eines Programms, sie kennen die fundamentalen Kontrollstrukturen, Datenstrukturen und verstehen, wie man ein algorithmisches Problem in ein Programm abbildet. Sie haben eine Vorstellung davon, was "hinter den Kulissen" passiert, wenn ein Programm übersetzt und ausgeführt wird.
Sekundäre Lernziele der Vorlesung sind das Computer-basierte, algorithmische Denken, Verständnis der Möglichkeiten und der Grenzen der Programmierung und die Vermittlung der Denkart eines Computerwissenschaftlers.
InhaltWir behandeln fundamentale Datentypen, Ausdrücke und Anweisungen, (Grenzen der) Computerarithmetik, Kontrollanweisungen, Funktionen, Felder, zusammengesetzte Strukturen und Zeiger. Im Teil zur Objektorientierung werden Klassen, Vererbung und Polymorphie behandelt, es werden exemplarisch einfache dynamische Datentypen eingeführt.
Die Konzepte der Vorlesung werden jeweils durch Algorithmen und Anwendungen motiviert und illustriert.
SkriptEin Skript in englischer Sprache wird semesterbegleitend herausgegeben. Das Skript und die Folien werden auf der Vorlesungshomepage zum Herunterladen bereitgestellt.
LiteraturBjarne Stroustrup: Einführung in die Programmierung mit C++, Pearson Studium, 2010
Stephen Prata: C++ Primer Plus, Sixth Edition, Addison Wesley, 2012
Andrew Koenig and Barbara E. Moo: Accelerated C++, Addison-Wesley, 2000.
252-0846-AALComputer Science II Information
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.
4 KP9RF. Friedrich Wicker, R. Sasse
KurzbeschreibungThis course provides the foundations of programming and working with data. Computer Science II particularly stresses code efficiency and provides the basis for understanding, design, and analysis of algorithms and data structures. In terms of working with data, foundations required for understanding experimental data and notation and basic concepts for machine learning are covered.
LernzielBased on the knowledge covered by the lecture Computer Science I, the primary educational objective of this course is the constructive knowledge of data structures and algorithms. After successfully attending the course, students have a good command of the mechanisms to construct a program in Python and to work with multidimensional data using Python libraries. Students particularly understand how an algorithmic problem can be solved with a sufficiently efficient computer program. Secondary educational objectives are formal thinking, the power of abstraction, and appropriate modeling capabilities.
InhaltIntroduction of Python: from Java to Python, advanced concepts and built-in data structures in Python; parsing data, operating on data using Numpy and visualization using Matplotlib; linear regression, classification and (k-means) clustering, mathematical tools for the analysis of algorithms (asymptotic function growth, recurrence equations, recurrence trees), classical algorithmic problems (searching, selection and sorting), design paradigms for the development of algorithms (divide-and-conquer and dynamic programming), data structures for different purposes (linked lists, trees, heaps, hash-tables). The relationship and tight coupling between algorithms and data structures is illustrated with graph algorithms (traversals, topological sort, closure, shortest paths).

In general, the concepts provided in the course are motivated and illustrated with practically relevant algorithms and applications.
Exercises are carried out in Code-Expert, an online IDE and exercise management system. Programming language used in this course is Python.
SkriptThe slides will be available for download on the course home page.
LiteraturT. Cormen, C. Leiserson, R. Rivest, C. Stein, Introduction to Algorithms , 3rd ed., MIT Press, 2009
Voraussetzungen / BesonderesPreliminaries: course 252-0845 Computer Science or equivalent knowledge in programming.
252-0846-00LInformatik II Information 4 KP2V + 2UF. Friedrich Wicker, R. Sasse
KurzbeschreibungDieser Kurs behandelt Grundlagen für das Programmieren und Arbeiten mit Daten. Informatik II legt die Grundlage für das Verständnis, den Entwurf und die Analyse von Algorithmen und Datenstrukturen. Darüber hinaus behandelt der Kurs die Grundlagen für das Verständnis experimenteller Daten und führt Notation und Konzepte für das maschinelle Lernen ein.
LernzielBasierend auf Kenntnissen aus der Vorlesung Informatik I ist das primäre Ziel dieses Kurses das konstruktive Wissen über Datenstrukturen und Algorithmen. Nach erfolgreichem Besuch des Kurses beherrschen die Teilnehmer die Mechanismen zum Erstellen eines Programms in Python und zum Arbeiten mit mehrdimensionalen Daten mithilfe von Python-Bibliotheken. Die Studierenden verstehen insbesondere, wie ein algorithmisches Problem mit einem ausreichend effizienten Computerprogramm gelöst werden kann. Sekundäre Bildungsziele sind formales Denken, die Macht der Abstraktion und Modellierungsfähigkeiten.
InhaltEinführung von Python: von Java zu Python, erweiterte Konzepte und integrierte Datenstrukturen in Python; Analysieren von Daten, Bearbeiten von Daten mit Numpy und Visualisieren mit Matplotlib; lineare Regression, Klassifikation und (k-Means) Clustering, mathematische Werkzeuge zur Analyse von Algorithmen (asymptotisches Funktionswachstum, Rekurrenzgleichungen, Rekurrenzbäume), klassische algorithmische Probleme (Suchen, Auswahl und Sortieren), Entwurfsparadigmen für die Entwicklung von Algorithmen (Divide-and-Conquer und dynamische Programmierung), Datenstrukturen für verschiedene Zwecke (verknüpfte Listen, Bäume, Heaps, Hash-Tabellen). Die Beziehung und enge Kopplung zwischen Algorithmen und Datenstrukturen wird mit Graph-Algorithmen (Traversieren, Topologische Sortierung, Transitive Hülle, Kürzeste Wege) veranschaulicht. Die im Kurs bereitgestellten Konzepte werden mit praktisch relevanten Algorithmen und Anwendungen motiviert und veranschaulicht.

Die in diesem Kurs verwendete Programmiersprache ist Python.

Die Übungen werden in Code-Expert, einem Online-IDE- und Übungsmanagementsystem, durchgeführt.
SkriptDie ausführlichen Folien werden auf der Vorlesungshomepage zum Herunterladen bereitgestellt.
LiteraturThomas Ottmann, Peter Widmayer, Algorithmen und Datenstrukturen, Springer 2012

T. Cormen, C. Leiserson, R. Rivest, C. Stein, Algorithmen - Eine Einführung, Oldenbourg, 2010

Aditya Y. Bhargava, Algorithmen Kapieren, mitp 2019
Voraussetzungen / BesonderesVoraussetzungen: Kurs 252-0845 Informatik I oder äquivalente Programmierkenntnisse. Alle erforderlichen mathematischen Werkzeuge über Schulniveau werden behandelt, einschließlich einer grundlegenden Einführung in die Graphentheorie.
252-0848-00LInformatik I Information 4 KP2V + 2UM. Schwerhoff, R. Sasse
KurzbeschreibungDie Vorlesung bietet eine Einführung in das Programmieren mit einem Fokus auf systematischem algorithmischem Problemlösen. Lehrsprache ist C++. Es wird keine Programmiererfahrung vorausgesetzt.
LernzielPrimäres Lernziel der Vorlesung ist die Befähigung zum Programmieren mit C++. Studenten beherrschen nach erfolgreichem Abschluss der Vorlesung die Mechanismen zum Erstellen eines Programms, sie kennen die fundamentalen Kontrollstrukturen, Datenstrukturen und verstehen, wie man ein algorithmisches Problem in ein Programm abbildet. Sie haben eine Vorstellung davon, was "hinter den Kulissen" passiert, wenn ein Programm übersetzt und ausgeführt wird.
Sekundäre Lernziele der Vorlesung sind das Computer-basierte, algorithmische Denken, Verständnis der Möglichkeiten und der Grenzen der Programmierung und die Vermittlung der Denkart eines Computerwissenschaftlers.
InhaltWir behandeln fundamentale Datentypen, Ausdrücke und Anweisungen, (Grenzen der) Computerarithmetik, Kontrollanweisungen, Funktionen, Felder, zusammengesetzte Strukturen und Zeiger. Im Teil zur Objektorientierung werden Klassen, Vererbung und Polymorphie behandelt, es werden exemplarisch einfache dynamische Datentypen eingeführt.
Die Konzepte der Vorlesung werden jeweils durch Algorithmen und Anwendungen motiviert und illustriert.
SkriptEin Skript in englischer Sprache wird semesterbegleitend herausgegeben. Das Skript und die Folien werden auf der Vorlesungshomepage zum Herunterladen bereitgestellt.
LiteraturBjarne Stroustrup: Einführung in die Programmierung mit C++, Pearson Studium, 2010
Stephen Prata: C++ Primer Plus, Sixth Edition, Addison Wesley, 2012
Andrew Koenig and Barbara E. Moo: Accelerated C++, Addison-Wesley, 2000.
252-0861-00LIngenieur-Tool: Einführung in die C++ Programmierung Information Belegung eingeschränkt - Details anzeigen
Die Ingenieur-Tool-Kurse sind ausschliesslich für MAVT-Bachelor-Studierende.
0.4 KP1KR. Sasse
KurzbeschreibungDie Veranstaltung bietet eine Einführung in die Programmierung mit C++ mit Hilfe eines interaktiven Tutorials.
LernzielVerständnisaufbau für grundlegende Konzepte der imperativen Programmierung. Erste einfache Programme lesen und schreiben können.
InhaltDieser Kurs wird Sie in die Grundlagen des Programmierens einführen. Programmieren bedeutet, einem Computer eine Abfolge von Befehlen zu geben, so dass er genau das tut, was Sie wollen.
Voraussetzungen / BesonderesBelegung der Lerneinheit nur möglich, wenn das Programmierprojekt bearbeitet und abgegeben wird. Wird im Falle einer Belegung das Programmierprojekt nicht abgegeben, so wird die Lerneinheit als nicht bestanden bewertet («Abbruch»).
263-4600-00LFormal Methods for Information Security Information 5 KP2V + 1U + 1AS. Krstic, R. Sasse, C. Sprenger
KurzbeschreibungThe course focuses on formal methods for the modeling and analysis of security protocols for critical systems, ranging from authentication protocols for network security to electronic voting protocols and online banking. In addition, we will also introduce the notions of non-interference and runtime monitoring.
LernzielThe students will learn the key ideas and theoretical foundations of formal modeling and analysis of security protocols. The students will complement their theoretical knowledge by solving practical exercises, completing a small project, and using state-of-the-art tools. The students also learn the fundamentals of non-interference and runtime monitoring.
InhaltThe course treats formal methods mainly for the modeling and analysis of security protocols. Cryptographic protocols (such as SSL/TLS, SSH, Kerberos, SAML single-sign on, and IPSec) form the basis for secure communication and business processes. Numerous attacks on published protocols show that the design of cryptographic protocols is extremely error-prone. A rigorous analysis of these protocols is therefore indispensable, and manual analysis is insufficient. The lectures cover the theoretical basis for the (tool-supported) formal modeling and analysis of such protocols. Specifically, we discuss their operational semantics, the formalization of security properties, and techniques and algorithms for their verification.

The second part of this course will cover a selection of advanced topics in security protocols such as abstraction techniques for efficient verification, secure communication with humans, the link between symbolic protocol models and cryptographic models as well as RFID protocols (a staple of the Internet of Things) and electronic voting protocols, including the relevant privacy properties. Moreover, we will give an introduction to two additional topics: non-interference as a general notion of secure systems, both from a semantic and a programming language perspective (type system), and runtime verification/monitoring to detect violations of security policies expressed as trace properties.