SWS |
4 |
ECTS |
5 |
Sprache(n) |
Deutsch
(Standard)
Englisch
|
Lehrform |
SU mit Praktikum |
Angebot |
nach Ankündigung |
Aufwand |
Präsenzstudium: ca. 60 Std., Eigenstudium: ca. 90 Std. |
Voraussetzungen |
Softwareentwicklung I (IF-I-B-104), Softwareentwicklung II (IF-I-B-204). |
Ziele |
LERNZIELE (Welche Kenntnisse vermittelt die Veranstaltung?)
Die Studierenden lernen die Konzepte der funktionalen Programmierung anhand der Programmiersprache Haskell kennen und anwenden, um sie in ihrer späteren beruflichen Tätigkeit in einer funktionalen Sprache oder im Rahmen einer imperativen Sprache mit funktionalen Anteilen sinnvoll anwenden zu können.
FACH- & METHODENKOMPETENZ (Was erlernen die Studierenden, was können sie im Anschluss anwenden, analysieren, evaluieren, kreieren?)
Die Studierenden sind in der Lage,
- die Konzepte der funktionalen Programmierung zu erläutern,
- Programme in der rein funktionalen Programmiersprache zu implementieren,
- funktionaler Konzepte in Mainstream-Programmiersprachen zu erkennen und sinnvoll zu nutzen und
- funktionaler Konzepte zur parallelen und nebenläufigen Programmierung aufzuzählen.
Die Studierenden beherrschen fortgeschrittene Techniken der funktionalen Programmierung mit Haskell, können anspruchsvolle Programme eigenständig entwerfen, implementieren, testen und dokumentieren sowie im Team ein größeres Softwareprojekt realisieren.
ÜBERFACHLICHE KOMPETENZ (Was erfahren und erlernen die Studierenden über das Fachliche hinaus?)
Teamarbeit: Die Studierenden entwickeln ein Anwendungsprogramm in Haskell in Kleingruppen. |
Inhalt |
-
Grundlagen der funktionalen Programmierung:
Einführung in Paradigmen, Sprachphilosophie und Typsystem von Haskell, Unterschiede zu imperativen Sprachen.
-
Funktionen und Typen:
Funktionsdefinitionen, Currying, Pattern Matching, Guards, einfache und zusammengesetzte Datentypen, Typklassen und polymorphe Funktionen.
-
Rekursion und höhere Funktionen:
Rekursive Programmierung, Funktionen höherer Ordnung (z. B. map, fold), eigene Typklassen und Instanzen.
-
Algebraische Datentypen:
Definition und Anwendung von Summentypen, Produkttypen und Generalized Algebraic Data Types (GADTs).
-
Fortgeschrittene Typkonzepte:
Functor, Applicative, Monaden, Monaden-Transformer, existenzielle Typen und Typfamilien.
-
Effektmanagement und Nebenläufigkeit:
IO-Monade, Fehlerbehandlung mit Maybe/Either, Nebenläufigkeit und parallele Programmierung (Threads, MVar, STM, parallel library).
-
Testen und Debugging:
Testframeworks (HUnit, QuickCheck), Property-Based Testing, Debugging- und Profiling-Tools.
-
Effizientes und modulares Programmieren:
Best Practices für größere Haskell-Projekte, Nutzung gängiger Bibliotheken (z. B. Lens, Aeson), Modularisierung, Wiederverwendbarkeit.
-
Performance und Optimierung:
Lazy Evaluation, Strictness, Speicheroptimierung, Profiling und Optimierungstechniken.
-
Professionelle Dokumentation und API-Design:
Dokumentation mit Haddock, Gestaltung verständlicher und wartbarer Schnittstellen, Exportlisten, Dokumentationsstandards.
-
Projektarbeit:
Entwicklung einer eigenen Haskell-Anwendung in Gruppenarbeit, regelmäßige Zwischenpräsentationen, Abschlusspräsentation und schriftliche Dokumentation.
|
Medien und Methoden |
Beamer, Livecoding, GitLab, (Zwischen-)Präsentationen, Feedback |
Literatur |
- Brian O'Sullivan et al., Real World Haskell, O'Reilly, 2008. Online verfügbar unter: http://book.realworldhaskell.org/read/
- Miran Lipavaca, Learn You a Haskell for Great Good!, No Starch Press, 2011. Online verfügbar unter http://learnyouahaskell.com/chapters
- Peter Pepper & Petra Hofstedt, Funktionale Programmierung, Springer. 2006.
|
Zuordnungen Curricula |
SPO |
Fachgruppe |
Code |
ab Semester |
Prüfungsleistungen |
IB Version 2010 |
FWP |
07-IF-B-F51-07-WT-B-951-55-140 |
6 |
benotete Modularbeit (40%)
benotete mündliche Prüfung (60%)
|
IF Version 2019 |
FWP |
07-IF-B-F51 |
6 |
benotete Modularbeit (40%)
benotete mündliche Prüfung (60%)
|
IF Version 2023 |
FWP |
07-IF-B-F51 |
6 |
benotete Modularbeit (40%)
benotete mündliche Prüfung (60%)
|
WD Version 2022 |
FWP |
07-IF-B-F51-07-WT-B-951-55-140 |
6 |
benotete Modularbeit (40%)
benotete mündliche Prüfung (60%)
|
WT Version 2022 |
FWP |
07-IF-B-F51-07-WT-B-951-55-140 |
6 |
benotete Modularbeit (40%)
benotete mündliche Prüfung (60%)
|
|