185.A03 Funktionale Programmierung
Diese Lehrveranstaltung ist in allen zugeordneten Curricula Teil der STEOP.
Diese Lehrveranstaltung ist in mindestens einem zugeordneten Curriculum Teil der STEOP.

2020W, VU, 2.0h, 3.0EC, wird geblockt abgehalten
TUWEL

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.)

  • die grundlegenden Prinzipien und Konzepte des funktionalen Programmierstils und seiner theoretischen Fundierung
    • zu erläutern und von anderen Programmierstilen wie prozeduraler, objektorientierter, logischer Programmierung abzugrenzen,
    • am Beispiel der funktionalen Programmiersprache Haskell aufzuzeigen und zu illustrieren.
  • programmiertechnische Aufgabenstellungen im Kleinen
    • in aufgabenangemessene Haskell-Programme umzusetzen,
    • aussagekräftige Testfälle für die Validierung dieser Programme zu erstellen,
    • die Programme mit einem Sprachinterpretierer wie GHCi oder Hugs auszuführen.
  • die Bedeutung und Auswertungsweise von Haskell-Programmen
    • zu erklären,
    • schrittweise mit Papier und Bleistift für verschiedene Auswertungsordnungen auszuführen. 
  • das gewählte programmier- und nichtprogrammiersprachliche Vorgehen sachlich und fachlich zu begründen.
  • Haskell-Programme auf syntaktische und semantische Korrektheit, Allgemeinheit, Wiederverwendbarkeit, Effizienz- und Performanzeigenschaften, angemessene Verwendung funktionaler programmiersprachlicher Konzepte zu untersuchen, beurteilen und wertend zu vergleichen.

 

Inhalt der Lehrveranstaltung

Die Vorlesung führt in Theorie und Praxis in die Prinzipien und
Konzepte des funktionalen Programmierstils ein und spannt dabei den
Bogen von den Grundlagen bis zur Anwendung. In den
vorlesungsbegleitenden Übungen wird am Beispiel
konkreter Aufgabenstellungen praktisch vorgeführt und diskutiert, wie
sich diese zur Lösung einsetzen lassen. Dabei sollen insbesondere auch
eigene Lösungsvorschläge vorgestellt und zur Diskussion gestellt
werden. Im Übungsteil wird der funktionale Programmierstil anhand von
Beispielen eigenständig angewendet und eingeübt und so ein vertieftes
theoretisches und praktisches Verständnis für die Konzepte und
Prinzipien funktionaler Programmierung erarbeitet und erworben. Als
Demonstrations- und Implementierungssprache wird in Vorlesung und
Übung die funktionale state-of-the-art Programmiersprache Haskell
verwendet.

Teil I: Einführung

  • Motivation

Teil II: Grundlagen

  • Elementare Typen, Tupel, Listen, Zeichenreihen
  • Funktionen
  • Typsynonyme, Neue Typen, Typklassen
  • Algebraische Datentypdeklarationen
  • Muster und mehr

Teil III: Applikative Programmierung       

  • Rekursion
  • Auswertung von Ausdrücken
  • Programmentwicklung, Programmverstehen

Teil IV: Funktionale Programmierung

  • Funktionen höherer Ordnung
  • Polymorphie

Teil V: Fundierung funktionaler Programmierung

  • Lambda-Kalkül
  • Auswertungsordnungen
  • Typprüfung, Typinferenz

Teil VI: Weiterführende Konzepte

  • Ein- und Ausgabe
  • Fehlerbehandlung
  • Module
  • Reflexives Programmieren
  • Programmieren mit Strömen und Funktionen höherer Ordnung

Teil VII: Abschluss

  • Rückschau, Ausschau

 Literaturverzeichnis

Anhänge

  • Formale Rechenmodelle
  • Andere funktionale Programmiersprachen
  • Implementierungsaspekte

Ausgewählte Leseempfehlungen

  • Simon Thompson. Haskell: The Craft of Functional Programming.
    Addison-Wesley/Pearson, 3. Auflage, 2011.
  • Ernst-Erich Doberkat. Haskell: Eine Einführung für Objektorientierte.
    Oldenbourg Verlag, 2012.
  • Peter Pepper. Funktionale Programmierung in OPAL, ML, Haskell und Gofer.
    Springer-V., 2. Auflage, 2003.
  • Simon Peyton Jones (Hrsg.). Haskell 98: Language and Libraries.
    The Revised Report. Cambridge University Press, 2003. 

Methoden

Abhaltemodus: Hybrid

Aufgrund geltender COVID-19-Beschränkungen stehen Horsäle,
Übungsgruppenräume und Rechnerlabore im WS 2020/21 nur mit stark
eingeschränkter Sitzplatzkapazität und Belegbarkeitshäufigkeit zur Verfügung.
Die verbleibenden Raumressourcen sind vorzugsweise Lehrveranstaltungen
des 1. Studienjahrs zur Verfügung gestellt. Für die Lehrveranstaltung
Funktionale Programmierung ist deshalb ein hybrider Abhaltemodus nötig!

Ziel: Die aus der Unmittelbarkeit von Präsenzveranstaltungen resultierenden
Vorteile möglichst umfassend zu erhalten, in Online-Veranstaltungen durch ein
Echtzeitvideokonferenzformat. Deshalb:

  • Präsenzveranstaltungen, wo möglich (Kleingruppen- und Plenumsübungen).
  • Online-Veranstaltungen als Echtzeitvideokonferenzen, wo Präsenzveranstaltungen nicht möglich (Vortrags- und umgekehrte Klassenzimmereinheiten).

Auszug aus einer Information von VR Matyas vom 31.07.2020:

  • Wir möchten [...] darauf hinweisen, dass eine Verschärfung der Sicherheitsmaßnahmen während der Sommermonate, bzw. während des Semesters notwendig werden kann.

Änderungen im Lehrveranstaltungsablaufs- und -abhaltungsplan (auch erheblicher Natur) sind daher jederzeit und auch kurzfristig möglich!

Methoden:

  1. Angeleitetes eigenständiges Erlernen und Einüben: Durch Vorträge (Orientierung, Einordnung) und umgekehrte Klassenzimmersitzungen (Übung, Vertiefung nach Eigenstudium) angeleitetes eigenständiges Erlernen und Einüben der in den Lernergebnissen beschriebenen Fähigkeiten mithilfe bereit gestellter Lehr- und Lernunterlagen, programmier- und nichtprogrammiertechnischer Übungsaufgaben und weiterer nach Bedarf selbstgewählter Materialien aus zur Ergänzung und Vertiefung 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 VII beziehen sich auf die entsprechenden Teile
der Lehrveranstaltungsunterlagen):

  • Angeleitete Lernaktivitäten (Hybrider Modus, 21.5h)
    • Vortrag: 5.25h (7 Online-Termine * 0.75h)
    • Umgekehrtes Klassenzimmer: 3.5h (7 Online-Termine * 0.5h)
    • Kleingruppenübungen: 7.5h (3 Präsenz-Termine * 1.5h, 4 Online-Termine * 0.75h)
    • Plenumsübungen: 5.25h (7 Präsenz-Termine * 0.75h)
  • Eigenständige Lernaktivitäten (Home Universitying, 52.0h)
    • Selbstgeleitetes Erarbeiten von Lernergebnissen: 28.0h (Richtwert: Teil I/3.0h, Teil II/5.0h, Teil III/3.0h, Teil IV/6.0h, Teil V/6.0h, Teil VI/4.0h, Teil VII/1.0h)
    • Speziell: Lösen der Übungsaufgaben: 22.0h (Richtwert: 4 Angaben * 2.5h + 3 Angaben * 4.0h)
    • Vorbereitung auf schriftliche Tests: 2.0h
  • Schriftlicher Test (Präsenz, 1.5h)

Die Lehrveranstaltung beginnt mit Vorbesprechung und erstem Vortragsteil am Dienstag, den 06.10.2020, 08:15-09:45 Uhr, ausschließlich online in Form einer Echtzeitvideokonferenz. Die Zugangsinformation für die Videokonferenz wird rechtzeitig via TISS-Nachricht bekannt gegeben.

Vortragende Personen

Institut

LVA Termine

TagZeitDatumOrtBeschreibung
Fr.12:00 - 13:0009.10.2020 - 15.01.2021complang-Labor Tutorensprechstunde
Funktionale Programmierung - Einzeltermine
TagDatumZeitOrtBeschreibung
Fr.09.10.202012:00 - 13:00complang-Labor Tutorensprechstunde
Fr.16.10.202012:00 - 13:00complang-Labor Tutorensprechstunde
Fr.23.10.202012:00 - 13:00complang-Labor Tutorensprechstunde
Fr.30.10.202012:00 - 13:00complang-Labor Tutorensprechstunde
Fr.06.11.202012:00 - 13:00complang-Labor Tutorensprechstunde
Fr.13.11.202012:00 - 13:00complang-Labor Tutorensprechstunde
Fr.20.11.202012:00 - 13:00complang-Labor Tutorensprechstunde
Fr.27.11.202012:00 - 13:00complang-Labor Tutorensprechstunde
Fr.04.12.202012:00 - 13:00complang-Labor Tutorensprechstunde
Fr.11.12.202012:00 - 13:00complang-Labor Tutorensprechstunde
Fr.18.12.202012:00 - 13:00complang-Labor Tutorensprechstunde
Fr.08.01.202112:00 - 13:00complang-Labor Tutorensprechstunde
Fr.15.01.202112:00 - 13:00complang-Labor Tutorensprechstunde
LVA wird geblockt abgehalten

Leistungsnachweis

  • Online, prüfungsimmanent: 7 beurteilte Angaben programmiertechnischer Aufgaben mit je 2 Abgabemöglichkeiten.
  • Präsenz, prüfungsimmanent: 3 beurteilte 90-minütige schriftliche Tests über Vorlesungs- und Übungsstoff mit 1 bis 3 Testteilnahmen nach eigener Wahl.

Weitere beurteilte Leistungsnachweise gibt es nicht.

Beurteilung, Beurteilungsschema

Gesamtbeurteilung gewichtet im Verhältnis 1 zu 1 aus Beurteilungen der programmiersprachlichen Aufgabenlösungen und der schriftlichen Tests, falls beide Teilbeurteilungen positiv sind, sonst nicht genügend; bei halben Noten gibt grundsätzlich die Note der schriflichen Tests den Ausschlag.

Erreichte Punkte aus programmiersprachlichen Angaben: Summe der Punkte aus allen 7 Angaben; erreichte Punkte pro Angabe: Hälfte der Punktsumme aus Erst- und Zweitabgabe zu einer Angabe. Erreichte Punkte aus schriflichen Tests: Summe der Punkte aus allen Testteilnahmen geteilt durch die Anzahl an Testteilnahmen.

Beurteilungsschema für programmiersprachliche Aufgabenlösungen und schriftlicheTests: ab 50% genügend, ab 62.5% befriedigend, ab 75% gut, ab 87.5% sehr gut.

Prüfungen

TagZeitDatumOrtPrüfungsmodusAnmeldefristAnmeldungPrüfung
Fr.10:00 - 12:0031.05.2024FH Hörsaal 1 - MWB schriftlich29.04.2024 02:00 - 24.05.2024 18:00in TISSSchriftlicher Test 3 auf Papier / Fr, 02.06.2023, 10-12 Uhr

Gruppentermine

GruppeTagZeitDatumOrtBeschreibung
Übungsgruppe 1 - SPKDi.16:00 - 18:0027.10.2020 - 15.12.2020FAV Hörsaal 1 Helmut Veith - INF 185.A03 Funktionale Programmierung Übungsgruppe 1 - SPK
Übungsgruppe 1 - SPKMi.08:00 - 10:0009.12.2020FAV Hörsaal 1 Helmut Veith - INF 185.A03 Funktionale Programmierung Übungsgruppe 1 - SPK
Übungsgruppe 2 - SPKDo.08:00 - 10:0029.10.2020 - 17.12.2020FAV Hörsaal 1 Helmut Veith - INF 185.A03 Funktionale Programmierung Übungsgruppe 2 - SPK
Übungsgruppe 3 - SPKDo.11:00 - 13:0029.10.2020 - 17.12.2020FAV Hörsaal 1 Helmut Veith - INF 185.A03 Funktionale Programmierung Übungsgruppe 3 - SPK
Übungsgruppe 4 - SPKDo.14:00 - 16:0029.10.2020 - 17.12.2020FAV Hörsaal 1 Helmut Veith - INF 185.A03 Funktionale Programmierung Übungsgruppe 4 - SPK
Übungsgruppe 5 - SPKFr.08:00 - 10:0030.10.2020 - 18.12.2020FAV Hörsaal 1 Helmut Veith - INF 185.A03 Funktionale Programmierung Übungsgruppe 5 - SPK
Übungsgruppe 6 - SPKFr.11:00 - 13:0030.10.2020 - 18.12.2020FAV Hörsaal 1 Helmut Veith - INF 185.A03 Funktionale Programmierung Übungsgruppe 6 - SPK

LVA-Anmeldung

Von Bis Abmeldung bis
30.08.2020 01:00 09.10.2020 12:00 30.10.2020 12:00

Anmeldemodalitäten

Die Anmeldung zur Lehrveranstaltung erfolgt über TISS. Diese ist
maßgeblich für die Teilnahme an der Lehrveranstaltung und unterliegt
den in den Studienplänen genannten Voraussetzungen.

Nach Abschluss der Anmeldeperiode wird für die Studierenden mit
valider Anmeldung ein persönliches Benutzerkonto auf der Maschine
g0.complang.tuwien.ac.at eingerichtet. Benutzerkennung und erstes
Losungswort werden jedem Teilnehmer durch Nachricht an die
Standardadresse <e-Matr.Nr>@student.tuwien.ac.at mitgeteilt. Dieses
erste Losungswort ist im Zuge des ersten Einbuchens auf das
Benutzerkonto durch ein selbstgewähltes neues Zugangswort zu ersetzen.


Gruppen-Anmeldung

GruppeAnmeldung VonBis
KÜG 1 (Di 16-18, 4PT/3OLT, Jana Chadt)20.10.2020 08:0023.10.2020 14:00
KÜG 2 (Do 8-10, 4PT/3OLT, Lukas Grassauer)20.10.2020 08:0023.10.2020 14:00
KÜG 3 (Do 11-13, 4PT/3OLT, Samuel Pilz)20.10.2020 08:0023.10.2020 14:00
KÜG 4 (Do 14-16, 4 PT/3OLT, Jana Chadt)20.10.2020 08:0023.10.2020 14:00
KÜG 5 (Fr 8-10, 4 PT/3OLT, Lukas Grassauer)20.10.2020 08:0023.10.2020 14:00
KÜG 6 (Fr 11-13, 4PT/3OLT, Lukas Grassauer)21.10.2020 08:0023.10.2020 14:00
KÜG 7 (Di 16-18, 3PT/4OLT, Hannes Siebenhandl)20.10.2020 08:0023.10.2020 14:00
KÜG 8 (Do 8-10, 3PT/4OLT, Samuel Pilz)20.10.2020 08:0023.10.2020 14:00
KÜG 9 (Do 11-13, 3PT/4OLT, Hannes Siebenhandl)20.10.2020 08:0023.10.2020 14:00
KÜG 10 (Do 14-16, 3PT/4OLT, Hannes Siebenhandl)20.10.2020 08:0023.10.2020 14:00
KÜG 11 (Fr 8-10, 3PT/4OLT, Samuel Pilz)20.10.2020 08:0023.10.2020 14:00
KÜG 12 (Fr 11-13, 3PT/4OLT, Jana Chadt)20.10.2020 08:0023.10.2020 14:00
KÜG 13 (Mi 15-16, Online only, Niki Herl)20.10.2020 08:0023.10.2020 14:00
KÜG 14 (Fr 15-16, Online only, Niki Herl)20.10.2020 08:0023.10.2020 14:00
KÜG 15 (Fr 17-18, Online only, Niki Herl)20.10.2020 08:0023.10.2020 14:00
Plenumsübungsgruppe I (Di 9-10)20.10.2020 08:0027.10.2020 18:00
Plenumsübungsgruppe II (Mi 16-17)20.10.2020 08:0027.10.2020 18:00
Übungsgruppe 1 - SPK09.10.2020 08:0015.10.2020 20:00
Übungsgruppe 2 - SPK09.10.2020 08:0015.10.2020 20:00
Übungsgruppe 3 - SPK09.10.2020 08:0015.10.2020 20:00
Übungsgruppe 4 - SPK09.10.2020 08:0015.10.2020 20:00
Übungsgruppe 5 - SPK09.10.2020 08:0015.10.2020 20:00
Übungsgruppe 6 - SPK09.10.2020 08:0015.10.2020 20:00

Curricula

StudienkennzahlVerbindlichkeitSemesterAnm.Bed.Info
033 526 Wirtschaftsinformatik Gebundenes WahlfachSTEOP
Lehrveranstaltung erfordert die Erfüllung der Studieneingangs- und Orientierungsphase STEOP
033 534 Software & Information Engineering Pflichtfach3. SemesterSTEOP
Lehrveranstaltung erfordert die Erfüllung der Studieneingangs- und Orientierungsphase STEOP
033 535 Technische Informatik Gebundenes WahlfachSTEOP
Lehrveranstaltung erfordert die Erfüllung der Studieneingangs- und Orientierungsphase STEOP
860 GW Gebundene Wahlfächer - Technische Mathematik Keine AngabeSTEOP
Lehrveranstaltung erfordert die Erfüllung der Studieneingangs- und Orientierungsphase STEOP

Literatur

Es wird kein Skriptum zur Lehrveranstaltung angeboten.

Vorkenntnisse

  • Allgemein: Beherrschung der in den Lehrveranstaltungen des 1. Studienjahrs unterrichteten fachlichen, methodischen, kognitiven, praktischen, sozialen und Selbstkompetenzen auf den dort zu erreichenden Kompetenzniveaus.
  • Speziell: Abstraktes Denken, mathematisch-logisches Denken und Ausdrucksweise.

Vorausgehende Lehrveranstaltungen

Vertiefende Lehrveranstaltungen

Weitere Informationen

Sprache

Deutsch