Modulbeschreibung

C++ Advanced

Kurzzeichen:
M_CPlA
Unterrichtssprache:
Deutsch
ECTS-Credits:
4
Leitidee:

Fortgeschrittene Techniken der Nutzung von Standard C++ und von wichtigen Bibliotheken

Modulverantwortung:
Sommerlad Peter
Standort (angeboten):
Rapperswil-Jona
Zusätzliche Eingangskompetenzen:

Englisch

Modultyp:
Wahlpflicht-Modul für Informatik Retro STD_14_UG(Empfohlenes Semester: 6)Kategorie:Grundlagen Informatik und Aufbau Informatik (I-gai)
Wahlpflicht-Modul für Informatik STD_05(Empfohlenes Semester: 4)Kategorie:Grundlagen Informatik (I-g)
Wahlpflicht-Modul für Informatik STD_11(Empfohlenes Semester: 4)Kategorie:Grundlagen Informatik (I-g)
Wahlpflicht-Modul für Informatik STD_14(Empfohlenes Semester: 6)Kategorien:Aufbau (I_Auf), Informatik (I_Inf)
Modulbewertung:
Note von 1 - 6

Leistungsnachweise und deren Gewichtung

Modulschlussprüfung:
Schriftliche Prüfung, 120 Minuten

Inhalte

Angestrebte Lernergebnisse (Abschlusskompetenzen):
  • Fortgeschrittene Konzepte und Sprachmittel von Standard C++ anwenden und verstehen
  • Funktionale und generische Programmierung zur Laufzeit und zur Compilezeit
  • Umgang mit Legacy C++ und Refactoring zu modernem C++
  • Fortgeschrittene Bibliotheken Überblick und Nutzen, z.B. Boost Libraries
  • Einblick in die C++ Standardisierung, Ausblick auf zukünftige Standards
Modul- und Lerninhalt:

Genaue Details werden zu Semesterstart bekannt gegeben. Mögliche Themen sind:

  • Rekapitulation C++: Typen, Werte, Funktionen, Lambdas, Templates, Variablentemplates, SFINAE, Variadic-Templates mit Parameter-Packs
  • Eigene Iteratoren für die Algorithmen der Standardbibliothek definieren, Adaption von Standardcontainern, inklusive hashing
  • Resourcenmanagement - Lebensdauer, Referenzen (lvalue, rvalue), Move versus Copy für eigene Typen, Forwarding, Lambdas mit generalized Capture, Exception Safety und noexcept, Konstruktor-Desktruktor-Regeln im Detail (=default, =deleted)
  • Typdeduktion, Rvalue-Referenzen und Forward Referenzen im Detail, auto, decltype, declval, forward, move
  • Tuple, Pair, Integer-Sequence, Deduktionsregeln, Anwendung, Relationale Operatoren damit definieren für eigene Typen
  • Policy-based Design von Klassen, Parametrisierung zur Compile-Zeit, Umgang mit Allokatoren in der Standardbibliothek
  • Compile-Zeit Berechnungen von Werten, Sequenzen und Arrays mittels constexpr Funktionen und Templates
  • Meta-Programmierung mittels type_traits: z.B., true_type, false_type, traits, conditional
  • Optionale Schnittstellen von generischen Klassen, Overload-Resolution mittels enable_if und SFINAE
  • Neue und zukünftige Standardklassen: any, optional, variant, string_view und deren Anwendung
  • Multi-Threading Features der Standardbibliothek: async und futures, threads, atomics, locks, condition variables, Memory Model
  • Vergleich und Umgang mit C++ und C Code-Altlasten. Verstehen der Probleme von "naked" Pointern, Kapselung Refactoring
  • Standardisieren
  • Aktuelle Themen aus der C++ Standardisierung, Aufbau des Sprachstandards, Proposal-Prozess, Review aktueller Proposals