Lernziele
- Grundlegende Konzepte der objektorientierten Programmierung kennen, verstehen und anwenden können.
- Anschauliche Sachverhalte im Modell der Objektorientierung ausdrücken können.
- Eine einfache Entwicklungsumgebung nutzen können.
- LaTeX zur Erstellung einfacher Dokumente nutzen können.
- Versionsverwaltungssysteme verstehen und einsetzen können.
- Datenstrukturen und Algorithmen in Java umsetzen können
- Fehler unter Einsatz eines einfachen Debuggers finden können.
- Einfache Komponententests zur Qualitätssicherung erstellen und durchführen können.
- Ein Softwaredokumentationswerkzeug verwenden können.
- Typische Datenstrukturen identifizieren und problemadäquat einsetzen 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.
- Die Komplexität von einfachen Algorithmen analysieren können.
- In Gruppen Probleme analysieren und gemeinsam Lösungsstrategien entwickeln und präsentieren können.
Lerninhalte
-
Prinzipien der objektorientierten Programmierung: Geheimnisprinzip – Methoden – Operationen – Objekte – Klassen – Botschaften – Ereignisverarbeitung – Attribute – Vererbung – Polymorphismus – Überladung – Generische Datentypen – Interfaces
-
Datenstrukturen: Information und ihre Repräsentation – Datentypen und Typanalyse – Elementare und zusammengesetzte Datentypen – rekursive Datentypen
-
Fehlervermeidung: Exceptions
-
Dokumentation von Klassen, Methoden und Attributen
-
Automatisierte Komponententests
-
Fehlersuche (Debugging): Breakpoint – schrittweise Ausführung – Stacktrace
-
Umsetzung der Punkte 1.-6. mit Java, Javadoc und JUnit
-
Algorithmen: Begriff des Algorithmus – Beschreibung von Algorithmen – Algorithmische Umsetzung kanonischer Operationen auf Datenstrukturen – Grundlegende Strategien: Greedy, Divide-and-Conquer, Backtracking, dynamische Programmierung, zufallsgesteuerte Algorithmen, genetische Algorithmen, heuristische Algorithmen, probabilistische Algorithmen
-
Komplexität von Algorithmen – O(n)-Notation und asymptotische Analyse
-
Suchen und Sortieren auf Arrays: Binäre Suche – Quicksort und weitere Sortieralgorithmen – Komplexitätsvergleiche
-
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, kürzeste Wege auf gewichteten Graphen: Dijkstras Algorithmus, minimal aufspannende Bäume: Algorithmen von Prim et al. und Kruskal
Im Rahmen des Übungsbetriebes werden LaTeX und Versionskontrolle mittels Git eingeführt und verwendet.
Lehrveranstaltung(en):
- 03-B-MI-22.1 Objektorientierte Programmierung [OOP] (3 CP)
- 03-B-MI-22.2 Algorithmen und Datenstrukturen [AuD] (6 CP)
|
Prüfungsformen
KP; PL1: 30\%, PL2: 55\%, PL3: 15\% ; Klausur, Portfolio, Fachgespräch
|
Dokumente (Skripte, Programme, Literatur, usw.)
- David J. Barnes, Michael Kölling: Java lernen mit BlueJ - Objects first - Eine Einführung in Java. Aktuelle Auflage. Pearson Studium.
- Christian Ullenboom: Java ist auch eine Insel. Aktuelle Auflage. Rheinwerk Computing.
- Thomas Ottmann, Peter Widmayer: Algorithmen und Datenstrukturen. Aktuelle Auflage, Spektrum Akademischer Verlag.
- Robert Sedgewick, Robert Wayne: Algorithmen. Aktuelle Auflage. Pearson Studium.
- Markus von Rimscha: Algorithmen kompakt und verständlich. Aktuelle Auflabe. Springer Vieweg.
|