Aufgrund von Wartungsarbeiten sind keine Änderungen im Schließsystem möglich. Der Menüpunkt Schließsystem wird ausgeblendet. Wir danken für Ihr Verständnis!

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.

2019W, VU, 2.0h, 3.0EC, wird geblockt abgehalten

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

  • 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 dem Interpretierer 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
  • Datentypdeklarationen, algebraische Datentypen
  • 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
  • Programmierprinzipien, Programmieren mit Strömen und Funktionen höherer Ordnung

Teil VII: Abschluss, Ausblick

  • Abschließendes, Rückblick, Ausblick

 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

  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, programmier- und nichtprogrammiertechnischer Ü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 VII 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 (52.5h)
    • Selbstständiges Erarbeiten von Lernergebnissen: 28.0h (Vorschlag: Teil I/3.0h, Teil II/4.0h, Teil III/4.0h, Teil IV/6.0h, Teil V/6.0h, Teil VI/4.0h, Teil VII/1.0h)
    • Speziell: Lösen der Übungsaufgaben: 22.0h (Vorschlag: 4 Angaben * 2.5h + 3 Angaben * 4.0h)
    • Vorbereitung auf die schriftliche Prüfung: 2.5h
  • Schriftliche Prüfung: 1.5h

Die Lehrveranstaltung beginnt mit Vorbesprechung und erstem Vortragsteil am Dienstag, den 01.10.2019, 08:15-09:45 Uhr, im Informatik-Hörsaal.

Vortragende

Institut

LVA Termine

TagZeitDatumOrtBeschreibung
Di08:00 - 10:0001.10.2019 - 17.12.2019Informatikhörsaal Vorlesung
Fr12:00 - 13:0011.10.2019 - 24.01.2020complang-Labor Tutorensprechstunde
Fr14:00 - 15:0011.10.2019 - 10.01.2020Informatikhörsaal Haskell Live
Do08:00 - 09:0024.10.2019Informatikhörsaal LVA 185.A03 Funktionale Programmierung / Haskell Live
Funktionale Programmierung - Einzeltermine
TagDatumZeitOrtBeschreibung
Di01.10.201908:00 - 10:00Informatikhörsaal Vorlesung
Di08.10.201908:00 - 10:00Informatikhörsaal Vorlesung
Fr11.10.201912:00 - 13:00complang-Labor Tutorensprechstunde
Fr11.10.201914:00 - 15:00Informatikhörsaal Haskell Live
Di15.10.201908:00 - 10:00Informatikhörsaal Vorlesung
Fr18.10.201912:00 - 13:00complang-Labor Tutorensprechstunde
Fr18.10.201914:00 - 15:00Informatikhörsaal Haskell Live
Di22.10.201908:00 - 10:00Informatikhörsaal Vorlesung
Do24.10.201908:00 - 09:00Informatikhörsaal LVA 185.A03 Funktionale Programmierung / Haskell Live
Fr25.10.201912:00 - 13:00complang-Labor Tutorensprechstunde
Fr25.10.201914:00 - 15:00Informatikhörsaal Haskell Live
Di29.10.201908:00 - 10:00Informatikhörsaal Vorlesung
Di05.11.201908:00 - 10:00Informatikhörsaal Vorlesung
Fr08.11.201912:00 - 13:00complang-Labor Tutorensprechstunde
Fr08.11.201914:00 - 15:00Informatikhörsaal Haskell Live
Di12.11.201908:00 - 10:00Informatikhörsaal Vorlesung
Di19.11.201908:00 - 10:00Informatikhörsaal Vorlesung
Fr22.11.201912:00 - 13:00complang-Labor Tutorensprechstunde
Fr22.11.201914:00 - 15:00Informatikhörsaal Haskell Live
Di26.11.201908:00 - 10:00Informatikhörsaal Vorlesung
LVA wird geblockt abgehalten

Leistungsnachweis

Beurteilung der Beispiele aus der Übung und schriftliche Prüfung über
Vorlesungs- und Übungsstoff.

Genaue Angaben zum Beurteilungs- und Prüfungsablauf sind in den
Unterlagen zur Lehrveranstaltungsvorbesprechung gegeben (siehe
homepage der Lehrveranstaltung).

Prüfungen

TagZeitDatumOrtPrüfungsmodusAnmeldefristAnmeldungPrüfung
Do16:00 - 18:0016.01.2020EI 7 Hörsaal schriftlich09.12.2019 01:00 - 13.01.2020 12:00in TISSHaupttermin
Do16:00 - 18:0016.01.2020EI 3 Sahulka HS schriftlich09.12.2019 01:00 - 13.01.2020 12:00in TISSHaupttermin
Fr15:00 - 17:0006.03.2020EI 7 Hörsaal schriftlich17.02.2020 12:00 - 03.03.2020 23:59in TISS2. Termin
Fr15:00 - 17:0008.05.2020HS 11 Paul Ludwik schriftlich05.04.2020 12:00 - 28.04.2020 12:00in TISS3. Termin
Fr15:00 - 17:0026.06.2020HS 11 Paul Ludwik schriftlich22.05.2020 12:00 - 24.06.2020 12:00in TISS4. und letzter Termin

Gruppentermine

GruppeTagZeitDatumOrtBeschreibung
Keine Gruppe IIDi15:00 - 16:0029.10.2019complang-Labor -
VorreservierungMo18:00 - 20:0021.10.2019 - 09.12.2019Seminarraum FAV 01 B (Seminarraum 187/2) 185.A03 Funktionale Programmierung Vorreservierung
VorreservierungMo18:00 - 20:0021.10.2019 - 09.12.2019FAV Hörsaal 2 185.A03 Funktionale Programmierung Vorreservierung
VorreservierungDi16:00 - 18:0022.10.2019 - 10.12.2019FAV Hörsaal 2 185.A03 Funktionale Programmierung Vorreservierung
VorreservierungDi16:00 - 18:0022.10.2019 - 10.12.2019Seminarraum FAV EG C (Seminarraum Gödel) 185.A03 Funktionale Programmierung Vorreservierung
VorreservierungDi18:00 - 20:0022.10.2019 - 10.12.2019Seminarraum FAV 01 B (Seminarraum 187/2) 185.A03 Funktionale Programmierung Vorreservierung
VorreservierungDi18:00 - 20:0022.10.2019 - 10.12.2019FAV Hörsaal 2 185.A03 Funktionale Programmierung Vorreservierung
VorreservierungDi18:00 - 20:0022.10.2019 - 10.12.2019Seminarraum FAV EG C (Seminarraum Gödel) 185.A03 Funktionale Programmierung Vorreservierung
VorreservierungMi18:00 - 20:0023.10.2019 - 11.12.2019FAV Hörsaal 2 185.A03 Funktionale Programmierung Vorreservierung
VorreservierungMi18:00 - 20:0023.10.2019 - 11.12.2019Seminarraum FAV 01 B (Seminarraum 187/2) 185.A03 Funktionale Programmierung Vorreservierung
VorreservierungMi18:00 - 20:0023.10.2019 - 11.12.2019Seminarraum FAV EG C (Seminarraum Gödel) 185.A03 Funktionale Programmierung Vorreservierung
VorreservierungDo14:00 - 16:0024.10.2019 - 12.12.2019FAV Hörsaal 2 185.A03 Funktionale Programmierung Vorreservierung
VorreservierungDo14:00 - 16:0024.10.2019 - 12.12.2019Seminarraum FAV EG C (Seminarraum Gödel) 185.A03 Funktionale Programmierung Vorreservierung
VorreservierungDo16:00 - 18:0024.10.2019 - 12.12.2019FAV Hörsaal 2 185.A03 Funktionale Programmierung Vorreservierung
VorreservierungDo16:00 - 18:0024.10.2019 - 12.12.2019Seminarraum FAV 01 B (Seminarraum 187/2) 185.A03 Funktionale Programmierung Vorreservierung
VorreservierungDo16:00 - 18:0024.10.2019 - 12.12.2019Seminarraum FAV EG C (Seminarraum Gödel) 185.A03 Funktionale Programmierung Vorreservierung
VorreservierungDo18:00 - 20:0024.10.2019 - 12.12.2019FAV Hörsaal 2 185.A03 Funktionale Programmierung Vorreservierung
VorreservierungDo18:00 - 20:0024.10.2019 - 12.12.2019Seminarraum FAV EG C (Seminarraum Gödel) 185.A03 Funktionale Programmierung Vorreservierung
VorreservierungDo18:00 - 20:0024.10.2019 - 12.12.2019Seminarraum FAV 01 B (Seminarraum 187/2) 185.A03 Funktionale Programmierung Vorreservierung

LVA-Anmeldung

Von Bis Abmeldung bis
01.09.2019 01:00 04.10.2019 12:00 11.10.2019 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
Keine Gruppe29.10.2019 15:0029.10.2019 16:00
Keine Gruppe II29.10.2019 14:3329.10.2019 15:00
Vorreservierung01.01.2020 00:00

Curricula

StudienkennzahlSemesterAnm.Bed.Info
033 534 Software & Information Engineering 3. SemesterSTEOP
Lehrveranstaltung erfordert die Erfüllung der Studieneingangs- und Orientierungsphase STEOP
033 535 Technische Informatik STEOP
Lehrveranstaltung erfordert die Erfüllung der Studieneingangs- und Orientierungsphase STEOP
860 GW Gebundene Wahlfächer - Technische Mathematik STEOP
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