Datenstrukturen und Algorithmen
Dozent: Prof. Dr. Christian Scheideler
Modulinformation
- Modul I.2.2 (MuA)
- V4+ZÜ1+Ü2 SWS
- 8 ECTS
Vorlesung
- Montags 11.00 Uhr - 13.00 Uhr, Hörsaal L1
- Freitags, 11.00 Uhr - 13.00 Uhr, Hörsaal L1
Zentralübung
- Freitags, 13.00 Uhr, Hörsaal L1
Übungsgruppen
Die Anmeldung zu den Übungsgruppen erfolgt über
PAUL.
- Mo 09:00 - 11:00 Uhr Raum D1.312 (Tutor: Lars Werneke)
- Mo 09:00 - 11:00 Uhr Raum O1.252 (Tutor: Sascha Brauer)
- Mo 14:00 - 16:00 Uhr Raum D1.312 (Tutor: Stephanie Freitag)
- Mo 14:00 - 16:00 Uhr Raum O1.252 (Tutor: Karlson Pfannschmidt)
- Di 09:00 - 11:00 Uhr Raum N4.232 (Tutor: Oliver Otte)
- Di 09:00 - 11:00 Uhr Raum D1.312 (Tutor: Christina Kolb)
- Di 16:00 - 18:00 Uhr Raum D1.312 (Tutor: Lukas Arendt)
- Mi 09:00 - 11:00 Uhr Raum D1.312 (Tutor: Simon Pokrup)
- Mi 16:00 - 18:00 Uhr Raum D1.312 (Tutor: Jörn Köpe)
- Do 09:00 - 11:00 Uhr Raum D1.312 (Tutor: David Georgi)
- Do 14:00 - 16:00 Uhr Raum D1.312 (Tutor: Stephanie Freitag)
- Do 14:00 - 16:00 Uhr Raum O1.252 (Tutor: Lars Kleinemeier)
- Do 16:00 - 18:00 Uhr Raum D1.312 (Tutor: Jörn Köpe)
- Fr 09:00 - 11:00 Uhr Raum D1.312 (Tutor: Thim Strothmann)
- Fr 09:00 - 11:00 Uhr Raum O1.252 (Tutor: Oliver Otte)
Die Veranstaltung wird über die koaLA-Plattform organisiert. Dort finden sich sämtliche Informationen und Materialien. Melden Sie sich in
für die Veranstaltung an.Hinweis: Wenn Sie keine Übungsgruppe besuchen wollen melden Sie sich bitte in PAUL in der ersten Übungsgruppe (KEINE ÜBUNG) an. Somit wird vermieden, dass Sie Übungsgruppenplätze für Ihre Kommilitonen blockieren
- Erste Vorlesung: Freitag, 21. April 2017
- Erste Zentralübung: 12. Mai 2017
- Übungsbeginn: 2. Mai 2017
Inhalt der Vorlesung:
Algorithmen bilden die Grundlage jeder Hardware und Software: ein Schaltkreis setzt einen Algorithmus in Hardware um, ein Programm macht einen Algorithmus für den Rechner verstehbar. Algorithmen spielen daher eine zentrale Rolle in der Informatik. Wesentliches Ziel des Algorithmenentwurfs ist die (Ressourcen-)Effizienz, d.h. die Entwicklung von Algorithmen, die ein gegebenes Problem möglichst schnell und mit möglichst geringem Speicherplatz lösen.
Untrennbar verbunden mit effizienten Algorithmen sind effiziente Datenstrukturen, also Methoden, große Datenmengen im Rechner so zu organisieren, dass Anfragen wie Suchen, Einfügen und Löschen, aber auch komplexere Anfragen effizient beantworten werden können.
Die in dieser Veranstaltung vorgeschlagenen Entwurfs- und Analysemethoden für effiziente Algorithmen und Datenstrukturen sowie die grundlegenden Beispiele wie Sortierverfahren, dynamische Datenstrukturen und Graphenalgorithmen gehören zu den Grundlagen für die Algorithmenentwicklung und Programmierung in weiten Bereichen der Informatik.
Inhaltliche Gliederung: (zuletzt aktualisiert am 13.04.)
- Einführung (Rechenmodelle, Effizienzmaße, Beispiele)
- Analysetechniken (Invarianten, Rekurrenzgleichungen)
- Sortierverfahren (Insertionsort, Mergesort, Quicksort, Heapsort, Countingsort)
- Datenstrukturen (Verkettete Listen, Bäume, Graphen, dynamische Suchstrukturen, Hashing)
- Graphenalgorithmen (Tiefen- und Breitensuche, kürzeste Wege, minimale Spannbäume)
- Entwurfsparadigmen (inkrementelle Entwicklung, Teile-und-Herrsche, Greedy Algorithmen, dynamische Programmierung)
Folien:
- Kapitel 1: Einleitung
- Kapitel 2: Grundlagen
- Kapitel 3: Inkrementelle Algorithmen
- Kapitel 4: Divide & Conquer - Merge-Sort
- Kapitel 5: Rekursionen
- Kapitel 6: Quicksort
- Kapitel 7: Heapsort
- Kapitel 8: Untere Schranken für Sortieren
- Kapitel 9: Sortieren in linearer Zeit
- Kapitel 10: Elementare Datenstrukturen
- Kapitel 11: Binäre Suchbäume
- Kapitel 12: Balancierte binäre Suchbäume
- Kapitel 13: Hashing
- Kapitel 14: Elementare Graphalgorithmen
- Kapitel 15: Kürzeste Wege
- Kapitel 16: Minimale Spannbäume
- Kapitel 17: All Pairs Shortest Path Problem
- Kapitel 18: Divide & Conquer
- Kapitel 19: Gierige Algorithmen
- Kapitel 20: Dynamische Programmierung
Übungen:
Um die Inhalte der Vorlesung zu vertiefen, bieten wir Präsenzübungen und auch Heimübungen an. Heimübungen lösen Sie in Kleingruppen bis maximal 3 Personen und geben Ihre Lösung einmal pro Woche ab. Durch diese Punkte können Sie in der Klausur einen Bonus erreichen, sofern Sie die Klausur bestehen.
Zusätzlich haben Sie die Möglichkeit, in den wöchentlich stattfindenden Übungsgruppen Präsenzübungen zu bearbeiten. Dabei steht Ihnen ein Tutor als Ansprechpartner zur Verfügung.
Um zur Klausur zugelassen zu werden, müssen Sie in mindestens 75% der Hausübungen mindestens 20% der Punkte holen. Sie erhalten einen Bonusnotenschritt, wenn Sie 60% der Punkte auf den Hausübungen erreicht haben UND einmal in der Präsenzübung vorgerechnet haben.
Die Übungsaufgaben werden Freitags in das koaLa-System eingestellt. Die Abgabefrist ist jeweils der übernächste Montag vor der Vorlesung (Zettelkästen auf D3). Bei verspäteter Abgabe erfolgt keine Bewertung!
Bei weiteren Fragen wenden Sie sich an Ihren Tutor.
Klausur:
Die Vorlesung ist nur dann bestanden, wenn die Klausur mit mindestens 4,0 bestanden ist.
Klaurtermine:
- Erste Klausur: 07.08.2017, 15:00-18:00 Uhr, SP 2.
- Zweite Klausur: 18.09.2017, 14:00-17:00 Uhr, AM.
Sie dürfen in der Klausur keine Hilfsmittel benutzen außer einem beidseitig handbeschriebenen DINA4 Zettel.
Materialien:
Generell finden Sie alle Materialien im koaLA-System.
Weitere Informationen
Kontakt: Christina Kolb
Email: ckolb@mail.upb.de
Büro: F2.406