Algorithmen und Datenstrukturen
Neuigkeiten
- 05.08.20 - Die Einsichtnahme zur Nachklausur wird am Donnerstag, dem 13. August 2020, ab 17:15 Uhr, in Raum 34-420 stattfinden. Die Einsichnahme endet sobald keine weiteren Studenten mehr vor Ort auf Einsicht warten.
- 23.07.20 - Die Ergebnisse der Nachklausur im Sommersemester 2020 sind nun im QIS System verfügbar. Zusätzlich können Sie Ihr Ergebnis im Exclaim sehen, insofern Sie dort registriert sind. (Die Statistik in Exclaim ist unvollständig, da nicht alle Studenten dort registriert sind. Die Bestehensquote mit allen Mitschreibern liegt bei 60%).
Archiv
- Beginn der Vorlesung am Donnerstag, 31. Oktober 2019.
- Ausgabe erstes Übungsblatt: Donnerstag, 31. Oktober 2019 (1. Vorlesung).
- Beginn der Übung am Mittwoch, 6. November.
- 05.11.19 - Neues Übungsblatt (01) ist online.
- 12.11.19 - Neues Übungsblatt (02) ist online.
- 12.11.19 - Folien für Kapitel 03 (Sortieren) sind online.
- 17.11.19 - Binäre Suche der Datei Lineare_Suche.java hinzugefügt.
- 19.11.19 - Neues Übungsblatt (03) ist online.
- 24.11.19 - Die Tests zur Aufgabe 3.2 waren leider fehlerhaft und haben immer die Implementierung von Bubble-Sort verwendet. Dies ist nun behoben (Tests einfach wieder ausführen lassen oder die Datei neu hochladen).
- 26.11.19 - Folien für Kapitel 04 (Algorithmenmuster) sind online.
- 26.11.19 - Neues Übungsblatt (04) ist online.
- 27.11.19 - Die heutige Übung muss krankheitsbedingt leider ausfallen!
- 03.12.19 - Neues Übungsblatt (05) ist online.
- 05.12.19 - Die “Türme von Hanoi”-Implementierung aus der Vorlesung (Hanoi.java) ist nun online.
- 10.12.19 - Neues Übungsblatt (06) ist online.
- 10.12.19 - Folien für Kapitel 05 (Abstrakte Datentypen und Verkettete Listen) sind online.
- 12.12.19 - N-Damen Problem (Queens.java) und Stack.java sind nun online.
- 17.12.19 - Neues Übungsblatt (07) ist online.
- 18.12.19 - Neue Version von algodat-v3 online, da noch kritische Bugs beseitigt wurden.
- 20.12.19 - Implementierungen BoundedArrayStack.java und BoundedArrayQueue.java aus der Vorlesung sind nun online.
- 07.01.20 - Die Übung am 08.01.2020 muss leider kranksheitsbedingt ausfallen!
- 07.01.20 - Neues Übungsblatt (08) ist online.
- 07.01.20 - Folien für Kapitel 06 (Bäume) sind online.
- 09.01.20 - Die Materialien zu Blatt 08 sind nun online.
- 09.01.20 - Implementierungen SingleLinkedList.java (unvollständig!) und BinTree.java aus der Vorlesung sind nun online.
- 14.01.20 - Neues Übungsblatt (09) ist online.
- 14.01.20 - Folien für Kapitel 07 (Suchbäume) sind online.
- 14.01.20 - Frau Korth bietet eine freiwillige Zusatzübung an, zur Vorbereitung auf die Klausur. Um einen passenden Termin zu finden gibt es eine Abstimmung, die für eine Woche offen sein wird.
- 16.01.20 - Ergänzungen zur Datei BinTree.java aus der heutigen Vorlesung hinzugefügt. Für das Übungsblatt (09) finden Sie aber auch eine passendere Version in den Materialien!
- 21.01.20 - Neues Übungsblatt (10) ist online, Material folgt nach der Vorlesung.
- 22.01.20 - Folien für Kapitel 08 (Hashing) sind online.
- 23.01.20 - Die Zusatzübung wird am Mittwoch, den 12.02.2020, im Block nach der Übung (also 10:00 Uhr), stattfinden, der Raum wird noch bekannt gegeben.
- 23.01.20 - Materialien zu Blatt 10 sind nun online.
- 23.01.20 - Die beiden ADT Implementierungen TreeSet.java und TreeMultiSet.java, die in der Vorlesung gezeigt wurden, sind nun online. Sie können beiden in Ihren app/exercise/adt/impl Ordner übernehmen und in Zukunft als Set oder MultiSet Implementierung verwenden, insofern Ihre TreeMap dann korrekt implementiert ist!
- 23.01.20 - Die Klasse BinarySearchTree.java (unvollständig) aus der Vorlesung ist nun online.
- 28.01.20 - Neues Übungsblatt (11) ist online.
- 29.01.20 - Folien für Kapitel 09 (Balancierte Suchbäume) sind online.
- 04.02.20 - Das letzte Übungsblatt (12) ist online.
- 13.02.20 - Informationen zur Abschlussklausur (WS 2019/20) sind nun online.
- 26.02.20 - Informationen zu Einsichtnahme und dem nächsten Prüfungstermin werden bald bekannt gegeben.
- 26.02.20 - Die Ergebnisse der Abschlussklausur (WS 2019/20) sind nun im QIS System verfügbar. Zusätzlich können Sie Ihr Ergebnis im Exclaim sehen.
- 04.03.20 - Die Einsichtnahme zur Abschlussklausur wird am Donnerstag, dem 12. März 2020, ab 17:15 Uhr, in Raum 48-379 stattfinden. Die Einsichnahme endet sobald keine weiteren Studenten mehr vor Ort auf Einsicht warten.
- 04.03.20 - Es wird am 30.03.2020 (morgens) eine Nachklausur angeboten. Genauere Details zu Zeit und Ort werden noch bekannt gegeben. Bitte melden Sie sich bei Interesse frühzeitig an (sobald die Anmeldung verfügbar ist).
- 10.03.20 - Die Anmeldung zum Nachtermin am 30.03.2020 ist freigeschaltet, bitte melden Sie sich rechtzeitig an! Die Informationen zu diesem Termin sind nun online.
- 23.03.20 - Gemäß der Maßnahme zur Eindämmung des Corona-Virus wird der Nachtermin erstmal nicht stattfinden (lesen Sie dazu auch Informationen zu Corona). Ein neuer Termin wird mit entsprechendem Vorlauf bekannt gegeben.
- 24.06.20 - Der nächste Klausurtermin ist nun der 20.07.2020, weitere Informationen finden Sie unten in der entsprechenden Sektion. Ort und Tageszeit werden noch bekannt gegeben. Bitte melden Sie sich rechtzeitig an!
- 14.07.20 - Ort (Hörsaal 24-102) und genaue Zeit (13:00 Uhr, Einlass ab 12:45 Uhr) der Klausur im Sommersemster 2020 sind nun bekannt. Bitte machen Sie sich mit den Corona Richtlinien der TUK vertraut.
Organisation
Vorlesungen: Donnerstag, 17:15 - 18:45, Raum 46-110, ab 31.10.2019
Übungen: Mittwoch, 8:15 - 9:45, Raum 46-260, ab 06.11.2019
Abgabe der Übung: Montag Abend
- Theorie: Übungskasten 4. Stock zwischen 32 & 34
- Praxis: Upload in Exclaim
Organisation der Übung und Zulassung: siehe unten
Abschlussklausur WS 2019/20
Hier sind die Daten der Klausur:
- Datum: Montag, der 17.02.2020
- Ort: Hörsaal 46-215
- Einlass: ab 9:00 Uhr
- Beginn: voraussichtlich um 9:30 Uhr
- Dauer: 90 Minuten
- Ende: voraussichtlich gegen 11:00 Uhr
Alle angemeldeten Teilnehmer haben eine gültige Zulassung – entweder aus diesem oder einem vorhergehenden Semester – und dürfen somit teilnehmen.
Klausur SS 2020
Hier sind die Daten zum zweiten Prüfungstermin, im Sommersemester:
- Datum: Montag, der 20.07.2020
- Ort: Hörsaal 24-102
- Einlass: ab 12:45 Uhr
- Beginn: voraussichtlich um 13:00 Uhr
- Dauer: 90 Minuten
- Ende: voraussichtlich gegen 15:30 Uhr
Die Klausur findet im Rahmen der Corona Richtlinien der TUK statt, bitte machen Sie sich im Vorfeld mit den Maßnahmen, insbesondere dem Sicherheitskonzept für die schriftlichen Prüfungen vertraut.
Dozent
Dr. rer. nat. Patrick Michel
Tutorin
Inhalt
Implementierung und Verwendung grundlegender Datenstrukturen und ihrer Operationen. Algorithmus Begriff und grundlegende Algorithmen auf Datenstrukturen. Verständnis von Zeit- und Platzbedarf eines Verfahrens / einer Operation. Verwendung von Sortier- und Suchverfahren für den Zugriff auf Anwendungsdaten. Rekursive Programmierung, Modellierung mit Graphen, etc.
(siehe auch Modulhandbuch)
Anmeldung
Zur Übung müssen sich alle Studenten anmelden. Hierzu verwenden wir das Exclaim System, das auch für die Abgabe der praktischen Übungen genutzt wird.
Vorlesungsmaterial
Hier sind die Folien und andere Materialen aus der Vorlesung verfügbar.
No. | Kapitel | Normal | 2 auf 1 | Kommentare |
---|---|---|---|---|
– | Organisatorisches | |||
01 | Algorithmen – Grundlagen | |||
02 | Komplexitätsanalyse | |||
03 | Sortieren | |||
04 | Algorithmenmuster | |||
05 | Abstrakte Datentypen und Verkettete Listen | |||
06 | Bäume | |||
07 | Suchbäume | |||
08 | Hashing | |||
09 | Balancierte Suchbäume |
Hier sind die Quelldateien für das AlgoDat System, die in der Vorlesung geschrieben/präsentiert wurden. Wenn nicht anders angeben liegen die Dateien im package exercise/lecture und damit im Pfad app/exercise/lecture im System.
Kapitel | Datei | Kommentar |
---|---|---|
01 | Euklidischer_Algorithmus.java | |
02 | Lineare_Suche.java | aktualisiert am 17.11.2019 |
04 | Hanoi.java | |
04 | Queens.java | |
05 | Stack.java | |
05 | BoundedArrayStack.java | |
05 | BoundedArrayQueue.java | Auch Ringbuffer genannt. |
05 | SingleLinkedList.java | Nicht komplett (siehe Blatt 08 Material). |
06 | BinTree.java | aktualisiert am 16.01.2020 |
07 | BinarySearchTree.java | |
07 | TreeSet.java | |
07 | TreeMultiSet.java |
Übungsmaterial
Hier sind die Übungsblätter und die dazu notwendige Materialien.
Blatt | Abgabe | Material | Kommentare |
---|---|---|---|
Blatt 00 | 04/06.11. | algodat-v1 | “Hinweise zu den Praktischen Übungen” unten beachten! |
Blatt 01 | 11/13.11. | algodat-v2 | “Neue Übungsmaterialien pro Blatt” unten beachten! |
Blatt 02 | 18/20.11. | algodat-v2.1 | Nur UI neu (Ordner public), V2.1 |
Blatt 03 | 25/27.11. | sheet_03 | Kein Systemupdate notwendig. |
Blatt 04 | 02/04.12. | sheet_04 | Kein Systemupdate notwendig. |
Blatt 05 | 09/11.12. | sheet_05 | Kein Systemupdate notwendig. |
Blatt 06 | 16/18.12. | sheet_06 | Kein Systemupdate notwendig. |
Blatt 07 | 06/08.01. | algodat-v3 | “Neue Übungsmaterialien pro Blatt” unten beachten! |
Blatt 08 | 13/15.01. | algodat-v4 | “Neue Übungsmaterialien pro Blatt” unten beachten! |
Blatt 09 | 20/22.01. | sheet_09 | Kein Systemupdate notwendig. |
Blatt 10 | 27/29.01. | sheet_10 | Kein Systemupdate notwendig. |
Blatt 11 | 03/05.02. | algodat-v5 | “Neue Übungsmaterialien pro Blatt” unten beachten! |
Blatt 12 | 10/12.02. | algodat-v5.1 | letztes Übungsblatt |
Übungen und Zulassungsvoraussetzung
Die Übungsblätter werden wöchentlich ausgegeben, wenn möglich schon vor der Übung am Mittwoch, spätestens aber zur Vorlesung am Donnerstag. Sie sind in Gruppen zu bearbeiten und im Laufe des Montags abzugeben.
- Theoretische Aufgaben werden auf Papier in den Übungskasten im vierten Stock zwischen Gebäude 34 und 32 abgegeben.
- Praktische Aufgaben sind in den vorbereiteten Quelldateien zu ergänzen und online im Exclaim System hochzuladen.
Die praktischen Aufgaben werden vom Abgabesystem übersetzt und geprüft; Akzeptiert werden nur Abgaben die auch übersetzt werden können. Der Tutor gibt im Laufe des Dienstags Feedback zu den hochgeladenen Aufgaben.
Bis zur Übung am Mittwoch können die praktischen Aufgaben weiter bearbeitet und verbessert werden. In der Übung werden theoretische und praktische Teile gemeinsam besprochen und Gruppen können im Anschluss Verbesserungen ihrer Lösungen vom Tutor abnehmen lassen.
Um zur Klausur zugelassen zu werden müssen alle bis auf zwei Übungsblätter sinnvoll bearbeitet werden. Das bedeutet, dass alle Aufgaben von der Gruppe bearbeitet wurden und in entscheidenden Teilen korrekt gelöst wurden. Der Tutor entscheidet ob die theoretische und praktische Abgabe diese Kriterien erfüllen und trifft die Entscheidung spätestens nachdem die Gruppe nach der Übung am Mittwoch Gelegenheit hatte weitere, laufende Lösungen vorzuführen.
Hinweise zu den Praktischen Übungen
In den praktischen Übungen sollen Sie die zum Download bereit gestellten Quellen ergänzen und zur Abgabe ins Exclaim System hochladen. Damit Exclaim die Abgabe übersetzen kann, dürfen Sie weder die Klasse umbennen, noch die öffentlichen Methoden, noch die Klasse in ein anderes Paket verschieben.
Sie dürfen gerne neue öffentliche Methoden hinzufügen (um diese über die Oberfläche zum Testen zu verwenden) oder Hilfsmethoden zur Strukturierung Ihres Codes!
Zur Abgabe laden Sie für jede Aufgabe getrennt die Klasse der Aufgabe in das System. Sollten Sie Hilfsklassen verwenden oder auf späteren Blättern sonst weitere Klassen zur Lösung notwendig sein, müssen Sie diese ebenfalls hochladen. Insbesondere müssen Sie keine sonst zur Verfügung gestellten Klassen (wie Person, etc.) hochladen!
Zur Bearbeitung der Aufgaben können Sie einen beliebigen Text Editor verwenden, wir empfehlen Ihnen aber eine Entwicklungsumgebung wie IntelliJ Idea oder Eclipse. Beide sind in kostenlosen Versionen verfügbar.
Schließlich brauchen Sie ein Java 8 JDK (z.B. von Oracle oder ein OpenJDK). Unter Windows kann das JDK in Version 8 schwer zu bekommen sein; sollten Sie Probleme damit haben melden Sie sich bitte per E-Mail! Nach Installation des JDK stellen Sie sicher, dass der Java Interpreter und der Java Compiler im Pfad sichtbar sind: Führen Sie in einem Terminal die beiden Befehle java -version und javac -version aus und überprüfen Sie die ausgegebene Version (bzw. das beide Befehle überhaupt verfügbar sind).
Das AlgoDat-System: In der ZIP-Datei von Blatt 00 befindet sich das in der Vorlesung gezeigte System. Wenn Sie ein Java 8 JDK installiert haben und sich beide oben genannten Befehle ausführen lassen, dann können Sie das System starten, indem Sie ./sbt run im Terminal eingeben (Linux / Mac OS X) oder den Befehl sbt.bat run ausführen (Windows). Geben Sie nur ./sbt bzw. sbt.bat ein, landen Sie in der SBT-Shell und können von dort mit der Eingabe run das System starten.
Beim allerersten Start brauchen Sie eine Internet Verbindung und etwas Geduld, da alle nötigen Bibliotheken und Quellen für das System automatisch heruntergeladen und lokal installiert werden. Ist dieser Vorgang einmal abgeschlossen ist er für den Rest des Semesters nicht mehr notwendig!
Solange das System läuft, können Sie:
- Unter der URL http://localhost:9000 auf die UI zugreifen und damit arbeiten.
- Ändern Sie etwas im Code der aktuellen Aufgabe und führen dann eine Methode über die UI aus, wird Ihr Code im Terminal automatisch übersetzt und ausgeführt. Auf der UI sehen Sie entweder das Ergebnis der Ausführung oder den Fehler beim Übersetzen.
- Sie können das System im Hintergrund laufen lassen, da es im Leerlauf keine Last erzeugt.
Tipp: Sie können ein integriertes Terminal in Ihrer IDE benutzen, um von dort das System zu starten und brauchen damit nicht ein weiteres Fenster im Hintergrund zu verwalten.
Alternativ zum AlgoDat-System können Sie die Übungsaufgaben auch manuell (oder in Ihrer IDE) übersetzen und durch eine main Methode testen. Führen Sie dazu im app Ordner Befehle wie javac exercise/sheet_00/Sortierung.java aus, gefolgt von einem passenden java Kommando zum Ausführen Ihrer main. In diesem Fall sind nur die beiden Ordner exercise und model (enthalten im app Order) relevant, die Sie hier für Blatt 00/01/02/03/04/05/06/07/08/09/10/11/12 separat herunterladen können.
Neue Übungsmaterialien pro Blatt
Für jedes Übungsblatt gibt es neue Quelldateien für die Übungen und oft auch ein Update zum AlgoDat-System, mit neuen Funktionen und/oder behobenen Fehlern in der Anwendung. Für Blatt 02, zum Beispiel, finden sie alles notwendige im Archiv algodat-v2.1.
Das jeweils neue Archiv für ein Übungsblatt enthält diese Unterschiede zur jeweiligen Vorgängerversion:
- Die Quelldateien des aktuellen Übungsblatts XY im Ordner app/exercise/sheet_XY.
- Die aktuelle Version der Oberfläche (UI) im Ordner public.
- Die aktuelle Version des Backends (Servers) im Ordner app/controllers bzw. conf.
Sie können also entweder diese vier Ordner jeweils in Ihrem bestehenden Projekt ersetzen oder mit dem entpackten Ordner des Übungsblatts neu anfangen (und Ihren alten app/exercise Ordner übernehmen). In beiden Fällen fällt das initiale Herunterladen weg und das System sollte deutlich schneller starten.
Ob Sie das System in der aktuellen Version des Übungsblatts betreiben, sehen Sie auf der Seite unten rechts (ab V2): Hier sollte unter anderem die (Major-)Version der Oberfläche mit der des Backends übereinstimmen. Sie brauchen jeweils nur die neuste Version des Systems und sie sollte mit allen Vorlesungs- und Übungsquellen abwärtskompatibel sein.