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

2023W, VU, 4.0h, 6.0EC, wird geblockt abgehalten
TUWEL

Merkmale

  • Semesterwochenstunden: 4.0
  • ECTS: 6.0
  • Typ: VU Vorlesung mit Übung
  • Format der Abhaltung: Präsenz

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

Methoden

  1. Angeleitetes eigenständiges Erlernen und Einüben: Angeleitet durch Vorträge (Orientierung und Einordnung) und umgekehrte Klassenzimmersitzungen (Diskussion und Vertiefung nach Eigenstudium) werden die in den Lernergebnissen beschriebenen Fertigkeiten und Kenntnisse mithilfe bereit gestellter Lehr- und Lernunterlagen, programmier- und nichtprogrammiertechnischer Übungsaufgaben und bedarfs- und interessegeleitet selbstgewählter weiterer Materialien aus ergänzend und vertiefend vorgeschlagenen Lehrbüchern, Tutorien und wissenschaftlichen Originalarbeiten eigenständig erlernt und eingeübt.
  2. Rückmeldungs-, vorbildgeleitetes, informelles Lernen: Direkte individuelle Rückmeldungen und Verbesserungshinweise zu eigenen Programmierleistungen in tutorgeleiteten Verbesserung-in-Anwesenheit-Treffen; direkte und indirekte Rückmeldungen zur aktiven Mitarbeit (diskutieren, präsentieren, erklären, begründen, vergleichen, werten eigener und fremder Programmierleistungen aus sachlich-fachlicher Sicht) in tutorgeleiteten Kleinübungsgruppen; sachlich-fachliche Diskussion und Abstimmung bei der Erarbeitung gemeinsam getragener Aufgabenlösungen in 2er-Teams von Studierenden.
  3. Selbsteinschätzendes, selbstreflexives Lernen: Selbsteinschätzung und Selbstreflexion des eigenen bisherigen Lernerfolgs und Lernfortschritts anhand von Leit- und Kontrollfragen und Selbsteinschätzungstests zu Vorlesungs- und Übungsstoff.

Prüfungsmodus

Prüfungsimmanent

Weitere Informationen

Die Veranstaltung ist als Präsenzveranstaltung geplant.

Aufteilung der ECTS-Punkte:

Der Lehrveranstaltung sind 6.0 ECTS-Punkte zugeordnet. Diese
entsprechen einem durchschnittlichen Lernaufwand von 150
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 (23.5h)
    • Vortrag: 12.5h (10 Einheiten * 1.25h)
    • Umgekehrtes Klassenzimmer: 2.5h (10 Einheite * 0.25h)
    • Übungen: 6.0h (8 Einheiten * 0.75h)
  • Eigenständige Lernaktivitäten (123.5h/125.0h/126.5h)
    • Selbstgeleitetes Erarbeiten von Lernergebnissen: 56.0h (Richtwert: Teil I/6.0h, Teil II/10.0h, Teil III/6.0h, Teil IV/12.0h, Teil V/12.0h, Teil VI/8.0h, Teil V2.0h)
    • Insbesondere: Lösen der Übungsaufgaben: 56.0h (Richtwert: 6 (unbeurteilte) Angaben * 6.0h + 2 (beurteilte) Angaben * 10.0h)
    • Vorbereitung auf schriftliche Tests (z.B. Leit- und Kontrollfragen, Selbsteinschätzungstests, Frage&Antwort-Vorlesungsforum): 10.0h
  • Schriftliche Tests (Teilnahme nach Wahl an 1 bis 3 Tests zu je 1.5h): 1.5h/3.0h/4.5h

Die Lehrveranstaltung beginnt mit Vorbesprechung und erstem Vortragsteil am Dienstag, den 03.10.2023, 11:15-12:45 Uhr, im Informatik-Hörsaal.

Vortragende Personen

Institut

LVA Termine

TagZeitDatumOrtBeschreibung
Di.11:00 - 13:0003.10.2023 - 16.01.2024EI 3 Sahulka HS - UIW 194.026 Funktionale Programmierung
Mo.12:00 - 13:0023.10.2023 - 18.12.2023FAV Hörsaal 2 194.026 Funktionale Programmierung (Übungsgruppe 3)
Mo.12:00 - 13:0023.10.2023 - 18.12.2023Seminarraum FAV 01 A (Seminarraum 183/2) 194.026 Funktionale Programmierung (Übungsgruppe 1)
Mo.17:00 - 18:0023.10.2023 - 18.12.2023Seminarraum FAV EG B (Seminarraum von Neumann) 194.026 Funktionale Programmierung (Übungsgruppe 2)
Mi.09:00 - 11:0013.12.2023EI 5 Hochenegg HS LVA 194.026 Funktionale Programmierung
Funktionale Programmierung - Einzeltermine
TagDatumZeitOrtBeschreibung
Di.03.10.202311:00 - 13:00EI 3 Sahulka HS - UIW 194.026 Funktionale Programmierung
Di.10.10.202311:00 - 13:00EI 3 Sahulka HS - UIW 194.026 Funktionale Programmierung
Di.17.10.202311:00 - 13:00EI 3 Sahulka HS - UIW 194.026 Funktionale Programmierung
Mo.23.10.202312:00 - 13:00FAV Hörsaal 2 194.026 Funktionale Programmierung (Übungsgruppe 3)
Mo.23.10.202312:00 - 13:00Seminarraum FAV 01 A (Seminarraum 183/2) 194.026 Funktionale Programmierung (Übungsgruppe 1)
Mo.23.10.202317:00 - 18:00Seminarraum FAV EG B (Seminarraum von Neumann) 194.026 Funktionale Programmierung (Übungsgruppe 2)
Di.24.10.202311:00 - 13:00EI 3 Sahulka HS - UIW 194.026 Funktionale Programmierung
Mo.30.10.202312:00 - 13:00FAV Hörsaal 2 194.026 Funktionale Programmierung (Übungsgruppe 3)
Mo.30.10.202312:00 - 13:00Seminarraum FAV 01 A (Seminarraum 183/2) 194.026 Funktionale Programmierung (Übungsgruppe 1)
Mo.30.10.202317:00 - 18:00Seminarraum FAV EG B (Seminarraum von Neumann) 194.026 Funktionale Programmierung (Übungsgruppe 2)
Di.31.10.202311:00 - 13:00EI 3 Sahulka HS - UIW 194.026 Funktionale Programmierung
Mo.06.11.202312:00 - 13:00FAV Hörsaal 2 194.026 Funktionale Programmierung (Übungsgruppe 3)
Mo.06.11.202312:00 - 13:00Seminarraum FAV 01 A (Seminarraum 183/2) 194.026 Funktionale Programmierung (Übungsgruppe 1)
Mo.06.11.202317:00 - 18:00Seminarraum FAV EG B (Seminarraum von Neumann) 194.026 Funktionale Programmierung (Übungsgruppe 2)
Di.07.11.202311:00 - 13:00EI 3 Sahulka HS - UIW 194.026 Funktionale Programmierung
Mo.13.11.202312:00 - 13:00FAV Hörsaal 2 194.026 Funktionale Programmierung (Übungsgruppe 3)
Mo.13.11.202312:00 - 13:00Seminarraum FAV 01 A (Seminarraum 183/2) 194.026 Funktionale Programmierung (Übungsgruppe 1)
Mo.13.11.202317:00 - 18:00Seminarraum FAV EG B (Seminarraum von Neumann) 194.026 Funktionale Programmierung (Übungsgruppe 2)
Di.14.11.202311:00 - 13:00EI 3 Sahulka HS - UIW 194.026 Funktionale Programmierung
Mo.20.11.202312:00 - 13:00FAV Hörsaal 2 194.026 Funktionale Programmierung (Übungsgruppe 3)
LVA wird geblockt abgehalten

Leistungsnachweis

  • 2 in Verbesserung-in-Anwesenheit beurteilte Angaben programmier- und nichtprogrammiertechnischer Aufgaben.
  • 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 3 aus Beurteilungen der Angaben und der schriftlichen Tests, falls beide Teilbeurteilungen positiv sind, sonst nicht genügend.

Beurteilung Angaben: das Mittel der beiden beurteilten Angaben. Beurteilung schrifliche Tests: das Mittel der Beurteilungen der abgelegten Tests.

Beurteilungsschema für Angaben, schriftlicheTests und Gesamtbeurteilung: 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:0007.06.2024FH Hörsaal 1 - MWB schriftlich01.04.2024 11:11 - 31.05.2024 23:59in TISSTest 3 (schriftlicher Test auf Papier)

LVA-Anmeldung

Von Bis Abmeldung bis
02.10.2023 11:11 06.10.2023 12:00 27.10.2023 18:00

Gruppen-Anmeldung

GruppeAnmeldung VonBis
Übungsgruppe 1 (12-13 Uhr, SR FAV 01)13.10.2023 08:0020.10.2023 18:00
Übungsgruppe 2 (17-18 Uhr, SR von Neumann)13.10.2023 08:0020.10.2023 18:00
Übungsgruppe 3 (12-13 Uhr, FAV HS 2)13.10.2023 08:0020.10.2023 18:00

Curricula

StudienkennzahlVerbindlichkeitSemesterAnm.Bed.Info
033 521 Informatik Gebundenes WahlfachSTEOP
Lehrveranstaltung erfordert die Erfüllung der Studieneingangs- und Orientierungsphase STEOP
033 526 Wirtschaftsinformatik Gebundenes WahlfachSTEOP
Lehrveranstaltung erfordert die Erfüllung der Studieneingangs- und Orientierungsphase STEOP
033 534 Software & Information Engineering Gebundenes WahlfachSTEOP
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

Begleitende Lehrveranstaltungen

Vertiefende Lehrveranstaltungen

Sprache

Deutsch