Theory of Combinatorial Algorithms Institute for Theoretical Computer Science Department of Computer Science ETH Zurich

Informatik für Mathematiker und Physiker (252-0847-00) HS14

Prüfungseinsicht zur Prüfung am 6. August 2015

Die nächste und letzte Einsicht findet statt am Freitag, 25. 9. zwischen 16 und 17 Uhr, Raum CAB G15.2 (ohne Voranmeldung).

Wichtige Informationen zur Prüfung am 6. August 2015

Aus Kapazitätsgründen wurde uns keine elektronische Prüfung bewilligt. Die Prüfung wird deshalb als normale schriftliche Prüfung durchgeführt. Das Format der Prüfung wird allerdings genau dem der elektronischen Probeprüfung entsprechen, mit dem Unterschied, dass Sie die Prüfungsunterlagen ausgedruckt erhalten und Ihre Antworten schriftlich eintragen. Zur Vorbereitung stellen wir Ihnen die Prüfung aus der Wintersession 2015 zur Verfügung, die ebenfalls schriftlich durchgeführt wurde. Zusätzlich können Sie zur Vorbereitung weiterhin auf die schriftliche Version der elektronische Probeprüfung zugreifen:

Prüfungseinsicht

Prüfungseinsicht (Frühjahr): Bitte vereinbaren Sie dazu per Email einen Termin mit Frau Salow. Mögliche Zeiten sind Mo, Di, Do, Fr 10-12 Uhr sowie 13-15 Uhr im Sekretariat von Frau Salow (CAB G19.1).

Probeprüfung

Zur Vorbereitung auf die echte Prüfung finden Sie hier PDF-Versionen der (erweiterten) Probeprüfung, deren Umfang für eine Prüfungszeit von 60 Minuten ausgelegt ist: Die freiwillige elektronische Probeprüfung findet am Di, 16. Dezember statt. Die Probeprüfung wird in verschiedenen Räumen des HG abgehalten und dauert 45 Minuten (die Hauptprüfung dann 60 Minuten). Es gibt zwei Termine: 16:00-16:45 Uhr sowie 17:15-18:00 Uhr. Die elektonische Einschreibung ist geschlossen. Wenn Sie sich jetzt noch einschreiben wollen, schicken Sie bitte ein email an den Dozenten. Sie werden nur an der Probeprüfung teilnehmen können, wenn Sie sich vorher eingeschrieben haben. WICHTIG: Sie sind selbst dafür verantwortlich, sich pünktlich in dem Raum einzufinden, für den Sie sich eingeschrieben haben. Bitte konsultieren Sie die PDF-Version der Einschreibung und suchen Sie Ihren Namen. ACHTUNG: Aus organisatorischen Gründen musste der Beginn der zweiten Prüfung von 17 Uhr auf 17.15 verschoben werden. Hier sind die offiziellen Termine:
  1. Türöffnung 15.50 Uhr, Beginn 16.00 Uhr
  2. Türöffnung 17.05 Uhr, Beginn 17.15 Uhr

Prüfungsinhalt und Bewertung

Das Ergebnis der Probeprüfung gibt Ihnen wertvolles Feedback und Erfahrungen im Hinblick auf die Hauptprüfung.

Es wird zwei Arten von Aufgaben geben: Lückentexte und Ja-Nein-Fragen. Um Ihnen ein Gefühl für das Erscheinungsbild der Aufgaben zu geben, finden Sie hier drei Screenshots (Lückentext, Ja-Nein-Frage, Navigationsleiste) . Bei der Probeprüfung sind insgesamt 49 Punkte zu erreichen. Direkt nach der Abgabe Ihrer Prüfung sehen Sie Ihre erreichte Punktezahl. Diese setzt sich wie folgt in Noten um:

Grundlegende Informationen zur Vorlesung

Informationsblatt

Skript

Die Vorlesungsunterlagen für den C++ Teil bestehen aus Skript, Vorlesungsfolien und Übungsunterlagen. Das Skript ist auf Englisch verfasst und wird in einer freien elektronischen Form zur Verfügung gestellt. Die Vorlesungsfolien sind auf Deutsch verfasst und stellen zusammen mit den Übungsblättern den Prüfungsstoff dar. Das heisst, das Skript enthält viele zusätzliche Erklärungen und Übungen.

Arbeitsumgebung

In der Vorlesung arbeiten wir für die Programmieraufgaben mit einem Linux-System. Wir stellen Ihnen dafür eine Arbeitsumgebung zur Verfügung, die bereits alles enthält, was Sie brauchen.

Benutzung der Arbeitsumgebung auf einem privaten Computer

Folgen Sie dazu den Anweisungen zur Installation von Linux mit VirtualBox.

Benutzung der Arbeitsumgebung in einem öffentlichen Computerraum, oder für Linux-Experten

Folgen Sie dazu den Anweisungen zur Installation auf Linux.

Testen der Installation

Um ihre Installation zu testen, können Sie versuchen gemäss der Anleitung Kompilieren eigener Programme ihr erstes Programm zu kompilieren und auszuführen.

Übungsserien und Vorlesungsfolien

Damit Sie die Programme auch ausprobieren können, sammeln wir die .cpp Dateien in diesem Ordner. Damit Sie Ihre einen Programme vor der Abgabe selbst testen können, stellen wir im Ordner [Input Data] (zu passender Serie) einige Beispiele (Eingabe/Ausgabe) zur Verfügung.

Wir stellen Ihnen ausserdem Auflistungen der C++ Befehle der jeweiligen Woche zur Verfügung. Diese Auflistungen erheben keinen Anspruch auf Vollständigkeit. Falls Sie Fehler darin finden, oder andere Rückmeldungen oder Anmerkungen dazu haben, wenden Sie sich an Christian Zingg, zinggch@student.ethz.ch.

Datum Themen Folien / Handout C++ Übersicht Übungsaufgaben Lösung Programme Material

Vorlesung 1 (16.09.2014) Informatik: Definition und Geschichte, Algorithmen, Turing-Maschine, Höhere Programmiersprachen, Werkzeuge der Programmierung, das erste C++ Programm und seine syntaktischen und semantischen Bestandteile Handout zu den Abschnitten 1.1 bis 2.1 im Skript [PDF] [Aufzeichnung]
Organisatorische Hinweise [PDF]

Ein Artikel aus der Anfangszeit der höheren Programmiersprachen
Befehle 1 Serie 1 [PDF] [power8.cpp],
[power8_exact.cpp]
Animation und Handout zum ersten Programm

Vorlesung 2 (23.09.2014) Auswertung arithmetischer Ausdrücke, Assoziativität und Präzedenz, arithmetische Operatoren, Wertebereich der Typen int, unsigned int Handout zum Abschnitt 2.2 im Skript [PDF] [Aufzeichnung] Befehle 2 Serie 2 [PDF] [Input Data] [fahrenheit.cpp],
[limits.cpp]

Vorlesung 3 (30.09.2014) Boolesche Funktionen; der Typ bool; logische und relationale Operatoren; Kurzschlussauswertung; Assertions und Konstanten; Auswahlanweisungen, Iterationsanweisungen, Terminierung, Blöcke Handout zu den Abschnitten 2.3 und des ersten Teils von 2.4 im Skript [PDF] [Aufzeichnung] Befehle 3 Serie 3 [PDF] [Input Data] [assertion.cpp],
[assertion2.cpp],
[divmod.cpp],
[prime.cpp], [sum_n.cpp]
Addierer-Animation

Vorlesung 4 (07.10.2014) Sichtbarkeit, lokale Variablen, While-, Do- und Sprunganweisung, die Typen float und double, Gemischte Ausdrücke und Konversion, Löcher im Wertebereich Handout zum zweiten Teil von Abschnitt 2.4 und zum ersten Teils von 2.5 im Skript [PDF] [Aufzeichnung] Befehle 4 Serie 4 [PDF] [Input Data] [collatz.cpp],
[euler.cpp],
[diff.cpp],

Vorlesung 5 (14.10.2014) Fliesskommazahlensysteme; IEEE Standard; Grenzen der Fliesskommaarithmetik; Fliesskomma-Richtlinien; Harmonische Zahlen; Funktionsdefinitionen- und Aufrufe, Vor- und Nachbedingungen; Der Typ void Handout zum zweiten Teil von Abschnitt 2.5 und zum ersten Teils von 2.6 im Skript [PDF] [Aufzeichnung] Befehle 5 Serie 5 [PDF] [Input Data] [harmonic.cpp],
[callpow.cpp],
[rectangles.cpp]

Vorlesung 6 (21.10.2014) Stepwise Refinement, Gültigkeitsbereich, Bibliotheken, Standardfunktionen, Referenztypen: Definition und Initialisierung Handout zum zweiten Teil von 2.6 und zum ersten Teil von 2.7 im Skript [PDF] [Aufzeichnung] Befehle 6 Serie 6 [PDF] [Input Data] [pow.cpp],
[callpow2.cpp],
[prime2.cpp]

Vorlesung 7 (28.10.2014) Referenztypen: Definition und Initialisierung, Call By Value , Call by Reference, Temporäre Objekte, Const-Referenzen, Feldtypen, Sieb des Eratosthenes, Speicherlayout, Iteration, Vektoren, Zeichen, Texte Handout zum zweiten Teil von 2.7 und zum ersten Teil von 2.8 im Skript [PDF] [Aufzeichnung] Befehle 7 Serie 7 [PDF] [eratosthenes.cpp],
[eratosthenes2.cpp],

Vorlesung 8 (04.11.2014) Caesar-Code, Strings, Lindenmayer-Systeme, Mehrdimensionale Felder, Vektoren von Vektoren, Kürzeste Wege, Ausblick: Zeiger Handout zum zweiten Teil von 2.8 im Skript [PDF] [Aufzeichnung] Befehle 8 Serie 8 [PDF] [Input Data] [caesar_encrypt.cpp],
[caesar_decrypt.cpp],
[lindenmayer.cpp],
[dragon.cpp],
[snowflake.cpp],
[bush.cpp],
[shortest_path.cpp],
[Eingabedaten],

Vorlesung 9 (11.11.2014) Felder als Funktionsargumente, Iteratoren auf Vektoren, Container Handout zum Kapitel 2.9 im Skript [PDF] [Aufzeichnung] Befehle 9 Serie 9 [PDF] [Input Data] [array_iteration_template.cpp] [ds_examination_template.cpp]

Vorlesung 10 (18.11.2014) Rekursive Funktionen, Korrektheit, Terminierung, Aufrufstapel, Bau eines Taschenrechners, BNF, Parsen Handout zum Kapitel 2.10 im Skript [PDF] [Aufzeichnung] Befehle 10 Serie 10 [PDF] [Input Data] [binary_search_template.cpp] [partitions_template.cpp] [fibonacci.cpp],
[calculator_r.cpp],
[calculator_l.cpp],
[simple_calculator_r.cpp],
[simple_calculator_l.cpp],

Vorlesung 11 (25.11.2014) Rationale Zahlen, Struct-Definition, Operator-Überladung, Datenkapselung, Klassen-Typen Handout zum Abschnitt 3.1 im Skript [PDF] [Aufzeichnung] Befehle 11 Serie 11 [PDF] [rational_test.cpp] [matrix_operations_template.cpp] [rational.cpp],
[userational2.cpp],

Vorlesung 12 (02.12.2014) Memberfunktionen, Konstruktoren, verkettete Liste, Stapel, dynamischer Speicher, Kopierkonstruktor, Zuweisungsoperator, Destruktor, Konzept Dynamischer Datentyp Handout zum Abschnitt 3.3 im Skript [PDF] [Aufzeichnung] Befehle 12 Serie 12 [PDF] [rpn_template.cpp] [tribool_class_template.cpp] [vector.cpp] [vector.h] [vector_test.cpp] [stack.h],
[stack.cpp],
[stack_example.cpp],
[stack_test.cpp],

Vorlesung 13 (09.12.2014) Ausdrucksbäume, Vererbung, Code-Wiederverwendung, virtuelle Funktionen, Polymorphie, Konzepte des objektorientierten Programmierens Handout zum nicht existierenden Abschnitt im Skript [PDF] [Aufzeichnung] Serie 13 [PDF] [expression.cpp],
[exp_calculator_l.cpp],
[expression_OOP.cpp],
[expression_test_OOP.cpp]

Vorlesung 14 (16.12.2014) Lindenmayer-Film, Preisverleihung PIMPF, Notenberechnung, Vorlesungsevaluation, Highlights Handout (Zusammenfassung der Vorlesung) [PDF][Aufzeichnung] [grader.cpp]


Videoaufzeichnung

Die Vorlesung wird in diesem Semester auf Video aufgezeichnet. Sie finden die Aufzeichnungen auf dem Multimedia Portal. Sie können die Aufzeichnungen auch als RSS Feed oder in iTunes abonnieren.

Termine

Vorlesung: Dienstag 13:15-15:00, ML D 28 und ML E 12 (Videoübertragung).
Bernd Gärtner CAB G 31.1, Tel: 044 632 70 26, gaertner@inf.ethz.ch.
Übung: Dienstag 15:15-17:00
Chefassistent: Christian Zingg, zinggch@student.ethz.ch.

Die Einteilung in die Übungsgruppen wird in der ersten Vorlesung vorgenommen. Wenn Sie in dieser Stunde nicht anwesend sein können, wenden Sie sich per Email an Christian Zingg (zinggch@student.ethz.ch) zwecks nachträglicher Einteilung.

Gruppe Raum AssistentIn Email
A CHN D 44 Antonis Thomas (E) athomas@inf.ethz.ch
B CHN E 42 Milos Novacek (E) milos.novacek@inf.ethz.ch
C CHN G 22 Dimitar Dimitrov (E) dimitar.dimitrov@inf.ethz.ch
D CAB G 59 Linda di Geronimo (E) lindad@inf.ethz.ch
E LFW E 13 Alfonso Murolo (E) amurolo@inf.ethz.ch
F ML H 34.3 Pascal Debus pdebus@student.ethz.ch
G ML H 41.1 Jannick Griner jagriner@gmail.com
H ML J 34.1 Kaan Yücer kaan.yucer@disneyresearch.com
I ML J 37.1 Daniele Spampinato (I) daniele.spampinato@inf.ethz.ch
J CHN D 48 Sezer Güler guelerse@student.ethz.ch
K CAB G 56 Timon Hertli timon.hertli@inf.ethz.ch
L CAB G 57 Endri Dibra endri.dibra@inf.ethz.ch
M HG F 26.5 Christoph Müller (M) muellch@student.ethz.ch
N HG D 1.2 Florian Andritsch floriana@ethz.ch
O HG D 3.3 Lucas Brutschy lucas.brutschy@inf.ethz.ch
P HG D 5.1 Roman Cattaneo romanc@student.ethz.ch
Q HG D 5.3 Stephan Artmann artmanns@student.ethz.ch
R HG F 26.3 Lukas Vogel luvogel@student.ethz.ch
S IFW A 34 Jan Kleffmann klejan@phys.ethz.ch
T IFW C 31 Patrick Zöchbauer patrickz@student.ethz.ch

Die Gruppen A-E werden auf Englisch gehalten. Die Gruppe I wird auf Italienisch gehalten. Die Gruppe M ist die Master-Class (siehe unten).

Inhalt der Vorlesung

Der Hauptteil der Vorlesung ist eine algorithmisch orientierte Einführung ins Programmieren anhand der Sprache C++. Dieser Teil gliedert sich in die drei Bereiche "Grundlagen", "Funktionen" und "Klassen". Besonderes Augenmerk liegt auf dem Rechnen mit arithmetischen Typen.

Hinweise zur Übung

Auf jeder Übungsserie gibt es mehrere Aufgaben, die schriftlich zu bearbeiten und zum angegebenen Termin abzugeben sind. Programmieraufgaben senden Sie bis zu diesem Termin per E-Mail an den Übungsleiter ihrer Übungsgruppe. Die auf den Übungsserien angegebenen Punkte dienen lediglich dazu, Ihnen auf einen Blick zu sagen, wie gut Sie eine Aufgabe gelöst haben. Diese Punkte zählen nicht für Ihre Note in der Prüfung.

Materialien der Übungsgruppen

Jede Woche finden Übungsgruppen statt, in denen die Themen aus den Vorlesungen geübt werden (siehe oben). Wir stellen den Übungsleitern jeweils einige Materialien (Präsentationen, Programme, etc.) zur Verfügung, mit denen sie ihren Unterricht gestalten können. Wir stellen Ihnen diese Materialien auf einer speziellen Website zur Verfügung, damit Sie diese nach den Übungsstunden erneut ansehen können, wenn Sie dies wollen. Zu beachten ist aber, dass diese Materialien der Übungsgruppen nicht prüfungsrelevant sind. Ausserdem kann es sein, dass Ihre Übungsleiterin/Ihr Übungsleiter, diese Materialien nicht (oder nur teilweise) in ihre/seine Übungsstunden integriert. Falls Ihre Übungsleiterin/Ihr Übungsleiter, eigene Materialien verwendet, fragen Sie am besten dort direkt, ob sie/er Ihnen ihre/seine Materialien zur Verfügung stellt.

Hier finden Sie die Materialien: Materialien

Master-Class

Ab diesem Semester wird erstmals eine Master-Class angeboten, welche sich an diejenigen Studenten richtet, die schon Programmiererfahrung haben. In der Master-Class wird der Fokus auf Classes, objektorientiertem Programmieren in C++, und je nach Zeit auch auf anderen Themen liegen.
Wer sich für die Master-Class bewerben möchte, sollte sich auf jeden Fall mit Programmieren in C++ oder C schon gut auskennen. Es werden in der Master-Class insbesondere Pointer nicht explizit besprochen.

Prüfung

Die Hauptprüfung findet im Sommer 2015 statt.

Die Referenz für den Prüfungsstoff ist alles, was in der Vorlesung besprochen wurde (laut Handout), die Übungsaufgaben und der Inhalt der Probeprüfung. Insbesondere bedeutet das, dass zusätzliche Informationen aus dem Skript nicht an der Prüfung verlangt werden.

Probeprüfung

Am Ende des Semesters findet eine freiwillige Probeprüfung statt. Geprüft wird der Stoff aus dem ganzen Semester. Das Resultat dieser Prüfung dient lediglich der eigenen Einschätzung Ihres Wissensstandes und hat weder eine Auswirkung auf die Note in der Hauptprüfung, noch auf die Note in der Repetitionsprüfung.
Anmeldung: Wenn Sie nicht in die aktuelle Vorlesung eingeschrieben sind, aber im Januar/Februar 2015 oder August 2015 die Prüfung ablegen, können Sie die freiwillige Probeprüfung auch schreiben. Melden Sie sich dazu vorgängig bitte per Email bei Christian Zingg (zinggch@student.ethz.ch).

Repetitionsprüfung

In der Repetitionsprüfung wird der Stoff der zuletzt gelesenen Vorlesung geprüft. Für die Repetitionsprüfung im Januar/Februar 2015 ist also der Stoff von diesem Semester (HS14) massgebend.

Alte Prüfungen

Als Vorbereitung auf die Prüfung stellen wir Ihnen hier eine Liste alter Prüfungen und Musterlösungen zu dieser Vorlesung zur Verfügung. Angaben in den Lösungen ohne Gewähr. Wir empfehlen Ihnen, die Klausuren zunächst ohne Ansicht der Lösung zu bearbeiten und erst danach eine Selbstkontrolle mit Hilfe der Lösungen vorzunehmen.
  1. Klausur Frühjahr 2014 (English) und die Lösung dazu.
  2. Probeklausur A Dezember 2013 (English) und die Lösung dazu.
    Probeklausur B Dezember 2013 (English) und die Lösung dazu.
  3. Klausur Herbst 2013 (English) und die Lösung dazu.
  4. Klausur Frühjahr 2013 und die Lösung dazu.
  5. Klausur Herbst 2012 und die Lösung dazu.
  6. Klausur Frühjahr 2012 und die Lösung dazu.
  7. Klausur Herbst 2011 und die Lösung dazu.
  8. Klausur Frühjahr 2011 und die Lösung dazu.
  9. Klausur Herbst 2010 und die Lösung dazu.
  10. Klausur Frühjahr 2010 und die Lösung dazu.
  11. Klausur Herbst 2009 und die Lösung dazu.
  12. Klausur Frühjahr 2009 und die Lösung dazu.
  13. Klausur Herbst 2008 und die Lösung dazu.
  14. Klausur Frühjahr 2008 und die Lösung dazu.
  15. Klausur Herbst 2007 und die Lösung dazu.
  16. Klausur Herbst 2006 und die Lösung dazu.
  17. Klausur Frühjahr 2006 und die Lösung dazu.
  18. Klausur Herbst 2005 und die Lösung dazu.

Literatur und Links



Last modified: , by Bernd Gärtner. Valid HTML 4.0! Valid CSS!