Department of Computer Science | Institute of Theoretical Computer Science
This is a web page related to Fall semester 2019. It is NOT relevant for Fall semester 2020.
Herbstsemester 2019, ETH Zürich
Dozenten: | Markus Püschel David Steurer |
Organisation: | Johannes Lengler |
Vorlesung: | Donnerstag, 10:15 - 12:00 Uhr und 13:15 - 14:00 Uhr (in ML D28 mit Video-Übertragung in ML E12) |
Übungen: | Montag, 9:15 - 12:00 Uhr, davon 11-12 Uhr betreutes Arbeiten |
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 einiger Prüfungen der vergangenen Jahre.
Datum | behandelte Themen | Unterlagen |
---|---|---|
19.09.2019 | Einführung.
|
Vorlesungsnotizen Optionale Referenzen (Skript): 1.2.1 |
26.09.2019 | Graphentheorie.
|
Vorlesungsnotizen Optionale Referenzen (Skript): 1.2,1.3,1.4.1 |
03.10.2019 |
Maximum Subarray Sum Problem.
|
Vorlesungsnotizen Optionale Referenzen (Skript): 1.5 |
10.10.2018 |
Suchen.
|
Vorlesungsnotizen Optionale Referenzen (Skript): 2.1 bis 2.3 |
17.10.2019 |
Sortieren II
|
Vorlesungsnotizen Optionale Referenzen (Skript): 2.4 bis 2.7 |
24.10.2019 |
Dynamische Programmierung I
|
Vorlesungsnotizen Optionale Referenzen (Skript): 3.1 bis 3.5 |
31.10.2019 |
Dynamische Programmierung II
|
Vorlesungsnotizen Optionale Referenzen (Skript): 3.5 bis 3.7 |
07.11.2019 |
Abstrakte Datentypen/Datenstrukturen
|
Vorlesungsnotizen Optionale Referenzen (Skript): 4.1, 4.4, 4.5 |
14.11.2019 |
Graphen
|
Vorlesungsnotizen Optionale Referenzen (Skript): 5.1.1, 5.1.2 |
19.11.2019 | Graphenalgorithmen
|
Vorlesungsnotizen Optionale Referenzen (Skript): 5.2.1., 5.4 |
21.11.2018 | Graphenalgorithmen II
|
Vorlesungsnotizen Optionale Referenzen (Skript): 5.2 |
28.11.2019 | Kürzeste Wege
|
Vorlesungsnotizen Optionale Referenzen (Skript): 5.5.2, 5.5.3 |
05.12.2019 | Minimale Spannbäume
|
Vorlesungsnotizen Optionale Referenzen Buch: Kapitel 9.3, Skript: 4.1 |
12.12.2019 | Kürzeste Wege 2
|
Vorlesungsnotizen Optionale Referenzen Skript: 5.5.4 |
19.12.2019 | Mediane
|
Vorlesungsnotizen |
Es gibt zwei Skripte, eins zu Algorithmen und eines zur Graphentheorie, die mit der Vorlesung abgestimmt sind. Das Skript zu Algorithmen können Sie bereits innerhalb des ETH-Netzes als PDF-Datei herunterladen. Beachten Sie, dass das Skript nicht deckungsgleich zur Vorlesung ist. Insbesondere ist es umfangreicher als die Vorlesung. Ausserdem gibt es vom Vorjahr ein Skript zur Graphentheorie. Zusätzliche Materialien (z.B. alte Übungen) finden Sie auch auf der Webseite des Vorjahres.
Zur weitergehenden Lektüre ist das Buch ''Algorithmen und Datenstrukturen'', T. Ottmann und P. Widmayer, 6. Auflage, Spektrum Verlag, 2017, empfehlenswert. Dieses können Sie bei der Polybuchhandlung beziehen oder innerhalb des ETH-Netzes als PDF-Datei herunterladen. Beachten Sie aber, dass die Konventionen des Buches nicht immer mit denen der Vorlesung übereinstimmen, z.B. verwendet das Buch eine andere Definition der O-Notation.
Weitere LiteraturDie Übungen finden jeweils am Montag von 9:15 bis 12:00 Uhr statt. .
Erster Übungstermin ist Montag, der 23. September. Das erste Übungsblatt wird ebenfalls am Montag, dem 23. September veröffentlicht. Alle Übungsblätter sind auf Englisch verfasst. Inhaltlich verwantwortlich für die theoretische Übungen sind Gleb Novikov und Chris Wendler. Bei inhaltlichen Fragen posten Sie bitte (auf Englisch) ins Moodle-Forum. Bei organisatorischen Fragen wenden Sie sich an Johannes Lengler.
Jede Woche wird montags nach der Übung auf dieser Seite ein Übungsblatt mit theoretischen Aufgaben veröffentlicht. In späteren Wochen werden zusätzlich Programmieraufgaben veröffentlicht.
Sie lösen die wöchentlichen Theorie-Übungsblätter in Arbeitsgruppen von zwei Personen. Einzelabgaben werden nicht akzeptiert. Sie geben die gemeinsame Lösung (für die Gruppe) in der darauffolgenden Woche zu dem Beginn Ihrer Übungsgruppe ab. Die Lösung ist eine Gemeinschaftsaufgabe. Sie müssen vor Abgabe sicherstellen, dass beide Mitglieder der Gruppe die Lösung verstanden haben und auf Aufforderung erklären können.
Die Arbeitsgruppen werden in der Übungsstunde festgelegt. Die Gruppen werden im Laufe des Semesters alle 4 Wochen neu eingeteilt. Da die erste Einteilung in der Übungsstunde am 23.09. stattfindet, ist es wichtig, dass Sie an dieser Stunde teilnehmen. Sollten Sie aus irgendeinem Grund an diesem Tag verhindert sein, dann teilen Sie dies unbedingt Ihrer Übungsgruppenassistentin mit, entweder direkt per E-Mail, oder über Ihre Kommilitonen. Wir werden keine Einzel-Abgaben akzeptieren.
In den Übungen 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 bei der Übungsassistentin abgegeben. Die Assistentin wird sowohl das Blatt als auch die Korrektur bis zur darauffolgenden Übungsstunde bewerten.
Ab dem zweiten Monat im Semester gibt es zusätzlich auch Programmieraufgaben. Diese werden alleine (nicht in Gruppen) gelöst. Die Programmieraufgaben schicken Sie online an einen Judge, der die Lösung automatisch testet und bewertet. Eine Anleitung dazu werden wir auf dem ersten Programmierblatt bereitstellen.
Die Programmieraufgaben werden von Karel Kubicek betreut. Bei Fragen zum Judge oder zu den Programmieraufgaben posten Sie bitte (auf Englisch) ins Moodle-Forum.
Sie können im Laufe des Semesters Bonuspunkte für die Teilnahme am Übungsbetrieb erwerben, die später in Ihre Endnote eingehen. Sie erhalten Bonuspunkte für
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. Der Maximalbonus ist schon mit 80% der Punkte erreicht. Dies kompensiert allfällige Absenzen, z.B. durch Krankheit oder Militärdienst.
Die Teilnahme am Bonussystem ist freiwillig. Es ist möglich, eine 6.0 in der Vorlesung zu erhalten, ohne am Bonussystem teilzunehmen.
All Ihre Abgaben müssen eigenständig formuliert und verfasst sein. Wir empfehlen, alle Aufgaben ohne Zuhilfenahme externer Quellen (Bücher, Internet, Lösungen von Mitstudentinnen) zu lösen, da der Lerneffekt der Aufgaben sonst weitgehend verloren geht. Selbst wenn Sie eine externe Quelle zu Rate ziehen, ist Plagiarismus (egal ob teilweise oder vollständig) nicht erlaubt. In diesem Fall empfehlen wir Ihnen, diese Quelle nach dem Lesen wegzulegen, und dann erst am nächsten Tag Ihre Lösung (eigenständig!) zu formulieren. Entsprechend ist das Kopieren von fremden Code (ganz oder teilweise, auch aus dem Internet) zur Lösung der Programmieraufgaben nicht erlaubt. Die Regelung zu fremden Quellen gilt sinngemäss auch hier. Sie dürfen aber natürlich beim Programmieren eine Java-Dokumentation verwenden, und insbesondere Syntax nachschlagen. Sie dürfen Ihre eigenen Lösungen (egal ob Theorie oder Code) nicht zum Abschreiben zur Verfügung stellen. Plagiarismus führt zur Aberkennung der Bonuspunkte für beide Versionen, Original und Plagiat, und zieht weitere Konsequenzen nach sich.
Sie können Ihre Bonuspunkte unter echo einsehen. Die Bonuspunkte erscheinen dort mit ca. zweiwöchiger Verzögerung. Bitte prüfen Sie regelmässig, ob die neuen Bonuspunkte korrekt sind. Wenn Sie bei einem Eintrag zu einem Theorieblatt (Lösung oder Peer Grading) der Meinung sind, dass er inkorrekt ist, dann kontaktieren Sie bitte zeitnah Ihre Übungsgruppenleiterin. Wenn Sie bei einem Programmiereintrag der Meinung sind, dass er inkorrekt ist, dann kontakieren Sie bitte Karel Kubíček.
Im Moodle-Forum können Sie einerseits Fragen an uns stellen, Sie können das Forum jedoch auch dazu nutzen, um untereinander über die Übungen zu diskutieren. In diesem Fall befolgen Sie bitte die folgende No-Spoiler-Policy: Wenn Ihre Antwort direkt oder indirekt Tipps oder Lösungshinweise zu einer Übungsaufgabe enthält, dann stellen Sie an den Anfang Ihres Posts eine klare Spoilerwarnung und verfassen Sie den kritischen Teil des Posts (den möglichen Spoiler) in weisser Textfarbe. Auf die Weise ermöglichen Sie Ihren Kommilitonen, die Aufgaben eigenständig zu lösen, ohne Ihren Post und die möglichen Hinweise aus Versehen zu lesen. Bitte ermöglichen Sie Ihren Kommilitonen eine Spoiler-freie Lernumgebung, indem Sie eine entsprechende Policy auch in privaten Kommunikationskanälen (Telegram-Gruppen etc) befolgen!
Ausformulierte Lösungen (egal ob teilweise oder vollständig) gehören weder ins Forum noch in eine Telegram-Gruppe! Das gilt sowohl für Theorie-Aufgaben als auch für Programmieraufgaben.
Die Prüfung findet in der Prüfungssession statt. Sie besteht aus zwei Teilen, einem schriftlichen Theorieteil (2 Stunden) und einem Programmierteil über den Judge (3 Stunden). Die Prüfungsnote ergibt sich aus dem gewichteten Mittel aus dem Theorieteil (60%) und dem Programmierteil (40%). Zur Bestimmung der Endnote wird anschliessend die Bonusnote addiert, und bei 6.0 abgeschnitten. Die Übungsaufgaben während des Semesters sind so ausgelegt, dass sie optimal auf die Prüfung vorbereiten.
Alle wichtigen Informationen zum technischen Ablauf der Prüfung haben Sie in den E-Mails vom 11.12.2019 und vom 08.01.2020 erhalten. Falls Sie diese nicht bekommen haben, dann wenden Sie sich bitte an Johannes Lengler.
Für die schriftliche Prüfung sind die grundlegenden Regeln ausserdem auf diesem Anweisungsblatt zusammengefasst. Für den Programmierteil wird Ihnen diese Java-Dokumentation zur Verfügung stehen (Zugriff aus dem ETH-Netz). Ausserdem wird Ihnen an Ihrem Platz eine Schritt-für-Schritt-Anleitung zum Einloggen zur Verfügung stehen. Sie können sie schon hier (endgültige Version) einsehen. Wir empfehlen Ihnen, die Anleitung vor der Klausur achon einmal anzuschauen.