Algorithmik
Undergraduate course, TH Köln, Institut für Informatik, 2022
Algorithmik im Bachelorstudiengang Informatik.
Kursübersicht und Lernziele
Das Modul Algorithmik vermittelt die Grundlagen des Entwurfs und der Analyse effizienter Algorithmen sowie die Auswahl geeigneter Datenstrukturen. Die Studierenden lernen, praktische Problemstellungen formal zu beschreiben, passende Speicherstrukturen auszuwählen und Algorithmen hinsichtlich ihrer Laufzeit und ihres Speicherbedarfs systematisch zu bewerten. Ein zentrales Ziel ist es, komplexe Probleme mit minimalem Ressourcenverbrauch zu lösen.
Kerninhalte des Moduls
Die Lehrinhalte sind in vier thematische Lernräume unterteilt:
- Lernraum I: Grundlagen der Analyse & Basis-Datenstrukturen: Einführung in Abstrakte Datentypen (ADT) wie Listen, Stapel und Warteschlangen sowie deren Implementierung mittels Arrays oder verketteten Listen. Vermittlung der Asymptotischen Notation (O-, Ω- und Θ-Notation) zur Laufzeitanalyse.
- Lernraum II: Höhere Datenstrukturen: Vertiefung durch Hashtabellen und verschiedene Strategien zur Kollisionsauflösung. Behandlung von Baumstrukturen, insbesondere binären Suchbäumen (BST), balancierten AVL-Bäumen und Heaps zur effizienten Suche und Prioritätsverwaltung.
- Lernraum III: Graphenalgorithmen: Modellierung von Beziehungen durch Graphen. Behandlung von Traversierungsmethoden (Breiten- und Tiefensuche), topologischer Sortierung, kürzesten Pfaden (Dijkstra, Bellman-Ford) und minimalen Spannbäumen (Prim, Kruskal).
- Lernraum IV: Algorithmenentwurf & Sortierverfahren: Analyse klassischer Sortieralgorithmen (wie Merge-, Quick- und Heapsort) sowie Entwurfsmuster wie Divide and Conquer, Greedy-Ansätze und Dynamische Programmierung.
Praktische Anwendung und Methodik
Neben der theoretischen Analyse in den Vorlesungen und Übungen liegt ein starker Fokus auf der praktischen Implementierung. Im begleitenden Praktikum setzen die Studierenden Algorithmen in Python um, beispielsweise zur Entwicklung eines Online-Marktplatzes oder zur Realisierung von Suchalgorithmen für PacMan. Ein wesentlicher Aspekt ist dabei das Treffen fundierter Design-Entscheidungen, indem Kompromisse zwischen Leistung, Robustheit und Speicherplatzbedarf abgewogen werden.
