Effizientes paralleles C++

Voraussetzungen

keine

Lehrinhalt

Im Praktikum implementieren Studenten 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 STD).

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)

Ziel

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.

Anmeldung

Da die erforderlichen Vorkenntnisse dieser Veranstaltung nicht klar in
Vorraussetzungen 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++ beeinhalten, sowie
eine kurze Beschreibung ihrer theoretischen Grundlagen im Bereich
Algorithmik. Senden sie diese Email bitte sowohl an Tobias Maier (t maier does-not-exist.kit edu),
als auch an Sascha Witt (sascha witt does-not-exist.kit edu).

Modulhandbuch Eintrag

Inhalt

Im Praktikum implementieren Studenten 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 STD).

Lernziele

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.

Arbeitsaufwand

  • 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)