NummerefalgECTS3.0AnspruchsniveauadvancedInhaltsübersichtIn diesem Modul werden für verschiedenste Probleme effiziente algorithmische Lösungen besprochen und praktisch eingeübt. Dabei liegt der Fokus darauf, algorithmische Probleme besser einordnen zu können und effiziente Lösungen praktisch umzusetzen.
Theoretischer Teil:
In traditionellen Vorlesungseinheiten werden wichtige algorithmische Konzepte behandelt:
- Algorithmische Grundkonzepte (Backtracking, Branch & Bound, etc.)
- Effiziente Implementation (Speicherhierarchie, Branch Prediction, etc.)
- Dynamische Programmierung
- Lineare Programmierung
- Geometrische Algorithmen (Sweep-Verfahren, konvexe Hülle, etc.)
- Fortgeschrittene Graphenalgorithmen (Routen- und Tourenplanung, Matchings, optimale Flüsse, etc.)
- Metaheuristiken (Ant Colony Optimization, Genetische Algorithmen, Particle Swarm Optimization, etc.)
- Weitere ausgewählte Themen
Praktischer Teil:
Der praktische Teil basiert auf dem Konzept des flipped classroom. Die Studierenden lösen während der Vorlesung praktische Aufgaben auf einer Programmier-Plattform. Dabei werden die hochgeladenen Lösungen automatisch getestet und bewertet, was den Studierenden die Möglichkeit gibt, ihre jeweilige Lösung bezüglich Korrektheit und Performance einzuordnen und zu verbessern.
LernzieleDie Studierenden kennen die wichtigsten algorithmischen Methoden und können vorgegebene Probleme bezüglich möglicher Lösungsansätze einordnen.
Die Studierenden können Lösungsansätze und Implementierungsvarianten bezüglich Rechenaufwand (Performance) und Speicherbedarf abschätzen.
Sie können für diverse algorithmische Probleme effiziente Lösungen in einer höheren Programmiersprache umsetzen.
Die Studierenden können Fragestellungen als algorithmisches Problem formulieren und dafür geeignete Lösungsansätze vorschlagen.
Empfohlene Vorkenntnisse
- Objektorientierte Programmierung (oopI1 & oopI2)
- Algorithmen und Datenstrukturen (algd1 & algd2)
- Mathematische Grundkenntnisse (eana & lag & mada)
LeistungsbewertungErfahrungsnoten