Diese Seite ist gedacht für Autoren des Tutorials und soll für die Koordination der Arbeit dienen.

Die Diskussion zum Inhalt des Tutorials findet derzeit auf dieser Seite statt: http://forum.proggen.org/viewtopic.php?f=39&t=480

Todo

Vorläufiger Index

Nach der Diskussion auf der erwähnten Seite sieht der vorläufige Index wie folgt aus.

Block 1: Der Anfang

Dieser Block sollte einen einfachen Einstieg für Programmieranfänger darstellen und ihnen ermöglichen simple Programme zu schreiben.

Theorieblock 1:

  • 1a) Vorbereitung
  • Wieso programmieren Lernen?
  • Was ist ein Computer? (jetziges c:what)
  • Was bedeutet Programmieren? (jetziges c:what)
  • Wie programmieren Lernen? (ähnlich wie c:how)
    • Wie gehe ich mit Fehlern um?
  • Wieso C++? (teile von cpp:introduction, ähnlich wie c:why)
  • Fragen und Antworten zu C++ (teile von cpp:introduction)
  • 1b) Einstieg
  • Wie dieses Tutorial zu lesen ist?
  • Was ist ein Programm?
  • Grundlegendes zum Speicher (jetziges c:hardware:ram)

Praxis 1

  • Installation und Einrichtung der Software (c:software, c:compiler:start)
  • Hello World Programm
    • Das Hello World programm sollte weniger als Tatsächliches lernen der Sprache gelten, sondern eher dem Testen der Software und Einführung eines „Programmgerüstes“ dienen.
  • Ausdrücke
    • Operatoren
    • Klammern
    • Literale (light Version)
  • Anweisungen
    • Wo können sie stehen?
  • Ausgabe (light Version)
  • Eingabe (very very light Version)
  • Datentypen (light)
  • Variablen, Literale (heavy version)
  • Schleifen und Verzweigungen
  • Arrays
  • C- Strings, std::string (light version)

Block 2: Vertiefung

Theorieblock 2a

Optional (Exkurs)

  • Hardware
  • Stack (Funktionsaufrufe)
  • Funktionsweise der CPU

Theorieblock 2b

  • Formatieren von Programmcode
  • Kommentieren von Programmcode
  • „good practice“, Konventionen
  • const correctness (light)
  • Wiederverwendbarkeit (light Version) (Redundanzen vermeiden)

Praxis 2a

  • Referenzen
  • Zeiger
  • Funktionen
  • Funktionsüberladung
  • Namespaces
  • Datentypen (heavy version)
  • Strukturen (structs)
  • Gültigkeitsbereiche (Sichtbarkeiten von Bezeichnern)
  • Präprozessor
  • Headerdateien und Aufspaltung des Codes auf mehrere Dateien

Theorieblock 2c

  • Objektorientiertes Programmieren
  • Lebenszeitabhängiges Programmieren (Konstruktor, Destruktor)
  • Idee der Kapselung
  • Idee der Vererbung
  • Aufbau von Bibliotheken

Praxis 2b

  • Klassen und Objekte
    • Konstruktor
    • Destruktor
  • Operatorüberladung
  • Ein/Ausgabe (medium Version)
  • Strings (std::string)
  • Vererbung
    • Polymorphie
    • Mehrfachvererbung
  • Exceptions

Theorieblock 2d

Optional (Exkurs)

  • Umsetzung von Praxis 2b) auf der Hardware
  • Name Mangling

Block 3: Fortgeschrittene Themen

Theorieblock 3

  • Generische Programmierung
  • Wiederverwendbarkeit (heavy version)

Praxis 3

  • Funktionstemplates
  • Klassentemplates
  • Ein/Ausgabe (heavy Version)
    • Die iostream Klassenhierarchie
  • Template- Templates
  • Algorithmen
  • Datenstrukturen
  • STL
    • Vorstellung
    • Anwendung
    • Container
    • Algorithmen
      • Eigene Algorithmen im Stil der STL
  • Runtime Type Information (RTTI)

Der Index ab hier ist eine reine Ideensammlung, und noch völlig Zukunftsmusik.

Block 4: Angewandtes C++

Theorieblock 4

  • Portabilität
    • Arbeiten mit dem Standard
  • Ganz viel Theorie :-)
  • Designmuster
  • z.B.:
  • Singleton Klassen
  • Curriously Recurring Template Pattern
  • Type Traits
  • Expression Templates
  • Eventbasiertes Programmieren
  • Vorstellung der Boost Bibliothek
  • Vorstellung eines GUI Toolkits
  • Multithreading

Block 5: Das neue C++

Einführung in die Features von C++0x

Praxis 5a: Features

  • Compilerunterstützung
  • „Bugfixes“ der Sprache
  • auto und decltype
  • variadic templates
  • initializer lists
  • Das neue NULL
  • Const Expressions
  • Concepts

Praxis 5b

Die neue Standardbibliothek


Selbstverständlich sollte der Index verändert und angepasst werden, falls es nötig wird.