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.

2021S, VU, 2.0h, 3.0EC, wird geblockt abgehalten
Lecture TubeTUWEL

Merkmale

  • Semesterwochenstunden: 2.0
  • ECTS: 3.0
  • Typ: VU Vorlesung mit Übung
  • LectureTube Lehrveranstaltung
  • Format der Abhaltung: Distance Learning

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 2020/2021.
    • 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

Aufgrund geltender COVID-19 Beschränkungen und Weisungen von Rektorat und Studiendekanat vom 26.01.2021 und 30.01.2021 findet die Lehrveranstaltung 185.A05 Fortgeschrittene funktionale Programmierung im SS 2021 ausschließlich online statt. Die Vorteile der Unmittelbarkeit von Präsenzveranstaltungen sollen dabei möglichst umfassend erhalten bleiben. Die Veranstaltung findet deshalb in Form von Echtzeitvideokonferenzen statt.

  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

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 (ausschließlich online, Videopräsenz): 0.5h
  • Mündliche Prüfung (ausschließlich online, Videopräsenz): 0.5h

Die Vorbesprechung und daran anschließend die erste Vorlesung finden
statt am Donnerstag, den 04.03.2021, von 16:15 Uhr bis 18:00 Uhr (einschließlich einer 15min Pause) in Form einer Zoom-Konferenz. Der Zoom-Link ist am 01.03.2021 per TISS-Nachricht ausgesandt worden; er findet sich auch auf dem Lehrveranstaltungsnachrichtenbrett in TISS und im zugehörigen TUWEL-Kurs.

Vortragende Personen

Institut

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
29.01.2021 01:00 12.03.2021 12:00 26.03.2021 12:00

Gruppen-Anmeldung

GruppeAnmeldung VonBis
FFP 104.03.2021 01:0012.03.2021 12:00
FFP 204.03.2021 01:0012.03.2021 12:00
FFP 304.03.2021 01:0012.03.2021 12:00
FFP 404.03.2021 01:0012.03.2021 12:00
FFP 504.03.2021 01:0012.03.2021 12:00
FFP 604.03.2021 01:0012.03.2021 12:00
FFP 704.03.2021 01:0012.03.2021 12:00
FFP 804.03.2021 01:0012.03.2021 12:00
FFP 904.03.2021 01:0012.03.2021 12:00
FFP 1004.03.2021 01:0012.03.2021 12:00
FFP 1104.03.2021 01:0012.03.2021 12:00
FFP 1204.03.2021 01:0012.03.2021 12:00
FFP 1304.03.2021 01:0012.03.2021 12:00
FFP 1404.03.2021 01:0012.03.2021 12:00
FFP 1504.03.2021 01:0012.03.2021 12:00
FFP 1604.03.2021 01:0012.03.2021 12:00
FFP 1704.03.2021 01:0012.03.2021 12:00
FFP 1804.03.2021 01:0012.03.2021 12:00
FFP 1904.03.2021 01:0012.03.2021 12:00
FFP 2004.03.2021 01:0012.03.2021 12:00
FFP 2104.03.2021 01:0012.03.2021 12:00
FFP 2204.03.2021 01:0012.03.2021 12:00
FFP 2304.03.2021 01:0012.03.2021 12:00
FFP 2404.03.2021 01:0012.03.2021 12:00
FFP 2504.03.2021 01:0012.03.2021 12:00
FFP 2604.03.2021 01:0012.03.2021 12:00
FFP 2704.03.2021 01:0012.03.2021 12:00
FFP 2804.03.2021 01:0012.03.2021 12:00
FFP 2904.03.2021 01:0012.03.2021 12:00
FFP 3004.03.2021 01:0012.03.2021 12:00
FFP 3104.03.2021 01:0012.03.2021 12:00
FFP 3204.03.2021 01:0012.03.2021 12:00
FFP 3304.03.2021 01:0012.03.2021 12:00
FFP 3404.03.2021 01:0012.03.2021 12:00
FFP 3504.03.2021 01:0012.03.2021 12:00
FFP 3604.03.2021 01:0012.03.2021 12:00
FFP 3704.03.2021 01:0012.03.2021 12:00
FFP 3804.03.2021 01:0012.03.2021 12:00
FFP 3904.03.2021 01:0012.03.2021 12:00
FFP 4004.03.2021 01:0012.03.2021 12:00
Tutorial Group 1 (Fri, 11-12am)22.03.2021 16:0031.03.2021 23:59
Tutorial Group 2 (Fri, 11-12am)22.03.2021 16:0031.03.2021 23:59

Curricula

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