Neuigkeiten

Material

Die Vorlesungsunterlagen bestehen aus Vorlesungsfolien und Übungsunterlagen. Die Vorlesungsfolien sind auf Deutsch verfasst und stellen zusammen mit den Übungsblättern den Prüfungsstoff dar. Zusätzlich gibt es ein Skript, welches in Englisch verfasst ist und in einer freien elektronischen Form zum Download bereit steht. Dieses Skript wurde freundlicherweise von Prof. Bernd Gärtner zur Verfügung gestellt und deckt grosse Teile des C++ Teils der Vorlesung ab.

Übungsserien und Vorlesungsfolien

Die erste Übungsserie und die Folien zur Vorlesung werden in der ersten Vorlesungswoche aufgeschaltet.

Termine

VorlesungMittwoch 08:15 - 10:00 ETF E1
ÜbungenMontag 13:15-15:00, 15:00-17:00, 17:00-19:00 Verschiedene Räume (s.u.)

Lernziel und Überblick

Primäres Lernziel der Vorlesung ist die Befähigung zum Programmieren mit C++. Studenten beherrschen nach erfolgreichem Abschluss der Vorlesung die Mechanismen zum Erstellen eines Programms, sie kennen die fundamentalen Kontrollstrukturen, Datenstrukturen und verstehen, wie man ein algorithmisches Problem in ein Programm abbildet. Sie haben eine Vorstellung davon, was "hinter den Kulissen" passiert, wenn ein Programm übersetzt und ausgeführt wird. Sekundäre Lernziele der Vorlesung sind das Computer-basierte, algorithmische Denken, Verständnis der Möglichkeiten und der Grenzen der Programmierung und die Vermittlung der Denkart eines Computerwissenschaftlers.

Wir behandeln fundamentale Datentypen, Ausdrücke und Anweisungen, (Grenzen der) Computerarithmetik, Kontrollanweisungen, Funktionen, Felder, zusammengesetze Strukturen und Zeiger. Im Teil zur Objektorientierung werden Klassen, Vererbung und Polymorhpie behandelt, es werden exemplarisch einfache dynamische Datentypen eingeführt. Die Konzepte der Vorlesung werden jeweils durch Algorithmen und Anwendungen motiviert und illustriert.

Zeitplan, Folien und Übungen

Dies ist ein Plan und als solcher unterliegt er Änderungen -- auch und insbesondere nach Semesterbeginn.

xxx
Woche Datum Thema/Folien Übungen, Lösungsskizzen Folien und Handouts
1 16.09. Einführung, Ausdrücke und Anweisungen
Berechnen mit dem Computer, Algorithmen, Turing Maschinen, Von Neumann Architektur, Programmiersprachen, Werkzeuge der Programmierung, Korrektheitsbegriffe, das erste C++ Programm
Organisatorisches
Blatt 01
C++ Übersicht 01
Organisatorisches (handout)
Folien 1 (handout)
2 23.09. Ganzzahlarithmetik und deren Grenzen
Auswertung arithmetischer Ausdrücke, arithmetische Operatoren, Assoziativität und Präzedenz, Wertebereiche der Typen int und unsigned int; Ganzzahldarstellung
Blatt 02
C++ Übersicht 02
Folien 2 (handout)
[flashcard]
[flashcard]
3 30.9. Boole'sche Funktionen, Sicheres Programmieren, Kontrollfluss I
Boole'sche Funktionen; der Typ bool; logische und relationale Operatoren; Kurzschlussauswertung; Assertions und Konstanten, Auswahlanweisungen, Iterationsanweisungen, Terminierung
Blatt 03
C++ Übersicht 03
Folien 3 (handout)
[flashcard]
[flashcard]
48.10. Kontrollfluss II, Fliesskommazahlen I
Blöcke, Sichtbarkeit, Lokale Variablen, While-Anweisung, Do-Anweisung, Sprunganweisungen; Typen float und double; Gemischte Ausdrücke und Konversionen; Löcher im Wertebereich
Blatt 04
C++ Übersicht 04
Folien 4 (handout)
[flashcard]
5 14.10. Fliesskommazahlen II, Funktionen I
Fliesskommazahlensysteme; IEEE Standard; Grenzen der Fliesskommaarithmetik; Fliesskomma-Richtlinien; Harmonische Zahlen; Funktionsdefinitionen- und Aufrufe, Auswertung von Funktionsaufrufen, Der Typ void, Vor- und Nachbedingungen
Blatt 05
C++ Übersicht 05
Folien 5 (handout)
[flashcard]
6 21.10. Funktionen II, Referenztypen
Stepwise Refinement, Gültigkeitsbereich, Bibliotheken, Standardfunktionen, Referenztypen
Blatt 06
C++ Übersicht 06
Folien 6 (handout)
[flashcard]
7 28.10. Referenztypen, Homogene Datenstrukturen: Felder und Strings I
Referenztypen: Definition und Initialisierung, Call By Value , Call by Reference, Temporäre Objekte, Const-Referenzen Feldtypen, Sieb des Eratosthenes, Speicherlayout, Iteration, Vektoren, Zeichen, Texte, Caesar-Code,
Blatt 07
C++ Übersicht 07
Folien 7 (handout)
[flashcard]
8 4.11. Felder und Strings II, Zeiger, Algorithmen, Iteratoren und Container I
Mehrdimensionale Felder, Vektoren von Vektoren, Kürzeste Wege Felder als Funktionsargumente, Zeiger,
Übung:
Blatt 08
C++ Übersicht 08
Folien 8 (handout)
[flashcard]
9 11.11. Zeiger, Algorithmen, Iteratoren und Container II
Felder als Funktionsargumente Iteratoren auf Vektoren, Container
Blatt 09
C++ Übersicht 09
Folien 9 (handout)
[flashcard]
10 18.11. Rekursion
Rekursive Funktionen, Korrektheit, Terminierung, Aufrufstapel, Bau eines Taschenrechners, BNF, Parsen
Blatt 10 C++ Übersicht 10
Folien 10 (handout)
[flashcard]
11 25.11. Structs und Klassen (I)
Rationale Zahlen, Struct-Definition, Operator-Überladung, Datenkapselung
Blatt 11
C++ Übersicht 11
Folien 11 (handout)
[flashcard]
12 2.12. Klassen (II)
Klassen-Typen, Memberfunktionen, Konstruktoren, verkettete Liste, Stapel, dynamischer Speicher, Kopierkonstruktor, Zuweisungsoperator, Destruktor, Konzept Dynamischer Datentyp
Blatt 12
C++ Übersicht 12
Lösung 12
Folien 12 (handout)
[flashcard]
13 9.12. Klassen-Typen, Kopierkonstruktor, Zuweisungsoperator, Destruktor, Konzept Dynamischer Datentyp
Vererbung und Polymorphie Vererbung, Code-Wiederverwendung, virtuelle Funktionen, Polymorphie
Blatt 13
Keine C++ Übersicht 13
Folien 13 (handout)
Code:Bitmap
Code:Images
Code:Figures
Code:Figures_Vererbung
Code:Figures_Polymorphie
14 16.12. Ausdrucksbäume, Wdh. Vererbung und Polymorphie, Konzepte des objektorientierten Programmierens Zum Üben: Prüfung August 2015 Prüfung Februar 2015 Folien 14: Zusammenfassung (handout)
Zusammenfassung auf 17 A4-Seiten
Alle Folien (handout)
code: texpression.cpp , calculator_l_texpression.cpp, xexpression.cpp, xexpression_test.cpp
Lindenmayer Grafiken

Übungen

Einschreibung für die Übungen

Die Einschreibung erfolgt online gemeinsam mit der Einschreibung für Analysis I. Sie bekommen, sobald Sie sich für die Vorlesung eingeschrieben haben, einen Link zugesendet, mit dem Sie sich entsprechend registrieren können.

Orte und Zeiten

Die Übungsgruppen sind derzeit wie folgt zugeteilt:
Zeit Assistent Ort
Mo, 13:15 - 15:00 Lucas Braun CHN F 42
Mo, 13:15 - 15:00 Temmy Bounedjar ETZ E 6
Mo, 13:15 - 15:00 Christelle Gloor ETZ F 91
Mo, 13:15 - 15:00 François Serre ETZ G 91*
Mo, 13:15 - 15:00 Marc Fischer (marcfisc) ETZ H 91
Mo, 13:15 - 15:00 Oskar Triebe ML F 34
Mo, 13:15 - 15:00 Urs Müller HG G 26.1
Mo, 15:15 - 17:00 Christian Schüller ETZ F 91
Mo, 15:15 - 17:00 Victoria Caparros ETZ G 91*
Mo, 15:15 - 17:00 Samuel Bianchi ETZ H 91
Mo, 15:15 - 17:00 Simon Fritsche ETZ K 91
Mo, 15:15 - 17:00 Alessio Bähler HG D 5.1
Mo, 15:15 - 17:00 Aristeidis Mastoras LFW E 13*
Mo, 15:15 - 17:00 Tobias Verhulst CHN D 48
Mo, 17:15 - 19:00 Marc Fischer (mfischer) ETZ F 91
*: Engl. Übungsgruppe

Kontakt

Chefassistent: Martin Bättig, martin.baettig (at) inf.ethz.ch

Rechnerräume

Bonusübungen

Zur Prüfung

Prüfungsstoff für die Endprüfung, welche in der Prüfungssession FS 2015 (ebenso wie Informatik II) stattfinden wird, schliesst Vorlesungsinhalt und Übungsinhalte ein. Zusätzliche Informationen aus dem Skript werden nicht an der Prüfung verlangt.
Die Prüfung ist schriftlich und es sind keine Hilfsmittel zugelassen (ausser Wörterbücher für gesprochene Sprachen).

Beispielprüfungen

Literatur

Der Kurs sollte selbsterklärend sein. Dort wo die Folien und Skript nicht genügen, kann Recherche im Internet helfen. Folgendes Buch gibt eine sehr ausführliche Einführung in die Programmierung mit C++. Darüber hinaus sind folgende Bücher interessant, eher aber für fortgeschrittene Programmierer.