Informatik für Mathematiker und Physiker (252-0847-00) HS14 | ||||||
Die nächste und letzte Einsicht findet statt am Freitag, 25. 9. zwischen 16 und 17 Uhr, Raum CAB G15.2 (ohne Voranmeldung).
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).
Informationsblatt
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.
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.
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 ProgrammiersprachenBefehle 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]
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.
- 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 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).
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.
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.
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
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.
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.
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.
- Klausur Frühjahr 2014 (English) und die Lösung dazu.
- Probeklausur A Dezember 2013 (English) und die Lösung dazu.
Probeklausur B Dezember 2013 (English) und die Lösung dazu.- Klausur Herbst 2013 (English) und die Lösung dazu.
- Klausur Frühjahr 2013 und die Lösung dazu.
- Klausur Herbst 2012 und die Lösung dazu.
- Klausur Frühjahr 2012 und die Lösung dazu.
- Klausur Herbst 2011 und die Lösung dazu.
- Klausur Frühjahr 2011 und die Lösung dazu.
- Klausur Herbst 2010 und die Lösung dazu.
- Klausur Frühjahr 2010 und die Lösung dazu.
- Klausur Herbst 2009 und die Lösung dazu.
- Klausur Frühjahr 2009 und die Lösung dazu.
- Klausur Herbst 2008 und die Lösung dazu.
- Klausur Frühjahr 2008 und die Lösung dazu.
- Klausur Herbst 2007 und die Lösung dazu.
- Klausur Herbst 2006 und die Lösung dazu.
- Klausur Frühjahr 2006 und die Lösung dazu.
- Klausur Herbst 2005 und die Lösung dazu.
Last modified: , by Bernd Gärtner. |