Einführung in effizientes Programmieren mit C, C++ und Rust
- Type: Vorlesung / Übung (VÜ)
- Chair: KIT-Fakultäten - KIT-Fakultät für Informatik - Institut für Theoretische Informatik - ITI Sanders
- Semester: SS 2024
-
Time:
wöchentlich mittwochs 14:00 - 15:30 Uhr
ab dem 17.04.2024
bis zum 25.07.2024
in 50.34 Raum -118
50.34 INFORMATIK, Kollegiengebäude am Fasanengarten (1. Untergeschoss)
-
Lecturer:
Prof. Dr. Peter Sanders
Prof. Dr.-Ing. Frank Bellosa
Prof. Dr.-Ing. Carsten Dachsbacher
Colin Bretl
Peter Maucher
Nikolai Maas - SWS: 2
- Lv-No.: 2400113
-
Information:
Präsenz
Anmeldung via SignMeUp
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. |
Vortragssprache | Deutsch |
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. |