Size: 2090
Comment:
|
Size: 2940
Comment:
|
Deletions are marked like this. | Additions are marked like this. |
Line 1: | Line 1: |
= Die neue Vorlesung Programmierung in C++ = | = Programmierung in C++ = |
Line 3: | Line 3: |
== Inhalt == | '''[die neue Vorlesung im Sommersemester, u.a. Folgeveranstaltung von Info 1]''' == Inhalt der Vorlesung == |
Line 8: | Line 10: |
0. Hintergründe | '''0. Hintergründe''' |
Line 17: | Line 19: |
1. Drumherum | '''1. Drumherum''' |
Line 34: | Line 36: |
2. Sprache | '''2. Sprache''' |
Line 49: | Line 51: |
3. Objektorientiert | '''3. Objektorientiert''' |
Line 56: | Line 58: |
4. Performanz | '''4. Performanz''' |
Line 67: | Line 69: |
5. Software Engineering | '''5. Basic Software Engineering''' |
Line 76: | Line 78: |
6. Advanced stuff | '''6. Advanced stuff (optional)''' |
Line 85: | Line 87: |
== Ablauf der Vorlesung == Ablauf der Vorlesung, was die requirements an die Studenten angeht: A. Klar spezifizierte einzelne Teile implementieren, andere Teile sind schon da. B. Nur das .h file ist vorgegeben, die Studenten müssen ein lauffähiges Programm dazu schreiben C. Wie B aber das .h muss selbst aus der Aufgabenstellung entwickelt werden. Diese Übungen müssen in zwei Stufen erfolgen. Betreuungsintensiv! D. Wie C aber mit unit tests und performance tests. Ziel am Ende des Kurses: selbstständiges Erstellen von state of the art C++ mit allem was dazu gehört (Struktur, Stylesheet, Dokumentation, Unit tests, Performance tests, Makefile) im Umfang von ca. 1000 Zeilen. |
Programmierung in C++
[die neue Vorlesung im Sommersemester, u.a. Folgeveranstaltung von Info 1]
Inhalt der Vorlesung
Achtung: Die Reihenfolge hier ist *nicht* die Reihenfolge wie das in der Vorlesung drankommen soll, siehe dazu (II). Es ist einfach der zu vermittelden Stoff, nach Themen geordnet.
0. Hintergründe
0.1 Was bedeuten die einzelnen Sprachkonstrukte in Maschinensprache. (Ich finde es absurd nicht damit anzufangen. So funktioneren die Dinger nun einmal.)
0.2 C++ ist eine potentiell sehr maschinennahe Sprache, trotzdem high-level Konzepte
0.3 Unterschiede C, C++, Java
1. Drumherum
1.1 Editor, syntax highlighting
1.2 Coding Styleguide, strictly adhere to one
1.3 Makefile, grundlegende Idee, Syntax und Regeln
1.4 .h. und .cpp files, warum, was wohin, Konventionen, Linker + seine Fehlermeldungen verstehen
1.5 Dokumentation, Namensbennenung, Doxygen
1.6 Debugging, gdb + cp
1.7 Code reviews
2. Sprache
2.1 grundlegendeKonstrukte: Deklaration, for, while, if then else, Ausdrücke und Operatoren
2.2 Ein / Ausgabe, Konsole und Dateien
2.3 Command-line arguments processing
2.3 #include, #define, etc.
2.4 pointers (*) und references (&), passing by reference vs. passing by value
2.5 const (wichtig!)
3. Objektorientiert
3.1 Klassen, Objekte, private, public, members functions and variables, static, explicit, Konstruktoren, Destruktoren
3.2 Vererbung, Vererbung Konstruktoren und Destruktoren, abstract + virtual verstehen (tricky!)
4. Performanz
4.1 Timing
4.2 Asymptotische performance, O-Notation, vor allem: linear vs. quadratisch
4.3 Tatsächliche performance, Verständnis grundlegender Maßzahlen für Speicher- und Dateizugriff
4.3 profiling mit gprof + co
5. Basic Software Engineering
5.1 Allgemeines: möglichst kleine Schritte, zwischendurch immer Kompilieren und Ausprobieren, dabei ruhig Sachen machen die man dann wieder löscht.
5.2 Exceptions.
5.3 Unit tests.
6. Advanced stuff (optional)
6.1 Templates
6.2 Iteratoren
6.3 Libraries, static und dynamic
6.4 Packaging
Ablauf der Vorlesung
Ablauf der Vorlesung, was die requirements an die Studenten angeht:
A. Klar spezifizierte einzelne Teile implementieren, andere Teile sind schon da.
B. Nur das .h file ist vorgegeben, die Studenten müssen ein lauffähiges Programm dazu schreiben
C. Wie B aber das .h muss selbst aus der Aufgabenstellung entwickelt werden. Diese Übungen müssen in zwei Stufen erfolgen. Betreuungsintensiv!
D. Wie C aber mit unit tests und performance tests.
Ziel am Ende des Kurses: selbstständiges Erstellen von state of the art C++ mit allem was dazu gehört (Struktur, Stylesheet, Dokumentation, Unit tests, Performance tests, Makefile) im Umfang von ca. 1000 Zeilen.