Department of Computer Science | Institute of Theoretical Computer Science
Herbstsemester 2018, ETH Zürich
Dozenten: | Prof. Markus Püschel Prof. David Steurer |
Vorlesung: | Donnerstag, 10:00 - 12:00 Uhr und 13:00 - 14:00 Uhr (jeweils in ML D28 und ML E12) |
Weitere Informationen zur Vorlesung und verbindliche Informationen zur Prüfung finden Sie im Vorlesungsverzeichnis.
Wichtiger Hinweis für Studierende des Studiengangs "Computational Biology and Bioinformatics Master": Falls Ihr Studiensekretariat Ihnen den Kurs "Data Structures and Algorithms" zur Auflage gemacht hat, können Sie an diesem Kurs nicht teilnehmen. Stattdessen müssen Sie den Kurs zum Selbststudium, Nr. 252-0002-AAL, belegen. Weitere Informationen finden Sie im Vorlesungsverzeichnis.
Die Inhaltsangaben zur Vorlesung, Angaben zu Literatur und Links werden auf dieser Seite laufend aktualisiert.
Hier finden Sie ausserdem eine Liste der Prüfungen der vergangenen Jahre.
Datum | behandelte Themen | Unterlagen |
---|---|---|
20.09.2018 | Einführung. Graphentheorie.
|
Folien: Einführung Graphentheorie 1 Graphen-Skript Optionale Referenzen (Skript): 1.4.1, 5.1.1, 5.1.2 |
27.09.2018 | Graphentheorie.
|
Folien: Graphentheorie 2 Graphen-Skript Optionale Referenzen (Skript): 1.4.1, 5.1.1, 5.1.2, 5.3, 5.4 |
04.10.2018 | Graphenalgorithmen.
|
Folien: Graphenalgorithmen 1 Graphen-Skript Optionale Referenzen (Skript): 1.2.2, 1.3, 5.1.3, 5.2 |
11.10.2018 | Graphenalgorithmen.
|
Folien: Graphenalgorithmen 2 Graphen-Skript Optionale Referenzen (Skript): 5.2-5.5 |
18.10.2018 |
Maximum Subarray Sum Problem.
|
Handgeschriebene Notizen: Vorlesung 5. (Update am 7.11.2018, 10:15 Uhr) Optionale Referenzen (Skript): Maximum Subarray Sum: 1.5 Einheitskostenmodell: 1.3 (Die Terminologie ist ein bisschen anders) |
25.10.2018 |
Suchen.
|
Handgeschriebene Notizen: Suchen und Sortieren I. (Update am 7.11.2018, 10:15 Uhr) Optionale Referenzen (Skript): von 2.1. bis 2.3 |
01.11.2018 |
Sortieren
|
Handgeschriebene Notizen: Sortieren II. Optionale Referenzen (Skript): von 2.4. bis 2.7 |
08.11.2018 |
Abstrakte Datentypen/Datenstrukturen
|
Handgeschriebene Notizen: Datenstrukturen I. Optionale Referenzen (Skript): 4.1, 4.4, 4.5 |
15.11.2018 |
Dynamische Programmierung
|
Handgeschriebene Notizen: Dynamische Programmierung I. Optionale Referenzen (Skript): 3.1-3.5 |
22.11.2018 |
Dynamische Programmierung.
|
Folien: Dynamische Programmierung II. Optionale Referenzen (Skript): 3.5-3.7 |
29.11.2018 |
Dynamische Programmierung.
|
Folien: Dynamische Programmierung III. Optionale Referenzen (Skript): 5.5.3 |
06.12.2018 | Minimale Spannbäume. Amortisierte Analyse.
|
Folien: Minimale Spannbäume. Optionale Referenzen (Buch): Kapitel 9.3 |
13.12.2018 | Kürzeste Wege.
|
Handgeschriebene Notizen: Kürzeste Wege II. Optionale Referenzen (Skript): 5.5 |
20.12.2018 | Matrixmultiplikation und Auswahlproblem
|
Handgeschriebene Notizen: Vorlesung 14. Optionale Referenzen (Skript): 1.3, 3.5 |
Das Buch zur Vorlesung ist ''Algorithmen und Datenstrukturen'', T. Ottmann und P. Widmayer, 6. Auflage, Spektrum Verlag, 2017. Dieses können Sie bei der Polybuchhandlung beziehen oder innerhalb des ETH-Netzes als PDF-Datei herunterladen.
Aus vorherigen Vorlesungen gibt es ein Skript, das einen Grossteil des Stoffes behandelt. Dieses können Sie innerhalb des ETH-Netzes als PDF-Datei herunterladen.
NEU: Zu dieser Vorlesung gibt es neu auch ein Skript zur Graphentheorie. Dieses können Sie innerhalb des ETH-Netzes als PDF-Datei herunterladen.
Weitere LiteraturDie Übungen finden jeweils am Montag von 9:00 bis 12:00 Uhr statt.
Verantwortlich für die Organisation der Übungen ist Barbara Geissmann, CAB H34.2.
Erster Übungstermin ist Montag, der 24. September.
Probeprüfung Vorlage |
|
Klausur (deutsch) Exam (englisch) Vorlage P1 Vorlage P2 |
Beispiellösung (englisch) |
Sie können Ihre Fragen im Forum auf Moodle stellen. Wir werden Ihre Beiträge lesen und die Fragen direkt im Forum beantworten, sodass auch andere Studierende von den Antworten profitieren können.
Jede Woche wird montags nach der Übung auf dieser Seite ein Übungsblatt veröffentlicht. In einigen Wochen werden zusätzlich Programmieraufgaben veröffentlicht.
Die wöchentlichen Übungsblätter sollen jeweils in Gruppen vo zwei Personen gelöst werden. Bitte geben Sie eine gemeinsame Lösung (für die Gruppe) in der darauffolgenden Woche vor dem Beginn Ihrer Übungsgruppe ab.
In der ersten Übungsstunde werden Sie einer Gruppe von zwei Personen zugeteilt. Die Gruppen werden im Laufe des Semesters mehrmals (alle 3 Wochen) neu eingeteilt. Die Einteilung erfolgt jeweils durch den Assistenten.
In der Übungsstunde werden die Aufgaben besprochen. Anschliessend wird ein Teil der eingereichten Lösung einer Gruppe von einer anderen Gruppe bewertet und mit Kommentaren (Peer Feedback) versehen am Ende der Übungsstunde beim Assistenten abgegeben. Der Assistent wird sowohl das Blatt als auch die Korrektur bis zur darauffolgenden Übungsstunde bewerten. Wir werden ausserdem Beispiellösungen für alle Übungsblätter vorbereiten und auf dieser Webseite veröffentlichen.
Ab dem zweiten Monat im Semester gibt es zusätzlich auch Programmieraufgaben. Diese werden alleine (nicht in Gruppen) gelöst. Details dazu folgen. Die Programmieraufgaben werden online im sogenannten Judge abgegeben. Bei jeder Programmieraufgabe gibt es einen mit "Lösung einschicken / Submit solution" bezeichneten Link, mit dem der entsprechende Bereich des Judges erreicht werden kann.
Lösen Sie die Programmieraufgaben alleine (nicht in Gruppen). Die Programmieraufgaben werden online im sogenannten Judge abgegeben. Bei jeder Programmieraufgabe gibt es einen mit "Lösung einschicken / Submit solution" bezeichneten Link, mit dem der entsprechende Bereich des Judges erreicht werden kann. Bitte beachten Sie:
Jederzeit können Sie Ihre Fragen im Forum auf Moodle stellen. class Main {
public static void main(String[] args) { ... }
}
Sowohl für das Lösen eines Übungsblattes als auch fürs Peer Feedback während der Übungsstunde können Bonuspunkte erarbeitet werden, die punkterelevanten Aufgaben sind jeweils speziell markiert. Voraussetzung für das Erlangen von Bonuspunkten sind die Teilnahme an der Übungsgruppe sowie das gemeinsame Lösen und Abgeben des Übungsblattes und die Korrektur eines abgegebenen Übungsblattes in der Übungsstunde. In Verlauf des Semesters können Sie weitere Bonuspunkte für das Lösen der Programmieraufgaben erlangen.
Am Ende des Semesters wird aus den Bonuspunkten eine Bonusnote für die Übungen berechnet. Diese Bonusnote liegt zwischen 0 und 0.25 und wird zu Ihrer Note in der Sessionsprüfung addiert. Um den Maximalbonus zu erhalten sind mindestens 80% der Punkte erforderlich.
Die Prüfung findet in der Prüfungssession statt. Sie dauert insgesamt 4 Stunden. Die Prüfung umfasst sowohl Theorieaufgaben (50%), die schriftlich auf Papier gelöst werden, als auch Programmieraufgaben (50%), die auf dem Judge eingereicht werden.
Die Endnote wird folgendermassen berechnet: Note aus der Sessionsprüfung + Bonusnote.