Humboldt-Universität zu Berlin - Mathematisch-Naturwissenschaftliche Fakultät - Software Engineering

Algorithmen und Datenstrukturen


 

Wann und Wo

Vorlesung: Montag, 11-13 Uhr, RUD 26, 0'115
Vorlesung: Mittwoch, 11-13 Uhr, RUD 26, 0'115
Übung: Montag, 13-15 Uhr, RUD 26, 1'305 (Gruppe1)
Übung: Montag, 15-17 Uhr, RUD 26, 1'305 (Gruppe2)
Übung: Dienstag, 11-13 Uhr, RUD 26, 1'305 (Gruppe3)
Übung: Dienstag, 15-17 Uhr, RUD 26, 1'305 (Gruppe4)
Übung: Mittwoch, 9-11 Uhr, RUD 26, 1'305 (Gruppe5)
Übung: Mittwoch, 15-17 Uhr, RUD 26, 1'305 (Gruppe7)
Übung: Freitag, 11-13 Uhr, RUD 26, 1'305 (Gruppe8)
Übung: Freitag, 13-15 Uhr, RUD 26, 1'305 (Gruppe9)

Wer

Dozent: Prof. Lars Grunske / Vera Chekan / Fabian Brandt-Tumescheit / Timo Fritsch / Jonas Kramer

Beschreibung und Aufbau der Lehrveranstaltung

Studierende erlernen grundlegende Algorithmen und Datenstrukturen und sind in der Lage, für ein gegebenes Problem das am besten geeignete Verfahren auszuwählen. Sie können einfache Algorithmen bzgl. ihrer Effizienz bewerten und vergleichen.

  • Grundlegende Datenstrukturen (z. B. Arrays, Listen, Stacks, Queues, Heaps)
  • Landau-Kalkül, Laufzeitanalyse (worst case, average case, amortisiert)
  • Effiziente Sortierverfahren (z.B. Quicksort, Radixsort)
  • Rekursive Algorithmen und Backtracking
  • Effiziente Suche (z. B. binäre Suche) und Verwaltung (z. B. Hashing, binäre und balancierte Suchbäume)
  • Einfache Graphenalgorithmen (z.B. Depth/Breadth-First Search, kürzeste Wege mit Dijkstra, aufspannende Bäume, transitive Hülle)
  • Ausgewählte schwere algorithmische Probleme und geeignete Lösungsmethoden.

Jedes Verfahren wird ausführlich vorgestellt und in seiner Komplexität analysiert. Die Korrektheit ausgewählter Beispiele wird bewiesen.

 

Terminplanung bis Semesterende (Änderungen möglich)

Mo, 11.00-13.00

 

Thema

 

Mi, 11.00-13.00

 

Thema

13.04.26 V Vorstellung des Vorlesungs- und Übungskonzeptes   15.04.26 V Keine Vorlesung

20.04.26

V Einführung in Datenstrukuturen und Komplexität (V01 und V02)  

22.04.26

V

Listen und Suchen

27.04.26 V

Komplexität

  29.04.26 V Listen und Sortieren
04.05.26 V

Bäume (V05 und V06)

  06.05.26 V Ausgeglichene Bäume
11.05.26 V Digitale Bäume, Heaps, HeapSort   13.05.26  

Räumliche Datenstrukturen

18.05.26 V

Graphen

  20.05.26 V Graphalgorithmen I
25.05.26 V Pfingstmontag   27.05.26 V Graphalgorithmen II
01.06.26 V Graphalgorithmen III   03.06.26 V Räumliche Graphen
08.06.26 V

Textalgorithmen I

  10.06.26 V Textalgorithmen II
15.06.26 V Hashing I   17.06.26 V Hashing II
22.06.26 V

Verteilte Algorithmen

  24.06.25 V Dies Academicus
29.06.26 V

Verteilte Algorithmen Impl. 

  01.07.26 V

Algorithmen Entwurf I

06.07.26 V

Algorithmen Entwurf II 

  08.07.26 V Algorithmen des maschinellen Lernens I

13.07.26

V

Algorithmen des maschinellen Lernens II

 

15.07.26

V Zusammenfassung und Q&A

Literatur

  • Saake, Sattler: Algorithmen und Datenstrukturen (mit Java), dpunkt.Verlag
  • Cormen, Leiserson, Rivest, Stein: Introduction to Algorithms, MIT Press

Voraussetzungen und Prüfung

Grundlegende Kenntnisse in der Programmierung, wie zum Beispiel im Modul „Grundlagen der Programmierung“ vermittelt, werden vorausgesetzt.

Klausurtermin 1 (120 min):

Klausurtermin 2 (120 min):