185.A05 Fortgeschrittene funktionale Programmierung
Diese Lehrveranstaltung ist in allen zugeordneten Curricula Teil der STEOP.
Diese Lehrveranstaltung ist in mindestens einem zugeordneten Curriculum Teil der STEOP.

2022S, VU, 2.0h, 3.0EC, wird geblockt abgehalten

Merkmale

  • Semesterwochenstunden: 2.0
  • ECTS: 3.0
  • Typ: VU Vorlesung mit Übung
  • Format der Abhaltung: Hybrid

Lernergebnisse

Nach positiver Absolvierung der Lehrveranstaltung sind Studierende in der Lage (u.a.)

  • fortgeschrittene Prinzipien und Konzepte funktionaler Programmierung zu beschreiben und erläutern und in praktischen Anwendungen zu demonstrieren.
  • die theoretischen und praktischen Grundlagen funktionaler Programmierung zu erläutern und sie zur Verifikation und Validation der Korrektheit funktionaler Programme anzuwenden.
  • die Möglichkeiten und Grenzen eines (rein) funktionalen Programmierstils anzugeben, zu demonstrieren und bewerten.
  • Programmieraufgaben kleiner bis mittlerer Größe und Komplexität mithilfe grundlegender und fortgeschrittener Konzepte und Prinzipien funktionaler Programmierung sachlich und fachlich angemessen zu lösen.

Inhalt der Lehrveranstaltung

Die Lehrveranstaltung vermittelt in Theorie und Praxis
fortgeschrittene Konzepte und Prinzipien funktionaler Programmierung
und ihre Anwendung. Die Vorlesung spannt dabei den Bogen von
funktionalen Programmierprinzipien über Qualitätssicherung und
fortgeschrittene Sprachkonzepte bis hin zu Anwendungen. Regelmäßig
gestellte Aufgaben im Übungsteil zu Problemstellungen passender Art,
Größe und Schwierigkeit erlauben die vorgestellten Konzepte und
Prinzipien unmittelbar und kontinuierlich praktisch zu erproben und
anzuwenden und führen so zu einem profunden theoretischen und
praktischen Verständnis der vorgestellten Konzepte und Prinzipien.

 Teil I: Motivation

  • Warum funktionale Programmierung wichtig ist

Teil II: Programmierprinzipien

  • Programmieren mit Strömen
  • Programmieren mit Funktionen höherer Ordnung
  • Gleichungsbasiertes Rechnen mit Programmen
  • Funktionale Perlen

Teil III: Qualitätssicherung

  • Testen
  • Verifikation

Teil IV: Fortgeschrittene Sprachkonzepte

  • Abstrakte Datentypen
  • Funktionale Felder
  • Monoide
  • Funktoren
  • Applikative
  • Monaden
  • Pfeile

Teil V: Anwendungen

  • Parsing
  • Logische Programmierung funktional
  • Pretty Printing
  • Funktionale reaktive Programmierung

Teil VI: Erweiterungen und Ausblick

  • Erweiterungen für Parallelität und `Real World'-Programmierung
  • Abschluss und Ausblick

Literaturverzeichnis

Anhang

  • Mathematische Grundlagen

Ausgewählte Leseempfehlungen

  • Grundlegend
    • Jens Knoop. Slides and companion material of the course `LVA 185.A03 Funktionale Programmierung.' Compilers and Languages Group, TU Wien, WS 21.
    • Simon Thompson. Haskell: The Craft of Functional Programming. Addison-Wesley/Pearson, 3. Auflage 2011.
    • Richard Bird. Thinking Functionally with Haskell. Cambridge University Press, 2015.
    • Greg Michaelson. An Introduction to Functional Programming through Lambda Calculus. Dover Publications, 2. Auflage, 2011.
    • Peter Pepper, Petra Hofstedt. Funktionale Programmierung: Sprachdesign und Programmiertechnik. Springer-V., 2006.
    • Simon Peyton Jones (Hrsg.). Haskell 98: Language and Libraries. The Revised Report. Cambridge University Press, 2003.
  • Fortgeschritten
    • Jeremy Gibbons, Oege de Moor (Hrsg.). The Fun of Programming. Palgrave Macmillan, 2003.
    • Bryan O'Sullivan, John Goerzen, Don Stewart. Real World Haskell. O'Reilly, 2008.
    • Tomas Petricek, Jon Skeet. Real World Functional Programming: With Examples in F# and C#. Manning Publications Co., 2009.
    • Chris Okasaki. Purely Functional Data Structures. Cambridge University Press, 1999.
    • Aaron Stump. Verified Functional Programming in Agda. ACM Books Series, No. 9, 2016.
    • Lectures on `Advanced Functional Programming.' International Summer Schools 1995, 1996, 1998, 2002; Springer-V., LNCS volumes 925, 1129, 1608, 2638.

Methoden

  1. Angeleitetes eigenständiges Erlernen und Einüben (ausschließlich online): Durch Vorträge und umgekehrtes Klassenzimmer angeleitetes eigenständiges Erlernen und Einüben der in den Lernergebnissen beschriebenen Fähigkeiten mithilfe bereit gestellter Lehr- und Lernunterlagen, Übungsaufgaben und weiterer nach Bedarf selbstgewählter Materialien aus ergänzend und vertiefend vorgeschlagenen Lehrbüchern, Tutorien und wissenschaftlichen Originalarbeiten.
  2. Vorbild- und rückmeldungsgeleitetes Lernen (ausschließlich online): Präsentieren, erläutern, begründen, vergleichen, wertend gegenüberstellen eigener und fremder Aufgabenlösungen aus sachlicher und fachlicher Sicht in tutorgeleiteten Übungsgruppen.
  3. Selbsteinschätzungstests (online und offline, ohne physische Präsenz): Tests zur regelmäßigen Selbsteinschätzung und Selbstreflexion des bisherigen eigenen Lernfortschritts und Lernerfolgs; zusätzliche Leit- und Kontrollfragen.

Prüfungsmodus

Prüfungsimmanent

Weitere Informationen

Die Lehrveranstaltung findet grundsätzlich in Präsenz statt.  Sollte dies im Lauf des Semesters aufgrund erneuter COVID-19 Beschränkungen nicht oder nicht länger möglich sein, werden die Veranstaltung und die zugehörigen Übungen online (Zoom) in Form von Echtzeitvideokonferenzen fortgeführt, damit auch im Fall einer solchen Umstellung die Vorteile der Unmittelbarkeit von Präsenzveranstaltungen möglichst umfassend erhalten bleiben.

Aufteilung der ECTS-Punkte:

Der Lehrveranstaltung sind 3.0 ECTS-Punkte zugeordnet. Diese
entsprechen einem durchschnittlichen Lernaufwand von 75
Stunden. Dieser durchschnittliche Lernaufwand verteilt sich in
folgender Weise auf die einzelnen Lernaktivitäten der Lehrveranstaltung
(die Angaben Teil I bis Teil VI beziehen sich auf die entsprechenden Teile
der Lehrveranstaltungsunterlagen):

  • Angeleitete Lernaktivitäten (ausschließlich online, 17.5h)
    • Vortrag: 7.0h (7 Einheiten * 1.0h)
    • Umgekehrtes Klassenzimmer: 3.5h (7 Einheiten * 0.5h)
    • Übungsgruppen: 7.0h (7 Einheiten * 1.0h)
  • Eigenständige Lernaktivitäten (Home Universitying, 56.5h)
    • Selbstständiges Erarbeiten von Lernergebnissen: 28.0h (Richtwert: Teil I/1.0h, Teil II/6.0h, Teil III/6.0h, Teil IV/7.0h, Teil V/7.0h, Teil VI/1.0h)
    • Speziell: Lösen der Übungsaufgaben: 24.0h (Richtwert: 4 Angaben * 3.0h, 1 Projekt * 15.5h)
    • Vorbereitung auf die Projektdemonstration und mündliche Prüfung: 1.0h
  • Projektdemonstration (aufgrund knapper Raumressource voraussichtlich ausschließlich online, Videopräsenz): 0.5h
  • Mündliche Prüfung (in Präsenz, wenn möglich; sonst online in Videopräsenz): 0.5h

Die Vorbesprechung und daran anschließend die erste Vorlesung finden statt am Donnerstag, den 03.03.2022, von 16:15 Uhr bis 17:45 Uhr, EI 4 Reithoffer HS.

Vortragende Personen

Institut

LVA Termine

TagZeitDatumOrtBeschreibung
Do.16:00 - 18:0003.03.2022 - 09.06.2022EI 4 Reithoffer HS 185.A05 Fortgeschrittene funktionale Programmierung
Fr.11:00 - 12:0008.04.2022 - 10.06.2022Seminarraum FAV 01 B (Seminarraum 187/2) LVA 185.A05 Fortgeschrittene funktionale Programmierung (Übung)
Fortgeschrittene funktionale Programmierung - Einzeltermine
TagDatumZeitOrtBeschreibung
Do.03.03.202216:00 - 18:00EI 4 Reithoffer HS 185.A05 Fortgeschrittene funktionale Programmierung
Do.10.03.202216:00 - 18:00EI 4 Reithoffer HS 185.A05 Fortgeschrittene funktionale Programmierung
Do.17.03.202216:00 - 18:00EI 4 Reithoffer HS 185.A05 Fortgeschrittene funktionale Programmierung
Do.24.03.202216:00 - 18:00EI 4 Reithoffer HS 185.A05 Fortgeschrittene funktionale Programmierung
Do.31.03.202216:00 - 18:00EI 4 Reithoffer HS 185.A05 Fortgeschrittene funktionale Programmierung
Do.07.04.202216:00 - 18:00EI 4 Reithoffer HS 185.A05 Fortgeschrittene funktionale Programmierung
Fr.08.04.202211:00 - 12:00Seminarraum FAV 01 B (Seminarraum 187/2) LVA 185.A05 Fortgeschrittene funktionale Programmierung (Übung)
Do.28.04.202216:00 - 18:00EI 4 Reithoffer HS 185.A05 Fortgeschrittene funktionale Programmierung
Fr.29.04.202211:00 - 12:00Seminarraum FAV 01 B (Seminarraum 187/2) LVA 185.A05 Fortgeschrittene funktionale Programmierung (Übung)
Do.05.05.202216:00 - 18:00EI 4 Reithoffer HS 185.A05 Fortgeschrittene funktionale Programmierung
Fr.06.05.202211:00 - 12:00Seminarraum FAV 01 B (Seminarraum 187/2) LVA 185.A05 Fortgeschrittene funktionale Programmierung (Übung)
Do.12.05.202216:00 - 18:00EI 4 Reithoffer HS 185.A05 Fortgeschrittene funktionale Programmierung
Fr.13.05.202211:00 - 12:00Seminarraum FAV 01 B (Seminarraum 187/2) LVA 185.A05 Fortgeschrittene funktionale Programmierung (Übung)
Do.19.05.202216:00 - 18:00EI 4 Reithoffer HS 185.A05 Fortgeschrittene funktionale Programmierung
Fr.20.05.202211:00 - 12:00Seminarraum FAV 01 B (Seminarraum 187/2) LVA 185.A05 Fortgeschrittene funktionale Programmierung (Übung)
Do.02.06.202216:00 - 18:00EI 4 Reithoffer HS 185.A05 Fortgeschrittene funktionale Programmierung
Fr.03.06.202211:00 - 12:00Seminarraum FAV 01 B (Seminarraum 187/2) LVA 185.A05 Fortgeschrittene funktionale Programmierung (Übung)
Do.09.06.202216:00 - 18:00EI 4 Reithoffer HS 185.A05 Fortgeschrittene funktionale Programmierung
Fr.10.06.202211:00 - 12:00Seminarraum FAV 01 B (Seminarraum 187/2) LVA 185.A05 Fortgeschrittene funktionale Programmierung (Übung)
LVA wird geblockt abgehalten

Leistungsnachweis

  • Online/offline, ohne physische Präsenz: Vier beurteilte Abgaben (kleinerer) programmiertechnischer Übungsaufgaben.
  • Online, Videopräsenz: Eine beurteilte Abgabe und Demonstration einer (größeren) programmiertechnischen Projektaufgabe.
  • Online, Videopräsenz: Eine beurteilte 30-minütige mündliche Prüfung über Vorlesungs- und Übungsstoff (beiderseitiges Einverständnis vorausgesetzt, kann dieser Prüfungsteil durch eine entsprechende Präsenzprüfung ersetzt werden, sollten die jeweils geltenden COVID-Regelungen dies zulassen).

Weitere beurteilte Leistungsnachweise gibt es nicht.

Erforderliche technische Voraussetzungen: Stabiler Internetanschluss, internetfähiges Endgerät mit Audio/Video-Empfang und Übertragung.

LVA-Anmeldung

Von Bis Abmeldung bis
01.02.2022 01:00 11.03.2022 12:00 25.03.2022 12:00

Gruppen-Anmeldung

GruppeAnmeldung VonBis
FFP 103.03.2022 01:0011.03.2022 12:00
FFP 203.03.2022 01:0011.03.2022 12:00
FFP 303.03.2022 01:0011.03.2022 12:00
FFP 403.03.2022 01:0011.03.2022 12:00
FFP 503.03.2022 01:0011.03.2022 12:00
FFP 603.03.2022 01:0011.03.2022 12:00
FFP 703.03.2022 01:0011.03.2022 12:00
FFP 803.03.2022 01:0011.03.2022 12:00
FFP 903.03.2022 01:0011.03.2022 12:00
FFP 1003.03.2022 01:0011.03.2022 12:00
FFP 1103.03.2022 01:0011.03.2022 12:00
FFP 1203.03.2022 01:0011.03.2022 12:00
FFP 1303.03.2022 01:0011.03.2022 12:00
FFP 1403.03.2022 01:0011.03.2022 12:00
FFP 1503.03.2022 01:0011.03.2022 12:00
FFP 1603.03.2022 01:0011.03.2022 12:00
FFP 1703.03.2022 01:0011.03.2022 12:00
FFP 1803.03.2022 01:0011.03.2022 12:00
FFP 1903.03.2022 01:0011.03.2022 12:00
FFP 2003.03.2022 01:0011.03.2022 12:00
FFP 2103.03.2022 01:0011.03.2022 12:00
FFP 2203.03.2022 01:0011.03.2022 12:00
FFP 2303.03.2022 01:0011.03.2022 12:00
FFP 2403.03.2022 01:0011.03.2022 12:00
FFP 2503.03.2022 01:0011.03.2022 12:00
FFP 2603.03.2022 01:0011.03.2022 12:00
FFP 2703.03.2022 01:0011.03.2022 12:00
FFP 2803.03.2022 01:0011.03.2022 12:00
FFP 2903.03.2022 01:0011.03.2022 12:00
FFP 3003.03.2022 01:0011.03.2022 12:00
FFP 3103.03.2022 01:0011.03.2022 12:00
FFP 3203.03.2022 01:0011.03.2022 12:00
FFP 3303.03.2022 01:0011.03.2022 12:00
FFP 3403.03.2022 01:0011.03.2022 12:00
FFP 3503.03.2022 01:0011.03.2022 12:00
FFP 3603.03.2022 01:0011.03.2022 12:00
FFP 3703.03.2022 01:0011.03.2022 12:00
FFP 3803.03.2022 01:0011.03.2022 12:00
FFP 3903.03.2022 01:0011.03.2022 12:00
FFP 4003.03.2022 01:0011.03.2022 12:00
Tutorial Group 1 (Fri, 11-12am)28.03.2022 16:0006.04.2022 22:59
Tutorial Group 2 (Fri, 11-12am)28.03.2022 16:0006.04.2022 22:59

Curricula

StudienkennzahlVerbindlichkeitSemesterAnm.Bed.Info
066 931 Logic and Computation Gebundenes Wahlfach
066 937 Software Engineering & Internet Computing Gebundenes Wahlfach

Literatur

Es wird kein Skriptum zur Lehrveranstaltung angeboten.

Vorkenntnisse

Grundlegende Kenntnisse des funktionalen Programmierparadigmas wie
etwa im Rahmen der Lehrveranstaltung LVA 185.A03 "Funkionale
Programmierung" vermittelt, werden vorausgesetzt.

Vorausgehende Lehrveranstaltungen

Begleitende Lehrveranstaltungen

Weitere Informationen

Sprache

bei Bedarf in Englisch