Uni-Logo
Algorithms and Complexity
 


Algorithmen und Datenstrukturen
Sommersemester 2022
Fabian Kuhn

 



Kursbeschreibung

Die Vorlesung widmet sich dem Entwurf und der Analyse von Algorithmen. Dabei werden die grundlegenden Algorithmen und Datenstrukturen besprochen. Unter anderem behandeln wir die folgenden Themen: Sortieren, Suchen, Hashtabellen, Suchbäume, (Prioritäts-)Warteschlangen, Graphenalgorithmen (z.B. kürzeste Wege, Spannbäume, Breiten- und Tiefensuche).


Klausur

    Nachklausur:
  • Klausureinsicht: Wir bieten einen Einsichtstermin am Dienstag den 02.05.2023 zwischen 14:00 und 16:00 Uhr. Gebäde 106, Seminarraum 00-007.
  • Zeit: Dauer: 180 min - Datum: 10.03.2023 - Klausurbeginn c.a. 14:00 Uhr (um den Einlass zeitlich zu entzerren bitten wir 20 Minuten früer vor Ort zu sein).
  • Ort: Gebäde 101 auf dem Gelände der Technischen Fakultät. Wir werden Räme und Sitzplätze beim Einlass ins Gebäde zuweisen.
  • Modus: Schriftlich und Open book. Letzteres bedeutet, dass alles auf Papier gedruckte oder geschriebene Material mitgebracht und benutzt werden darf. Elektronische Hilfsmittel sind nicht erlaubt!
  • Hauptklausur:
  • Klausureinsicht: Wir bieten demnächst zwei Einsichtstermine am Freitag den 30.09.2022 und am Mittwoch den 05.10.2022 an. Schreiben Sie sich dafür bei einem der freien Timeslots in Zulip ein!
  • Zeit: Dauer: 180 min - Datum: 24.08.2022 - Klausurbeginn c.a. 14:00 Uhr (um den Einlass zeitlich zu entzerren bitten wir 20 Minuten früher vor Ort zu sein).
  • Ort: Gebäde 101 auf dem Gelände der Technischen Fakultät. Wir werden Räme und Sitzplätze beim Einlass ins Gebäde zuweisen.
  • Modus: Schriftlich und Open book. Letzteres bedeutet, dass alles auf Papier gedruckte oder geschriebene Material mitgebracht und benutzt werden darf. Elektronische Hilfsmittel sind nicht erlaubt!
  • Bitte überprüfen Sie die Angaben zeitnah vor der Klausur noch einmal, falls sich Änderungen ergeben.

Ablauf der Vorlesungen

Die Vorlesung wird im Voraus aufgezeichnet und jeweils am Anfang der Woche auf folgender Website zur Verfüung gestellt.

Vorlesungsaufzeichnungen und -folien

Interaktive Fragestunde: Es wird zudem eine wöchentliche, interaktive Fragestunde geben. Der Termin ist immer am Dienstag von 10:15 bis 12:00 Uhr im Gebäde 101 Hörsaal 00-026. Ein Teilnahme per Zoom is ebenfalls möglich. Details zu den Zoom-Veranstaltungen finden Sie in der nachfolgenden Rubrik.

Präsenztutorat: Jeden Donnerstag (ab dem 17.05) wird ein optionales Präsenztutorat von 12:15-14:00 Uhr in Gebäde 51 Raum 00-031 angeboten.


Details zu den Online-Veranstaltungen

Zoom: Den wöchentlichen Veranstaltungen kann digital per Zoom beigewohnt werden. Die notwendigen Daten für die Zoom-Meetings finden Sie auf dieser Website. Bitte beachten Sie, dass dieser Link nur innerhalb des Uni-Netwerkes funtkioniert. Möchten Sie von ausserrhalb zugreifen, können Sie einen VPN Tunnel benutzen.

Zulip ist eine Mischung aus Forum und Instant Messanger auf dem alle Fragen rund um Vorlesung geklärt werden können. Daten für den Zulip Server finden Sie demnächst ebenfalls auf dieser Website. Bitte beachten Sie auch hier, dass dieser Link nur innerhalb des Uni-Netwerkes funtkioniert.


Üungen

Abgabezeitpunkt der Üungsblätter ist um 10:00 Uhr


Thema Abgabe Aufgaben Lösungen

Sortieralgorithmen 03.05 Üungsblatt 01, QuickSort.py Lösung 01, QuickSort.py
O-Notation 10.05 Üungsblatt 02 Lösung 02
Sortieren in Linearzeit 17.05 Üungsblatt 03, BucketSort.py, RadixSort.py, Queue.py, ListElement.py Lösung 03, BucketSort.py, RadixSort.py
Kollisionsauflösung 24.05 Üungsblatt 04, HashTable.py Lösung 04, HashTable.py
Hashfunktionen 31.05 Üungsblatt 05 Lösung 05
Binäre Suchbäme 14.06 Üungsblatt 06, BST.py, input.txt Lösung 06, BST.py
Balancierte Suchbäme 21.06 Üungsblatt 07 Lösung 07
Graphtraversierung 28.06 Üungsblatt 08, Scheduling.py, AdjacencyList.py, dag.txt Lösung 08, Scheduling.py
Minimale Spannbäme 05.07 Üungsblatt 09, TSP.py, AdjacencyMatrix.py, cities.txt Lösung 09, TSP
Kürzeste Pfade 12.07 Üungsblatt 10, Maze.py, WeighAdjList.py, maze.txt maze_vis.txt Lösung 10, Maze.py, solution.txt
Dynamische Programmierung 19.07 Üungsblatt 11, DP.py, set1.txt, set2.txt, set3.txt Lösung 11, DP.py
Textsuche 26.07 Üungsblatt 12, StringMatching, input Lösung 12, StringMatching
Bonusblatt 02.08 Üungsblatt 13, Heap.py Lösung 13, Heap.py

Richtlinien zur Abgabe der Üungsblätter

Die Übungen werden online mit dem Kursverwaltungssystem Daphne durchgeführt. Es wird dabei meist einen theoretischen Teil und einen praktischen Teil geben.

Laden sie Ihre theoretischen und praktischen Lösungen immer in Ihr SVN Repository hoch, und zwar in einen Unterordner mit dem Namen uebungsblatt-XY wobei XY die aktuelle Nummer des Üungsblattes angibt (mit führender Null falls die Nummer einstellig ist). Mehr Details gibt es hier.

Ihre praktischen Lösungen müssen direkt in uebungsblatt-XY hochgeladen werden (und nicht in einen weiteren unterordner) damit Jenkins diese findet. Nach der Deadline des entsprechenden Üungsblattes XY sind keine Änderungen mehr am Unterordnet uebungsblatt-XY mehr möglich.

Laden Sie Ihre theoretischen Lösungen als (einzelnes) PDF in den entsprechenden Unterordner uebungsblatt-XY. Am liebsten sind uns theoretische Lösungen die mit Latex angefertigt wurden. Word oder andere Zeichensetzungsprogramme sind OK. Scans mssen gut lesbar sein!

Die hier verlinkte Üersicht beschreibt die typischen Schritte die Sie für die Abgabe der praktischen Lösung durchführen sollen.

Information zur Abgabe in Übungsgruppen: Eine gemeinsame Abgabe in Gruppen von bis zu drei Personen ist erlaubt. Um eine bungsgruppe zu bilden, senden Sie bitte eine Mail an Philipp Bamberger mit dem Betreff AD-Gruppe, welche ausschliesslich die RZ-Kürzel der Gruppenmitglieder enthält. Bitte beachten Sie, dass jedes Gruppenmitglied die Lösungen in seinen SVN-Ordner laden muss. Bitte teilen Sie zudem Ihrem Tutor in der file erfahrungen.txt Ihre Gruppenpartner mit.


Üungsklausuren

Hinweis: Die folgenden Klausuren stammen vom Kurs "Informatik 2" welcher ähnlich aber etwas umfangreicher war. Die Themen der Klausur "Algorithmen und Datenstrukturen" können leicht abweichen.


Lehrmaterial

  • Introduction to Algorithms (3rd edition); T. Cormen, C. Leiserson, R. Rivest, C. Stein; MIT Press, 2009
  • Algorithmen und Datenstrukturen (5. Auflage); T. Ottmann und P. Widmayer; Spektrum Akademischer Verlag, Heidelberg, 2012
  • Algorithms and Data Structures; K. Mehlhorn und P. Sanders; Springer, 2008, online verfügbar
  • Links zu Vorlesungen mit Aufzeichnungen auf MIT Courseware:
    Introduction to Algorithms 2005    und    Introduction to Algorithms 2011