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 Sortieren

27.04.26 V

Komplexität

  29.04.26 V Max-Subarray und Korrektheit und Termination von Algorithmen
04.05.26 V

Einführung Bäume

  06.05.26 V Binäre Bäume
11.05.26 V Ausgeglichene Bäume   13.05.26 V

B-Bäume, Tries

18.05.26 V

Digitale Bäume, Heaps, HeapSort

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

Graphalgorithmen III

Räumliche Graphen

  10.06.26 V Textalgorithmen I
15.06.26 V

Textalgorithmen II

Hashing I

  17.06.26 V Hashing II
22.06.26 V

Algorithmen Entwurf I

  24.06.25 V Dies Academicus
29.06.26 V

Algorithmen Entwurf II 

  01.07.26 V

Algorithmen des maschinellen Lernens I

06.07.26 V*

Verteilte Algorithmen

  08.07.26 V* Verteilte Algorithmen Impl. 

13.07.26

V*

Algorithmen des maschinellen Lernens II

Zusammenfassung

 

15.07.26

V keine Vorlesung

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):