Kurs JGW-2.2
Algorithm Engineering

When every cycle counts

Auf Youtube, TikTok & Co kurz neue Katzenvideos anschauen oder sich auf schnellstem Weg zum nächsten Krankenhaus navigieren lassen?

Um diese Anfragen in Sekundenbruchteilen zu beantworten, müssen riesige Datenmengen effizient verarbeitet werden. Daher ist die Algorithmik - die Entwicklung und Analyse von Algorithmen - von großer Bedeutung. Allerdings hat sich in den letzten Jahren eine Lücke zwischen Theorie und Praxis aufgetan: Es werden immer aufwendigere Verfahren entwickelt, für die man auf vereinfachten Computermodellen starke Leistungsgarantien zeigen kann. Diese Modelle bilden die komplexen Komponenten moderner Computer jedoch nur noch unzureichend ab. Dadurch erreichen manche Algorithmen ihre theoretischen Leistungsgarantien auf realen Computern nicht oder können gar nicht erst implementiert werden.

Diese Lücke will das Forschungsfeld „Algorithm Engineering“ schließen. Durch das iterative Zusammenspiel von realistischen Computermodellen und umfassenden Experimenten werden Lösungen entwickelt, die nicht nur beweisbar performant, sondern auch praxistauglich sind.

Mittels Vorträgen, Experimenten und Übungsaufgaben werden zunächst die Grundlagen der Algorithmik wie theoretische Maschinenmodelle, asymptotische Analysen und fundamentale Datenstrukturen, sowie die wichtigsten Eigenschaften moderner Computerarchitekturen vermittelt. Hierzu bereiten die Teilnehmenden auch selbst Kurzreferate vor. In der zweiten Kurshälfte nutzen die Teilnehmenden diese Vorarbeit, um in Kleingruppen sowohl theoretisch als auch praktisch effiziente Algorithmen zu entwerfen, zu implementieren und zu evaluieren.

Zur Kursvorbereitung machen sich die Teilnehmenden mit den Grundlagen der Programmiersprache C++ vertraut.

Die Kursleitung