Uni-Logo
Algorithms and Complexity
 


Algorithmen und Datenstrukturen
Sommersemester 2020
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).

Ablauf der Vorlesungen

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

Vorlesungsaufzeichnungen und -folien

Es wird zudem eine wöchentliche, interaktive Fragestunde geben. Der Termin ist immer am Dienstag von 10:15 bis 12:00 Uhr. Dafür wird das Konferenzsystem Zoom verwendet. Details zu den Zoom-Veranstaltungen finden Sie in der nachfolgenden Rubrik.

Klausur

Nachklausur

  • Wie bereits im Forum erwähnt gibt es aktuell technische Schwierigkeiten bei der Veröffentlichung der Noten im HisInOne System. Das Prüfungsamt arbeitet daran. Update: Das Problem sollte inzwischen behoben sein.
  • Zeit: Dauer: 180 min - Datum: 25.02.2021 - Klausurbeginn c.a. 9:00 Uhr (aufgrund der Einlassanforderungen ist es sinnvoll 20 Minuten früher vor Ort zu sein).
  • Ort: Gebäude 101 auf dem Gelände der Technischen Fakultät. Wir werden Räume und Sitzplätze beim Einlass ins Gebäude 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!
  • Erklärung bzgl. COVID-19: Vor Ort ist ein Erklärung über Ihren gesundheitlichen Status auszufüllen. Eine Kopie dieser Erklärung werden wir Ihnen an den Platz legen.
  • Maßnahmen bzgl. COVID-19: Der Raum soll der Reihe nach mit 1,5m Mindestabstand zwischen Personen betreten werden. Sitzreihen sollen von hinten nach vorne aufgefüllt werden. Es besteht durchgängige Maskenpflicht (OP-Masken oder FFP2 oder äquivalent). Weitere Informationen finden Sie hier.

Hauptklausur

  • Eine Musterlösung der Klausur finden Sie hier.
  • Weitere Einsichtstermine: Es werden nochmal zwei Termine für die Klausureinsicht angeboten:
    • Mittwoch, 04.11., ab 14 Uhr. Bei Interesse bitte an philipp.bamberger at cs.uni-freiburg.de schreiben
    • Freitag, 06.11., ab 14 Uhr. Bei Interesse bitte an philipp.schneider at cs.uni-freiburg.de schreiben
    Bitte senden Sie zur Anmeldung eine Email an die obigen Adressen mit dem Betreff ADEINSICHT, die lediglich Ihren Namen Ihre Matrikelnummer und Ihren Wunschtermin enthält (erster oder zweiter Termin). Wir werden Ihnen dann rechtzeitig (c.a.einen Tag vorher) einen Zeitslot sowie Verbindungsdaten per Email zusenden. Falls Sie zeitiche Einschränkungen haben können Sie uns diese ebenfalls mitteilen.
    Die Einsicht wird aufgrund aktueller Entwicklungen online stattfinden. Dabei zeigen wir Ihnen per Screenshare einen Scan der korrigierten Klausur und Sie können Rückfragen und Beanstandungen bezüglich der Korrektur per Mikrofon oder Chat stellen. Bitte halten Sie ihren Studentenausweis bereit und zeigen Sie uns diesen mit Ihrer Kamera.
  • Klausureinsicht: Wir bieten demnächst zwei Einsichtstermine am Freitag den 23.10.2020 und am Donnerstag den 29.10.2020 jeweils ab 14 Uhr an (die genaue Zeit wird zugewiesen).
  • Datum: Die Klausur findet am 27.08 statt.
  • Uhrzeit: Klausurbeginn ist um 10 Uhr mit Einlass ab ca. 9.30 Uhr. Wir bitten Sie darum um 9.30 Uhr anwesend zu sein denn der Einlass muss geordnet durchgeführt werden und könnte etwas mehr Zeit in Anspruch nehmen.
  • Dauer: 180 Minuten.
  • Ort: Die Mensa im Institutsviertel.
  • 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!
  • Erklärung bzgl. COVID-19: Vor Ort ist diese Erklärung über Ihren gesundheitlichen Status auszufüllen. Eine Kopie dieser Erklärung werden wir Ihnen an den Platz legen (entgegen der vorherigen Angabe brauchen Sie die Erklärung nicht selbst auszudrucken).
  • Maßnahmen bzgl. COVID-19: Der Raum soll der Reihe nach mit 1,5m Mindestabstand zwischen Personen betreten werden. Sitzreihen sollen von hinten nach vorne aufgefüllt werden. Beim Einlass und Rausgehen besteht Maskenpflicht. Weitere Informationen finden Sie hier.

Details zu den Online-Veranstaltungen

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 außerhalb zugreifen können Sie einen VPN Tunnel benutzen. Alternativ sind die Daten auch im Forum verfügbar (es gibt einen entsprechenden Post im Bereich Ankündigungen).

Übungen

Die Übungen werden online mit dem Kursverwaltungssystem Daphne durchgeführt. Es wird dabei meist einen theoretischen Teil und einen praktischen Teil geben. Bitte beachten Sie die Richtlinien zur Abgabe (s.u.).


Thema Abgabe Aufgaben Lösungen

Sortieralgorithmen 20.05 Übungsblatt 01, QuickSort, SelectionSort, MergeSort Lösung 01, QuickSort, plot-linear, plot-logscale
O-Notation 27.05 Übungsblatt 02 Lösung 02
Sortieren in Linearzeit 03.06 Übungsblatt 03, BucketSort, RadixSort, Queue, ListElement Lösung 03, BucketSort, RadixSort, plot
Kollisionsauflösung 10.06 Übungsblatt 04, HashTable Lösung 04, HashTable, plot-logscale, plot-linear
Hashfunktionen 17.06 Übungsblatt 05 Lösung 05
Binäre Suchbäume 24.06 Übungsblatt 06, BST, input Lösung 06, BST
Balancierte Suchbäume 01.07 Übungsblatt 07 Lösung 07
Graphtraversierung 08.07 Übungsblatt 08, Scheduling, AdjacencyList, dag, forest Lösung 08, Scheduling, dag, forest
Minimale Spannbäume 15.07 Übungsblatt 09, TSP, AdjacencyMatrix, cities Lösung 09, TSP
Kürzeste Pfade 22.07 Übungsblatt 10, Maze, WeighAdjList, maze Lösung 10, Maze, maze_vis
Dynamische Programmierung 29.07 Übungsblatt 11, DP, set1, set2, set3 Lösung 11, DP
Textsuche 05.08 Übungsblatt 12, StringMatching, input Lösung 12, StringMatching

Hinweis: Abgabe der Übungsblätter ist stets um 16:00 Uhr!

Richtlinien zur Abgabe der Übungsblätter

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 ausschließlich 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.

Laden sie Ihre theoretischen und praktischen Lösungen immer in Ihr SVN Repository in einen Unterordner mit dem Namen uebungsblatt-XY wobei XY die aktuelle Nummer des Übungsblattes angibt (mit führender Null falls die Nummer einstellig ist)! 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 entsrpechenden Übungsblattes 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, bitte vorher überprüfen!

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

Übungsklausuren

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