Programmieren 2
Dieses Modul baut auf Programmieren 1 auf und geht in drei Bereichen in die Tiefe: Programmieren auf höheren Abstraktionsstufen, dynamische Datenstrukturen und Umgang mit komplexen Bibliotheken und Frameworks. Inhalte:
- Generische Programmierung: von dynamischer Typisierung zu Typparametern
- Callbacks, Funktionstypen, Lambda-Ausdrücke, Higher-Order Functions
- Von Enumerations zu algebraischen Datentypen und Pattern Matching
- Implementation von dynamischen Datenstrukturen und einfachen Algorithmen: verkettete Listen, Bäume, Graphen
- Anwendungen von Vererbung (z. B. in GUI- oder Collections-Frameworks)
- Ausnahmebehandlung
- Aufbau und Verwendung von komplexen Bibliotheken und Frameworks
- Die Studierenden kennen Vor- und Nachteile von statisch gegenüber dynamisch typisierten Sprachen und können Techniken anwenden, um mit den jeweiligen Nachteilen umzugehen.
- Die Studierenden sind in der Lage, generische Programmbausteine zu verstehen, sinnvoll einzusetzen und zu einem gewissen Grad selbst zu entwickeln.
- Die Studierenden verstehen insbesondere die Konzepte eines generischen Collection-Frameworks, verstehen zentrale Eigenschaften und Implementationsaspekte wichtiger Collections und können solche gewinnbringend einsetzen.
- Die Studierenden verstehen Nutzen und Risiken von Vererbung, kennen Alternativen dazu und können das Konzept bedacht einsetzen.
- Die Studierenden kennen das Konzept von algebraischen Datentypen (Produkt- und Summe-Typen) und können eigene solche Typen entwerfen, implementieren und sinnvoll verwenden.
- Die Studierenden können sich selbstständig in komplexe Libraries und Frameworks einarbeiten und diese zur effektiven Entwicklung eigener Applikationen verwenden.