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.

2020S, VU, 2.0h, 3.0EC, wird geblockt abgehalten
Diese Lehrveranstaltung wird nach dem neuen Modus evaluiert. Mehr erfahren

LVA-Bewertung

Merkmale

  • Semesterwochenstunden: 2.0
  • ECTS: 3.0
  • Typ: VU Vorlesung mit Übung

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 von Eigenschaften (Korrektheit, Terminierung,...) 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 2019/2020.
    • 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: Durch Vorträge und umgekehrtes Klassenzimmer angeleitetes eigenständiges Erlernen und Einüben der in den Lernergebnissen beschriebenen Fähigkeiten mithilfe zur Verfügung 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: 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: Tests zur regelmäßigen Seibsteinschätzung und Selbstreflexion des bisherigen eigenen Lernfortschritts und Lernerfolgs.

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 (21.0h)
    • Vortrag: 7.0h (7 Einheiten * 1.0h)
    • Umgekehrtes Klassenzimmer: 3.5h (7 Einheiten * 0.5h)
    • Übungsgruppen: 10.5h (7 Einheiten * 1.5h)
  • Eigenständige Lernaktivitäten (53.5h)
    • Selbstständiges Erarbeiten von Lernergebnissen: 28.0h (Vorschlag: 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.5h (Vorschlag: 7 Angaben * 3.5h)
    • Vorbereitung auf die mündliche Prüfung: 1.0h
  • Mündliche Prüfung: 0.5h

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

Vortragende

Institut

LVA Termine

TagZeitDatumOrtBeschreibung
Do.16:00 - 18:0005.03.2020 - 12.03.2020Seminarraum Argentinierstrasse LVA 185.A05 Fortgeschrittene funktionale Programmierung
Fortgeschrittene funktionale Programmierung - Einzeltermine
TagDatumZeitOrtBeschreibung
Do.05.03.202016:00 - 18:00Seminarraum Argentinierstrasse LVA 185.A05 Fortgeschrittene funktionale Programmierung
Do.12.03.202016:00 - 18:00Seminarraum Argentinierstrasse LVA 185.A05 Fortgeschrittene funktionale Programmierung
LVA wird geblockt abgehalten

Leistungsnachweis

  • Sieben beurteilte Abgaben programmiertechnischer Übungsaufgaben.
  • Eine beurteilte 30-minütige mündliche Prüfung über Vorlesungs- und Übungsstoff.

LVA-Anmeldung

Von Bis Abmeldung bis
31.01.2020 01:00 12.03.2020 12:00 31.03.2020 12:00

Gruppen-Anmeldung

GruppeAnmeldung VonBis
FFP 105.03.2020 01:0013.03.2020 12:00
FFP 205.03.2020 01:0013.03.2020 12:00
FFP 305.03.2020 01:0013.03.2020 12:00
FFP 405.03.2020 01:0013.03.2020 12:00
FFP 505.03.2020 01:0013.03.2020 12:00
FFP 605.03.2020 01:0013.03.2020 12:00
FFP 705.03.2020 01:0013.03.2020 12:00
FFP 805.03.2020 01:0013.03.2020 12:00
FFP 905.03.2020 01:0013.03.2020 12:00
FFP 1005.03.2020 01:0013.03.2020 12:00
FFP 1105.03.2020 01:0013.03.2020 12:00
FFP 1205.03.2020 01:0013.03.2020 12:00
FFP 1305.03.2020 01:0013.03.2020 12:00
FFP 1405.03.2020 01:0013.03.2020 12:00
FFP 1505.03.2020 01:0013.03.2020 12:00
FFP 1605.03.2020 01:0013.03.2020 12:00
FFP 1705.03.2020 01:0013.03.2020 12:00
FFP 1805.03.2020 01:0013.03.2020 12:00
FFP 1905.03.2020 01:0013.03.2020 12:00
FFP 2005.03.2020 01:0013.03.2020 12:00
FFP 2105.03.2020 01:0013.03.2020 12:00
FFP 2205.03.2020 01:0013.03.2020 12:00
FFP 2305.03.2020 01:0013.03.2020 12:00
FFP 2405.03.2020 01:0013.03.2020 12:00
FFP 2505.03.2020 01:0013.03.2020 12:00
FFP 2605.03.2020 01:0013.03.2020 12:00
FFP 2705.03.2020 01:0013.03.2020 12:00
FFP 2805.03.2020 01:0013.03.2020 12:00
FFP 2905.03.2020 01:0013.03.2020 12:00
FFP 3005.03.2020 01:0013.03.2020 12:00
FFP 3105.03.2020 01:0013.03.2020 12:00
FFP 3205.03.2020 01:0013.03.2020 12:00
FFP 3305.03.2020 01:0013.03.2020 12:00
FFP 3405.03.2020 01:0013.03.2020 12:00
FFP 3505.03.2020 01:0013.03.2020 12:00
FFP 3605.03.2020 01:0013.03.2020 12:00
FFP 3705.03.2020 01:0013.03.2020 12:00
FFP 3805.03.2020 01:0013.03.2020 12:00
FFP 3905.03.2020 01:0013.03.2020 12:00
FFP 4005.03.2020 01:0013.03.2020 12:00

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