Department of Computer Science | Institute of Theoretical Computer Science
Frühjahrssemester 2020, ETH Zürich
Dozenten: |
Prof. Angelika Steger Prof. Emo Welzl |
Vorlesung: | Dienstag, 13:15 - 15:00 Uhr und Donnerstag, 10:15 - 12:00 Uhr, jeweils in HG F7, bei Bedarf mit Videoübertragung in HG F5 |
Übungen: | Donnerstag, 15:15 - 17:00 Uhr. |
Weitere Informationen zur Vorlesung und verbindliche Informationen zur Prüfung finden Sie im Vorlesungsverzeichnis.
Die Prüfung besteht aus einer Computer-Prüfung (150min) und einer schriftlichen Prüfung (90min).
Sie dürfen Ihre Antworten auf Deutsch oder auf Englisch schreiben.
Prüfungsrelevant ist das Material, das in Vorlesung und Übungen besprochen wurde, und das von Skript, Übungen oder Minitests abgedeckt wird.
Für die schriftliche Klausur finden Sie hier einige Beispiele. Please note that, since 2019, the multiple choice part of the exam have been moved from the written exam to the computer exam.
Probeklausur FS 17 | Lösung Probeklausur FS 17 |
Klausur FS 17 | Lösung Klausur FS 17 |
Klausur HS 17 | Lösung Klausur HS 17 |
Klausur FS 19 | Lösung Klausur FS 19 |
Here you can find Moodle quiz parts of old exams. There you will also be able to view the correct solutions after each finished attempt.
Es sind keine Hilfsmittel erlaubt, mit folgenden Ausnahmen:
An dieser Stelle werden jeden Donnerstag (in Ausnahmefällen Dienstags) Programmieraufgaben bzw. theoretische Aufgaben online gestellt. Sie haben jeweils eine Woche Zeit zur Bearbeitung der Aufgaben. Programmieraufgaben können Sie direkt an einen online-judge schicken. Theoretische Aufgaben werden in den Übungen abgegeben. Wir werden ausserdem Beispiellösungen für alle Übungsblätter vorbereiten und auf dieser Webseite veröffentlichen.
Erster Übungstermin ist Donnerstag, der 20. Februar.
The online judging system for programming exercises we will use this term is Code Expert. You can enroll to the system here. You have two simple exercises to test the environment ('Sum it' and 'Toppling Dominoes'). These exercises do not give any bonus points.
You can find the online documentation on Code Expert here. The following things are different to what is stated in the documentation:
Important:
Woche | Datum | Übung | Submission link |
---|---|---|---|
1 | Di, 18.02.20 |
Programmierübung 0 |
Sum It - Submission
Toppling Dominoes - Submission |
3 | Do, 05.03.20 |
Programmierübung 1 |
Important Stops - Submission
Password - Submission |
Aufwärmübung | Lösung Aufwärmübung |
Theoretische Übung 1 | Lösung 1 |
Theoretische Übung 2 | Lösung 2 |
Theoretische Übung 3 | |
Theoretische Übung 4 |
Fragensammlung (Stand 25. Februar 2020) zu Kapitel 1 zur Vorbereitung der Minitests
Minitests finden jede zweite Woche am Donnerstag zu Beginn der Übungstunde statt, beginnend in der zweiten Woche. Diese bestehen aus ungefähr 10-15 Wahr/Falsch Fragen oder Lückentextartigen Fragen. Die Dauer ist ungefähr 10 Minuten. Der Test kann Fragen zum Gesamten Material des Kurses bis und einschliesslich des Dienstages der selben Woche beinhalten, wobei der Fokus auf dem Material der letzten zwei Wochen liegen wird.
Minitest 1 | Lösung Minitest 1 |
Sie können sich ab der ersten Vorlesungswoche selbstständig für eine Übungsstunde in myStudies anmelden. Ein späterer Wechsel ist in der Regel nicht möglich.
Melden Sie sich bei Problemen mit der Anmeldung bitte umgehend an Anders Martinsson.
In der ersten Übungsstunde werden Sie einer Arbeitsgruppe von zwei bis drei Personen zugeteilt. Die Arbeitsgruppen werden im Laufe des Semesters mehrmals neu eingeteilt. Sie bearbeiten die theoretischen Übungen (nicht die Programmieraufgaben!) innerhalb einer Woche gemeinsam in Ihrer Arbeitsgruppe und geben in der folgenden Übungsstunde eine gemeinsame Lösung ab. Sie dürfen sich bei der Lösung der Aufgaben Inspiration aus anderen Quellen besorgen (Literatur, Kommilitonen, Forum). Allerdings empfehlen wir stark, dass Sie vorher ernsthaft versuchen, die Aufgaben selbständig zu lösen. In jedem Fall erwarten wir, dass Sie nur eigenständig formulierte Lösungen einreichen, selbst wenn Sie Ideen aus anderen Quellen bezogen haben. Ausserdem müssen alle Mitglieder der Arbeitsgruppe die Lösungen verstanden haben. Wir werden bei Verdacht während der Übungsstunde überprüfen, ob Sie die abgegebene Lösung verstanden haben.
Die abgegebenen Lösungen werden prinzipiell von der Assistentin bis zur darauf folgenden Woche korrigiert. Ausserdem wählen wir jede zweite Woche eine Aufgabe aus, für die die eingereichte Lösung einer Arbeitsgruppe von einer anderen Arbeitsgruppe während der Übungsstunde korrigiert wird. Die Assistentin wird die Korrektur bis zur darauf folgenden Übungsstunde ebenfalls bewerten. In den anderen Wochen wird es zu Beginn der Übungen Mini-Tests geben. Ansonsten werden während der Übungsstunde die aktuellen Übungsaufgaben bzw. die Mini-Tests besprochen und allfällige Fragen zur Vorlesung geklärt.
Die Programmierabgaben werden einzeln (nicht in Arbeitsgruppen!) gelöst und innerhalb einer Woche an einen Judge geschickt, der den Code testet. Beachten Sie, dass Sie nur selbständig geschriebenen Code einschicken dürfen! Sie haben beliebig viele Versuche, einen korrekten Code abzuliefern. Auch bei den Programmieraufgabe kann von Ihnen während der Übungsstunde verlangt werden, dass Sie die Ideen Ihres Codes erklären.
Sowohl für das Lösen eines Übungsblattes als auch für die Korrektur während der Übungsstunde können Bonuspunkte erarbeitet werden. Sie bekommen Bonuspunkte für
Am Ende des Semesters wird aus allen vier Typen von Bonuspunkten (Lösen, Korrektur, Minitests, Programmieren) eine "Bonusnote" ermittelt.
Die Vorlesung wird teils an der Tafel und teils mit Slides abgehalten. Die Slides werden wir jeweils kurz nach der Vorlesung online stellen. Zur Vorlesung gibt es ein Skript. Die jeweils aktuelle Version finden Sie hier:
Skript (Stand 17. Februar 2020)
Voraussetzungen: Grundbegriffe, Bäume, Pfade (Kapitel 1.1-1.3) | Vorlesung 1 (18.02.): - k-zusammenhängend, k-kanten-zusammenhängend - Satz von Menger - Artikulationsknoten, Brücken - Tiefensuche, Breitensuche - Effizientes Suchen von Artikulationsknoten |
Slides: erste Stunde, zweite Stunde |
Vorlesung 2 (20.02.): - Hamiltonkreise, Eulertouren - Effizientes entscheiden, ob ein Graph eulersch ist. - Gray codes |
Slides: lang kurz |
Vorlesung 3 (25.02.): - Satz von Dirac - Suchen von Hamiltonkreise, Dynamische Programmierung |
Slides (Mainly on blackboard) |
Vorlesung 4 (27.02.): - P und NP - 2-Approximation des Problems des Handlungsreisenden (TSP) - Matchings - inklusions-maximal und kardinalitäts-maximal |
Slides: lang kurz |
Vorlesung 5 (03.03.): - Greedy-Algorithmus und Satz 1.44 - 3/2-Approximation für metrisches TSP - Satz von Hall |
Slides |
Vorlesung 6 (05.03.): - Satz 1.48 (Frobenius) - Satz 1.49 - Färbungen, chromatische Zahl - Greedy-Algorithmus zur Graphfärbung - Satz von Brooks |
Slides |
Vorlesung 7 (10.03.): - Einfürung in die Wahrscheinlichkeitstheorie - Definition Wahrscheinlichkeitsraum / Laplace-Raum - Prinzip der Inklusion/Exklusion |
Slides |
Vorlesung 8 (14.03): - Prinzip der Inklusion/Exklusion - Bedingte Wahrscheinlickeit - Satz der totalen Wahrscheinlickeit - Geburtstagsparadox / Balls into Bins |
Slides: Slides |