Lernergebnisse
Die Studierenden haben Grundkenntnisse in imperativer und objektorientierter Programmierung, die Fähigkeit zur Formulierung einer Spezifikation und ihrer Umsetzung in eine Implementierung sowie Kenntnisse der wesentlichen Datenstrukturen und Algorithmen. Sie sind sicher in der Auswahl geeigneter Datenstrukturen.
Lehrinhalte
* Aufwandsabschätzungen (O-Kalkül)
* Korrektheitsnachweise (Hoare-Kalkül)
* Suchen und Sortieren
* Datenstrukturen: Stack, Queue, verzeigerte Listen, Hashing, Suchbäume, B- Bäume, Realisierung von Mengen
* Graphenalgorithmen (Tiefen-, Breitensuche, Spannbaum, Kürzeste Wege)
* Algorithmen für Optimierungsprobleme: Branch-and-Bound, Backtracking, Dynamische Programmierung, Greedy-Algorithmen, Heuristische Suche
Beschreibung der Lehr- und Lernformen
Vorlesung zur Stoffvermittlung mit begleitenden wöchentlichen Übungen (Tutorien) zur Festigung und Einübung. Die Bearbeitung von Übungsblättern und Programmieraufgaben erfolgt in Kleingruppen.