Praktische Informatik 2

339.619 Mössenböck Di 08:30 - 10:00 Raum: BA 9911 Beginn: 3.3.2020

Bitte beachten Sie, dass die Lehre bis auf Weiteres ausschließlich online stattfindet. Der Link zum LVA-Stream wurde per Kusss-Email an die angemeldeten TeilnehmerInnen versandt. Videoaufzeichnungen finden Sie weiter unten.

In dieser Vorlesung werden die wichtigsten dynamischen Datenstrukturen (Listen, Bäume, Graphen) und die darauf arbeitenden Algorithmen vermittelt. Das Ziel ist, Studierende im algorithmischen Denken zu schulen, Verständnis für die Funktionsweise gängiger Bibliotheksklassen zu wecken sowie weitere Übung im Umgang mit Java zu vermitteln.

Inhalt

  1. Dynamische Datenstrukturen
    - Klassen als Referenztypen
    - Lineare Listen
        - Unsortierte Listen
        - Sortierte Listen
        - Ringlisten
        - Doppelt verkettete Listen
    - Stacks
    - Queues
    - Mengen

  2. Bäume
    - Begriffe
    - Binäre Suchbäume
    - Mehrwegbäume
    - Traversieren von Bäumen
    - Balancierte Bäume
        - Balancieren binärer Suchbäume
        - Topdown-234-Bäume
        - Rot-Schwarz-Bäume
        - B-Bäume
    - Heaps

  3. Graphen
    - Begriffe
    - Depth-First-Search
    - Breadth-First-Search
    - Kleinster spannender Baum
    - Kürzester Pfad
    - Transitive Hülle
    - Serialisierung von Graphen

  4. Hashing
    - Hashfunktion
    - Kollisionsstrategien
        - Überlauflisten (Separate Chaining)
        - Lineares Probieren
        - Quadratisches Hashen
    - Bewertung

  5. Stringsuche
    - Brute-Force-Algorithmus
    - Boyer-Moore-Algorithmus
    - Stringvergleich mit Wildcards
    - Suchen mit regulären Ausdrücken

  6. Höhere Sortieralgorithmen
    - Heapsort
    - Sortieren linearer Listen
    - Topologisches Sortieren

  7. Fortgeschrittene Konzepte von Java
    - Wiederholung: Objektorientierung
    - Widerholung: Pakete
    - Generische Typen
    - Parallelität
    - Lambda-Ausdrücke

  8. Java-Klassenbibliothek
    - java.lang
    - java.util
    - java.io
    - javax.swing

Videoaufzeichnungen

Prüfung

Die Prüfung findet in Form einer schriftlichen Klausur am 23.06.2020, 8:30-10:00 statt. Wie es derzeit aussieht, wird sie als Online-Klausur über Zoom und Moodle stattfinden. Nähere Hinweise zu Online-Klausuren siehe hier.

Skript

Der Großteil der Vorlesung findet unter Benutzung der Tafel statt. Einzelne Kapitel werden auf Folien präsentiert. Diese Folien sind auf der KUSSS-Seite dieser LVA als PDF-Dokumente verfügbar.

Literatur

  • Sedgewick R., Wayne K.: Algorithmen - Algorithmen und Datenstrukturen. 4. aktualisierte Auflage, Pearson 2014
    Eines der besten Bücher zu diesem Thema. Es deckt ziemlich genau den Inhalt der Vorlesung ab. Wenn Sie sich daher ein begleitendes Buch kaufen wollen, ist dieses hier zu empfehlen. Man kann Bücher dieser Art später immer wieder als Nachschlagewerk brauchen.

  • Pomberger, G., Dobler, H.: Algorithmen und Datenstrukturen. Eine systematische Einführung in die Programmierung. Pearson 2008.
    Ein sehr gutes Buch, das nicht nur elementare Algorithmen und Datenstrukturen abdeckt, sondern auch Grundlagen der Programmierung. Die vorgestellten Algorithmen sind in der Algorithmenbeschreibungssprache Adele formuliert.

  • Ottman T., Widmayer P.: Algorithmen und Datenstrukturen. 5. Auflage, Spektrum Akademischer Verlag, 2012
    Ebenfalls gut zu lesen und auf dem neuesten Stand der Technik.

  • Saake, G., Sattler, K.-U.: Algorithmen und Datenstrukturen: Eine Einführung mit Java. 5. Auflage, dpunkt.verlag, 2013

  • Cormen, T.H., et al.: Algorithmen - Eine Einführung. 4. Auflage, De Gruyter Oldenbourg, 2013

  • Knuth D.E.: The Art of Computer Programming. 3rd edition, Addison-Wesley
    Volume 1: Fundamental Algorithms
    Volume 2: Seminumerical Algorithms
    Volume 3: Sorting and Searching

    Das wahrscheinlich vollständigste Werk zum Thema Algorithmen. Da es bereits 1968 erschienen ist, entspricht die verwendete Notation nicht mehr dem Stand der Technik. Die Breite und der mathematischen Tiefgang sind jedoch bisher unübertroffen. Dieses Werk kann in der Bibliothek entliehen werden.

Links

  • Visualisierung und Animation diverser Algorithmen: hier und hier.