PI5512 Fortgeschrittene Funktionale Programmierung

Modulverantwortliche
  • Prof. Dr. Uwe Meyer
Lehrende
  • Björn Lötters
  • Prof. Dr. Uwe Meyer
Notwendige Voraussetzungen zur Teilnahme

Keine

Empfohlene Voraussetzungen zur Teilnahme

Grundlegendes Wissen über die Strukturierung und Programmierung mithilfe von Lambdas bzw. Funktionen

Kurzbeschreibung

Das Modul vermittelt fortgeschrittene Konzepte aus der funktionalen Programmierung. Die Studierenden lernen diese Konzepte in praxisnahen Softwareprojekten einzusetzen.

Inhalte
  • Formalismen: Kalküle und Typsysteme
  • Higher-Order Konzepte
  • Polymorphismen und Typabstraktion
  • Gängige Abstraktionen (bspw. Funktoren und Monaden)
  • Funktionale Design-Patterns
  • Monadentransformer
  • Effekte
Qualifikations- und Lernziele

Fachkompetenzen

  • Die Studierenden sind in der Lage, sowohl grundlegende als auch fortgeschrittene Konzepte der funktionalen Programmierung zu interpretieren und auf ihren Einsatz hin zu beurteilen.
  • Sie können den Zusammenhang der relevantesten Formalismen erklären und die theoretischen Grundlagen auch auf neue Domänen übertragen.
  • Sie sind in der Lage, wichtige funktionale Muster und Abstraktionen wie bspw. Funktoren und Monaden zu definieren, sie auf ihre Anwendbarkeit hin zu untersuchen und ihren Einsatz zu evaluieren.

Methodenkompetenzen (fachlich & überfachlich)

  • Die Studierenden können eine Implementierung hinsichtlich ihrer konkreten Details analysieren und unter Einsatz des funktionalen Paradigmas abstrahieren.
  • Sie können komplexe strukturelle und funktionale Problemstellungen analysieren sowie Lösungen unter Zuhilfenahme des funktionalen Paradigmas synthetisieren.
  • Sie können die gelernten Lösungsstrategien auf andere Domänen unter Zuhilfenahme anderer Paradigmen anwenden.
  • Sie sind in der Lage, Projekte eigenständig durchzuführen und über den Projektverlauf kritisch zu reflektieren.

Sozialkompetenzen

  • Die Studierenden können sich auf Basis ihrer theoretischen Kenntnisse eine eigene Meinung zu natur- und strukturwissenschaftlichen Problemen bilden.
  • Sie können Aufgaben und Projekte in Gruppen gemeinsam konstruktiv lösen und sich dabei gegenseitig unterstützen.
  • Sie können Lösungsvorschläge für fachliche Problemstellungen argumentativ sachlich vertreten.

Selbstkompetenzen

  • Die Studierenden können eigenständig, selbstmotiviert und kritisch denkend Lösungsansätze für strukturelle, funktionale Problemstellungen entwickeln.
  • Sie können Lösungen konzentriert, genau und zielgerichtet erarbeiten.
ECTS-Leistungspunkte (CrP)
  • 6 CrP
  • Arbeitsaufwand 180 Std.
  • Präsenzzeit 60 Std.
  • Selbststudium 120 Std.
Lehr- und Lernformen
  • 4 SWS
  • Seminar 2 SWS
  • Praktikum 2 SWS
Studiensemester
  • Informatik (M.Sc. 2022)
Dauer
1 Semester
Häufigkeit des Angebots
Nach Bedarf
Unterrichtssprache
Deutsch
Bonuspunkte

Ja

Bonuspunkte werden gemäß § 9 (4) der Allgemeinen Bestimmungen vergeben. Art und Weise der Zusatzleistungen wird den Studierenden zu Veranstaltungsbeginn rechtzeitig und in geeigneter Art und Weise mitgeteilt.

Prüfungsleistungen

Prüfungsvorleistung: Projekt oder Hausübungen (Art und Umfang wird den Studierenden rechtzeitig und in geeigneter Weise bekannt gegeben.)

Prüfungsleistung: Klausur, mündliche Prüfung oder Entwicklung in der Informatik (Art des Leistungsnachweises wird den Studierenden rechtzeitig und in geeigneter Weise bekannt gegeben.)

Benotung
Die Bewertung des Moduls erfolgt gemäß §§ 9, ggf. 12 (Teilleistungen), ggf. 18 (Arbeiten, Kolloquien) der Allgemeinen Bestimmungen (Teil I der Prüfungsordnung).
Verwendbarkeit
Gemäß § 5 der Allgemeinen Bestimmungen (Teil I der Prüfungsordnung) Verwendbarkeit in allen Masterstudiengänge der THM möglich.
Literatur, Medien
  • Pierce, B. C.: Types and Programming Languages. The MIT Press.
  • Harper, R.: Practical Foundations for Programming Languages. Cambridge University Press.
  • Abelson, H.; Sussman, G. J.; Sussman, J.: Structure and Interpretation of Computer Programs. The MIT Press.

Rechtliche Hinweise