Effizientes paralleles C++

Anmeldung

Da die erforderlichen Vorkenntnisse dieser Veranstaltung nicht klar in Voraussetzungen abgebildet werden können, werden die Praktikumsplätze durch ein Bewerbungsverfahren vergeben.

Als Bewerbung genügt eine formlose Email (<150 Wörter). Diese sollte einen kurzen Überblick über Ihre Erfahrung in C++ beinhalten, sowie eine kurze Beschreibung Ihrer theoretischen Grundlagen im Bereich Algorithmik. Senden Sie diese Email bitte sowohl an Tobias Maier (t.maier@kit.edu), als auch an Sascha Witt (sascha.witt@kit.edu).

Bemerkungen

Im Praktikum implementieren Studierende vielseitige Programmier-Aufgaben in C++. Hierbei liegt das Hauptaugenmerk darauf, effiziente Codes zu erarbeiten und diese durch umfangreiche Experimente zu evaluieren. Die gestellten Aufgaben sind motiviert durch die wissenschaftliche Arbeit auf dem Gebiet des Algorithm Engineering. Sie decken sowohl komplexere Algorithmen als auch fortgeschrittene Datenstrukturen ab, des Weiteren fortgeschrittene Techniken wie Templates (Compile-Zeit-Optimierungen) und Parallelisierung (neue Thread Management Möglichkeiten der STL).

Ziele der Veranstaltung

Die Studierenden

  • können die Methoden des Algorithm Engineering verwenden, um gegebene algorithmische Probleme und Datenstrukturen in C++ zu implementieren und zu evaluieren.
  • erkennen Faktoren, die zu ineffizientem Code führen, und können diese, wenn möglich, durch effizientere Konstruktionen ersetzen.
  • verstehen es, die vorgestellten Techniken zur Parallelisierung einzusetzen und mit den gegebenen Mitteln threadsichere Codes zu erzeugen.
  • kennen die Möglichkeiten der Standardbibliothek und können diese gezielt einsetzen.
  • können die von ihnen erzeugten Codes auf Korrektheit und Performance testen, außerdem können sie die erzielten Ergebnisse darstellen und analysieren.
Vortragssprache Deutsch/Englisch
Arbeitsbelastung
  • ~ 10h Präsenzzeit
  • ~ 10h Nachbesprechung/Bewertung der regulären Lösungen (mit Vorbereitung)
  • ~ 15h Entwerfen der individuellen Abschlussaufgabe
  • ~ 25h Präsentation der individuellen Abschlussaufgabe
  • ~ 120h Bearbeitung der Aufgaben (Implementieren und Evaluieren)