Lernziele
- Typische Datenstrukturen identifizieren und problemadäquat einsetzen können.
- Datenstrukturen und Algorithmen in Java umsetzen können.
- Wesentliche Algorithmen der Informatik erklären, anwenden und modifizieren können.
- Algorithmische Alternativen bezüglich der Eignung für ein Problem beurteilen können.
- Grundbegriffe der formalen Verifikation erläutern können.
- Die Komplexität von einfachen Algorithmen analysieren können.
- In Gruppen Probleme analysieren und gemeinsam Lösungsstrategien entwickeln und präsentieren können.
Die Vorlesungen Praktische Informatik 1 und 2 vermitteln essenzielles Grundwissen und Basisfähigkeiten, deren Beherrschung für nahezu jede vertiefte Beschäftigung mit Informatik – sowohl in der industriellen Anwendung, als auch in der Forschung – Voraussetzung ist.
Lerninhalte
- Komplexität von Algorithmen – O(n)-Notation und asymptotische Analyse
- Suchen und Sortieren auf Arrays: Binäre Suche – Quicksort und weitere Sortieralgorithmen – Komplexitätsvergleiche
- Mengen – Bags – Multimengen – Relationen – Funktionen: Datenstrukturen und Algorithmen zur Realisierung kanonischer Operationen (z.B. Mengenalgebra)
- Listen – Stapel – Warteschlangen: Datenstrukturen zur Realisierung (Arrays versus Verkettung und dynamische Speicherallokation für Elemente), Algorithmen zur Realisierung kanonischer Operationen (Listentraversion, Anfügen, Einfügen, Löschen, Suchen, Stack-Operationen, FIFO-Warteschlangenoperationen)
- Bäume: Binäre Bäume, AVL-Bäume, Rot-Schwarz-Bäume, B-Bäume – Suchen, Einfügen, Löschen, Traversion
- Hashing: Hash-Array, Hashfunktion, Hash Buckets, offenes Hashing
- Graphen: ungerichtete, gerichtete, gewichtete Graphen – Repräsentation durch Knoten- und Kantenlisten, durch Adjazenzmatrizen, Adjazenzlisten – Algorithmen auf Graphen: Breitensuche, Tiefensuche, Topologische Sortierung, kürzeste Wege auf gewichteten Graphen: Dijkstras Algorithmus, Maximaler Durchfluss, Realisierung markierter Transitionssysteme mit Graphen
- Algorithmen zur Syntaxprüfung: Tokenizer und Parser – systematische ParserGenerierung aus EBNF-Grammatiken
- Textsuche: Knuth-Morris-Pratt – Boyer-Moore – Pattern Matching für reguläre Ausdrücke
- Spezifikation von Programmen: Vor- und Nachbedingungen – Invarianten
- Verifikation: Partielle und totale Korrektheit sequenzieller Programme – Formale Verifikation, z.B. Hoare Logik (Pre-/Postconditions) – Eigenschaftsbeweis durch Strukturelle Induktion
|
Dokumente (Skripte, Programme, Literatur, usw.)
- G. Saake und K.-U. Sattler: Algorithmen und Datenstrukturen. dpunkt.verlag, Heidelberg (2004)
- R. Schiedermeier: Programmieren mit Java. Pearson, München (2005)
Weitere Informationen (Beispielprogramme, Musterlösungen, im WWW verfügbare Literatur) sind auf der Web-Seite der Veranstaltung zu finden.
|