Nach positiver Absolvierung der Lehrveranstaltung sind Studierende in der Lage anhand der Spracheigenschaften und verfügbaren Werkzeuge eine passende Programmiersprache (C oder C++) auszuwählen, um Aufgabenstellungen unter gegebenen Rahmenbedingungen (z.B. Plattform, Laufzeit, Funktionalität) zu lösen. Darüber hinaus lernen die Studierenden, wie sie Programme in den systemnahen Sprachen C und C++ entwerfen und implementieren können. Ein weiteres Ziel ist es, dass die Studierenden in der Lage sind, Tests für ihre eigenen Computerprogramme zu entwerfen. Außerdem wird vermittelt, wie die Spracheigenschaften optimal genutzt werden können, um funktionale und objektorientierte Schnittstellen zu gestalten.
Der Lehrinhalt umfasst neben der Einführung allgemeinerer Sprachaspekte (Typen, Variablen, Ausdrücke, Operatoren, Schleifen, Bedingungen, Gültigkeitsbereiche, Speicherverwaltung und Templates) in den Sprachstandards C++20 und C11 folgende Punkte:
1. Expressive Gestaltung von Funktionssignaturen (Parametertypen und Rückgabewert)
- Übergabe von Parametern als Kopie oder Referenz (Zeiger)
- Übergabe von Parametern mit Schreib- oder Lesezugriff
- Bereitstellung des Ergebnisses mittels Rückgabewert oder Referenz-Parameter
- Funktions-Templates
2. Expressive Gestaltung von Objektschnittstellen
- Konstruktion und Destruktion
- Klassen ohne private Daten (Aggregat-Typen)
- Klassen mit privaten Daten (und Zugriff über Methoden)
- Abstrakte Schnittstellenklassen (Basisklassen)
- Klassen-Templates
3. Überblick über die Funktionalität in den Standardbibliotheken mit Fokus auf
- Zeichenketten
- Textausgabe
- Datei Ein- und Ausgabe
- Algorithmen (und deren Schnittstellen)
4. Laufzeitoptimierung und Numerik
- Gleitkommazahlen (IEEE Standards): Basiswissen zur Darstellung und Reproduzierbarkeit von Ergebnissen
- Basiswissen zu Optimierungsmechanismen des Compilers
5. Quellcode-Organisation
- Reproduzierbarkeit von Ergebnissen (Versionsverwaltung)
- Standards zur Formatierung
- Standards zur Kommentierung
Die Lehrveranstaltung besteht aus Vorlesungseinheiten sowie praktischen Einheiten, welche im Hörsaal abgehalten werden. Diese werden von wöchentlichen Hausübungen begleitet, um den Lernerfolg sicherzustellen. Des Weiteren werden verpflichtende Laborübungen abgehalten in welchen Codebeispiele im Computerlabor des Instituts implementiert werden. Um auf individuelle Fragen im Rahmen der Hausübungen einzugehen, bietet das LVA-Team wöchentliche Fragestunden, welche freiwillig besucht werden können.