Einführung in effizientes Programmieren mit C, C++ und Rust

Inhalt

Über die ersten 10 Wochen des Semesters werden in der Vorlesung die Grundlagen effizienten Programmierens vermittelt. Dies umfasst sowohl ein Verständnis für wichtige Einflussfaktoren (Hardware, Compiler) als auch Kenntnis der für perfomante Programmierung geeigneten Programmiersprachen C, C++ und Rust. Sprachfeatures der genannten Programmiersprachen werden unter dem Aspekt der Performanz eingeführt und analysiert, dabei werden sprachübergreifende Konzepte vermittelt.

Der erste Themenblock führt die Programmiersprache C ein und befasst sich mit den Performance-Eigenschaften realer Hardware sowie dem Thema der Speicherverwaltung.

Der zweite (und längste) Block führt die Programmiersprache C++ ein und befasst sich mit verschiedenen für die Performanz relevanten Sprachfeatures (z.B. Iteratoren, wichtige Bestandteile der Standardbibliothek, Value- und Referenz-Semantik, Templates und Monomorphisierung). Dabei werden insbesondere die folgenden Themen behandelt: Cache-Effizienz und speichereffiziente Datenstrukturen, Vermeidung unnötiger Allokationen und Kopien, Dynamic und Static Dispatch, Generierung von effizientem Maschinencode und der Einfluss des Compilers auf die resultierende Performanz.

Der dritte Block führt die Programmiersprache Rust und deren grundlegende Designunterschiede zu C und C++ ein. Insbesondere wird sich mit der Frage befasst, wie forgeschrittene Sprachfeatures (im speziellen Ownership und Borrowing) ermöglichen, gleichzeitig hohe Performanz und starke Korrektheitsgarantien zu erzielen. Zusätzlich gibt es eine kurze Einführung in effiziente parallele Programmierung.

Der letzte Block befasst sich mit Techniken und Best Practices für die systematische Optimierung von Code.

Die verschiedenen Themenblöcke werden im Praktikum anhand von Übungsaufgaben bearbeitet, bei denen ein vorgegebener Algorithmus umgesetzt werden soll. Diese Aufgaben werden einzeln bearbeitet und die Programmiersprache für die Implementierung ist vorgegeben.

In den letzten vier Wochen wird eine umfangreichere Abschlussaufgabe in Kleingruppen von 3-4 Studierenden bearbeitet. Hierbei darf die Sprache der Implementierung eigenständig aus den drei in der Vorlesung vorgestellten Programmiersprachen gewählt werden und es gibt mehr Freiraum für die Umsetzung. Die Performanz des resultierenden Programms wird zwischen den Gruppen verglichen. Anschließend stellt jede Kleingruppe ihre Arbeit in einer kurzen Präsentation vor und beantwortet Fragen zu den Details ihrer Implementierung.

VortragsspracheDeutsch
Organisatorisches

3 ECTS Vorlesung + 3 ECTS Praktikum

Die Vorlesung wird auf deutsch gehalten, jedoch mit englischen Folien.

Anmeldefrist: 2. April

Weitere Informationen zur Anmeldung finden sich im ILIAS.