Der Kurs findet als Inverted Classroom statt. Das bedeutet, dass erwartet wird, dass die folgenden Seiten und Arbeitsaufträge im Vorfeld gelesen und bearbeitet werden. Sonst ist diese Menge an Inhalten nicht schaffbar. Fangt rechtzeitig an, damit ihr in eurem eigenen Tempo arbeiten könnt. An den Tagen selbst werden dann zusammen Aufgaben bearbeitet und besprochen sowie die Möglichkeit zum Stellen von Fragen gegeben.
Die Inhalte können natürlich auch unabhängig vom Kurs bearbeitet werden.
Voraussetzung
- Grundlegende Kenntnisse im Programmieren
- Bedienung des eigenen Betriebssystems
- Besitz einer Konsole, Empfehlungen:
- Windows: Windows Terminal
- Englischkenntnisse
Montag
- Installation der Entwicklungsumgebung, es wird clang+Visual Studio Code empfohlen, gerne auch VIM testen
- Erstes Hello World!
- Ein- und Ausgabe
- Wichtige Datentypen
- std::vector
- Enumerations
Dienstag
- Einfache Toolchain mit CMake
- Compiler, Linker und Libs
- Compiler-Optionen
- Empfohlene Optionen:
-std=c++20 -Wall -Wextra -Wpedantic -pedantic-errors
- Beim Debuggen zusätzlich:
-g --coverage
- Empfohlene Optionen:
- Daten zusammenführen
- Eigene Datentypen
- Hardwareabstraktion
- Bit-Operationen (Powersets)
- Gegeben der Materialien, versucht Code zu schreiben, der zu einem Container (z.B.
std::vector
) das Powerset dieses Containers erstellt.
- Gegeben der Materialien, versucht Code zu schreiben, der zu einem Container (z.B.
Mittwoch
- Debugging (Beispiel)
- Profiling
- Testing
- Formatting
- Argument parsing
- Mehr Infos
- Wenn ihr CPM verwendet, sollte folgender CMake-Code euch das passend runterladen:
CPMAddPackage( cxxopts GITHUB_REPOSITORY jarro2783/cxxopts VERSION 3.0.0 )
Donnerstag
- Templates
- Schaut euch vielleicht auch die Video am Ende der Seite an, der Text ist leider ein wenig kurz
- Weiterführend: Concepts & Constrains
- Standard Algorithms
- Parallel Programming (←mehr Inhalt als notwendig)
- Pointer
- Kommentar zu Marcros in C++
Freitag
- Package Management
- C++ Funktionen in Python nutzen
- Dokumentation
- Boost
- CMake Beispiel
- Einige (vielleicht Interessante) Libs (schaut euch an, was euch interessiert)
- JSON
- Ein wenig (aber wichtige) Theorie:
- cons correctness
- Memory Managment (teilweise auch Pointer)
Weitere Quellen
- Learn C++
- Hacking C++
- ISO C++
- C++ Core Guidlines
- Super FAQ
- modernes C++
- Microsoft Docs (nutzt die Übersicht links)