Funktionale Programmierung
LVA 185.161, VL 2.0, ECTS 3.0, 2009 W
BDS/W, BSI/P5, BZI/W, ZbGr
(zweistündige Vorlesung mit Laborübung; siehe auch
TUWIS++/185.161)
Haben Sie Interesse an einem geförderten
Auslandsstudium?
Informationen zu Fördermöglichkeiten finden Sie
hier.
Anmeldesystem freigeschaltet!
Das
elektronische Anmeldesystem ist freigeschaltet (06.10.2009). Sie
können sich ab sofort bis einschließlich zum
22. Oktober 2009 für die Teilnahme an der
Lehrveranstaltung "Funktionale Programmierung" anmelden. Bis zum
31. Oktober 2009 können Sie sich gegebenenfalls auch wieder
abmelden. Nach dem 31. Oktober 2009 gehe ich davon aus, dass Sie die
Lehrveranstaltung fest in Ihren Stundenplan aufgenommen haben und sie
erfolgreich bis zum Ende besuchen wollen.
Zum Anmeldesystem.
Vorlesungstermine / Hauptklausurtermin
Inhalt
Die Vorlesung gibt eine Einführung in die Grundlagen und Konzepte funktionaler
Programmierung. Dabei werden insbesondere die folgenden Prinzipien
funktionaler Programmierung vorgestellt und behandelt:
- Programme als Systeme rekursiver Rechenvorschriften
- Ausdrücke, Ausdrucksauswertung, Auswertungsstrategien
- Funktionen, Funktionale, Rekursion
- Datenstrukturen, Module, Ein- und Ausgabe
- Muster, Monaden, Polymorphie
- Reflektive Programmierung
- ...
und die Umsetzung dieser Konzepte in Haskell.
Ziele
Die Teilnehmer sollen einen Überblick über die wichtigsten Konzepte
funktionaler Programmiersprachen bekommen und lernen, diese Konzepte
sinnvoll einzusetzen.
Voraussetzungen
Für die Teilnahme an der Lehrveranstaltung gelten die in Abschnitt
1.6 des ab 01.10.2006
gültigen neuen
Studienplans
niedergelegten Voraussetzungen.
In der Lehrveranstaltung wird die Programmiersprache
Haskell verwendet.
Ein
Online-Tutorial
erklärt die Sprache sehr gut, setzt aber Grundkenntnisse der
funktionalen Programmierung voraus. Umfangreiche Informationen zu
Haskell finden Sie auch auf der
Haskell Home Page. Weitere
Literaturhinweise finden Sie auch auf den Folien zur
Vorbesprechung der Lehrveranstaltung und
im Abschnitt
Literaturhinweise. In
der Laborübung wird der Haskell-Interpreter
Hugs 98 verwendet, der für
viele Plattformen verfügbar ist.
Vorlesungsfolien (letzte Aktualisierung: 14.01.2010)
Die Vorlesungsfolien für das WS 2009/10 sind
als Gesamtdokument in zwei Formaten verfügbar:
(Die Folien werden im Lauf des Semesters bei Bedarf aktualisiert.)
Folien Vorbesprechung
Die Folien zur Vorbesprechung für das WS 2009/10 sind
in zwei Formaten verfügbar:
Übungen
Für die Übungsaufgaben werden im Regelfall auch einige
Testfälle zur Verfügung gestellt. Diese Testfälle sind
in erster Linie dazu gedacht, die erwartete Signatur, insbesondere die
Reihenfolge von Parametern deutlich zu machen. Sie können Ihnen
nicht ein eigenständiges Testen Ihrer Programme abnehmen. Die
Testfälle sind dazu weder gedacht noch geeignet.
Im Abschnitt
Lehrbehelfe finden Sie
Hinweise auf einige im Internet frei verfügbare
Informationsquellen zum Themenkreis funktionale Programmierung und
funktionale Programmierung in Haskell. Daneben gibt es auch eine
Fülle von Lehrbüchern zu diesen Themenkreisen. Im folgenden
finden Sie eine Auswahl aktueller Lehrbücher, die als begleitende
und ergänzende Lektüre zur Lehrveranstaltung und auch zum
Selbststudium sehr gut geeeignet sind. Weitergehende
Literaturhinweise, auch auf Originalartikel, werden bei Bedarf
zusätzlich in der Vorlesung angegeben. Die mit "drei Punkten"
abschließende Liste soll Sie ermuntern, auch weitere Literatur
zu suchen und auszuwählen, die Sie für sich und Ihren
Lerntyp für besonders geeignet halten.
- Richard Bird. Introduction to Functional Programming using Haskell,
Prentice-Hall, 2nd edition, 1998.
- Manuel M. T. Chakravarty, Gabriele C. Keller. Einführung in die
Programmierung mit Haskell, Pearson Studium, 2004.
- Antony J.T. Davie. An Introduction to Functional Programming
Systems using Haskell, Cambridge University Press, 1992.
- Graham Hutton. Programming in Haskell, Cambridge University
Press, 2007.
- Peter Pepper. Funktionale Programmierung in OPAL, ML, Haskell und Gofer,
Springer-Verlag, 2. Auflage, 2003.
- Simon Thompson. Haskell: The Craft of Functional Programming,
Addison-Wesley (Pearson), 2nd edition, 1999.
- Simon Peyton Jones (Hrsg.). Haskell 98: Language and Libraries.
The Revised Report. Cambridge University Press, 2003.
- ...
Die Vorbesprechung für das Wintersemester 2009/2010 findet am
Donnerstag, den 8. Oktober 2009, von 16:00 Uhr bis 16:30 Uhr im
Informatik-Hörsaal
in der Treitlstraße 3 statt. Unmittelbar im Anschluss daran findet
ebendort die erste Vorlesung von 16:30 Uhr bis 18:00 Uhr statt. Die
Anmeldung für die Teilnahme an der Vorlesung erfolgt in den Tagen
nach der Vorbesprechung über ein
elektronisches
Anmeldesystem, das über diese Webseite erreichbar sein
wird. Für die Anmeldung wird ein ausreichender Zeitraum zur
Verfügung stehen. Die weiteren Vorlesungen finden im Regelfall am
Donnerstag von 16:00 Uhr bis 17:30 Uhr ebenfalls im
HS 8 Heinz Parkus,
am Karlsplatz 13 statt.
Bei Fragen und Problemen
Lesen Sie regelmäßig die Newsgroup
tuwien.lva.funktional, und posten Sie darin Fragen
zur Lehrveranstaltung, die von allgemeinem Interesse sein könnten. Da
die Newsgroup (noch immer) vergleichsweise neu ist, kann sie derzeit
vermutlich nur über den Newsserver der TU-Wien (news.tuwien.ac.at)
gelesen werden. Nicht für die Öffentlichkeit bestimmte Fragen zur
Lehrveranstaltung können Sie per e-Mail an
studass@complang.tuwien.ac.at
oder an
fp2009W@g0.complang.tuwien.ac.at
(
Achtung: an fp2009W@g0... nur von der g0 aus, nicht von
einem anderen Rechner oder von außen!)
bzw. direkt an einen Tutor in den Übungsräumen richten.
Ab dem 23. November 2009 wird ein Tutor (bis auf weiteres)
an folgenden Tagen und Zeiten im
Labor
anwesend sein und Ihnen für Fragen zur Verfügung stehen.
Dienstag
| 12:15 Uhr - 15:15 Uhr (Bernhard Urban)
|
Donnerstag
| 09:15 Uhr - 12:45 Uhr (Bernhard Urban)
|
EXTRATERMIN: Mittwoch, 20.01.2010
| 09:15 Uhr - 12:45 Uhr (Bernhard Urban)
|
"Funktionale Programmierung" ist für folgende Bakkalaureatsstudien anrechenbar:
"Software & Information Engineering" (Pflichtfach, 5. Semester),
"Data Engineering & Statistics" (Wahlfach) und
"Medizinische Informatik" (Wahlfach).
Die Beurteilung setzt sich
je zur Hälfte aus den Leistungen bei der Laborübung
und dem Ergebnis einer 90-minütigen schriftlichen Prüfung
(sog. Klausur) zusammen. Der Vorlesungsteil soll dabei bis ca.
zum 15. Januar 2010 abgeschlossen sein. Der Haupttermin für die
schriftliche Prüfung (90 Minuten) ist Donnerstag, der 21.01.2010,
von 16 bis 18 Uhr. Die schriftliche Prüfung erfolgt über den
Vorlesungs- und Übungsstoff und
einen wissenschaftlichen (Übersichts-) Artikel, den Sie sich rechtzeitig
selbstständig im Lauf der Vorlesungszeit erschließen
und zwar voraussichtlich
- Paul Hudak. Conception, Evolution, and Application of
Functional Programming Languages. ACM Computing
Surveys, Vol. 21, No. 3, September 1989, 359 - 411.
Nachtragsklausurtermine wird es zu Beginn, in der Mitte und gegen
Ende der Vorlesungszeit im Sommersemester 2010 geben. Die genauen
Termine werden rechtzeitig an dieser Stelle bekanntgegeben. Nach
Ende der Vorlesungszeit im Sommersemester wird es keine weiteren
Nachtragstermine geben. Bis dahin noch nicht ausgestellte
Zeugnisse werden dann ausgestellt.
Eine Anmeldung zu den
schriftlichen Prüfungen ist jeweils erforderlich und erfolgt
über TUWIS++. Genaue Informationen werden rechtzeitig
in der Vorlesung und auf der Webseite
der Lehrveranstaltung bekanntgegeben.
Beurteilung
Je nach Qualität Ihrer Lösungen der Aufgabenstellungen bekommen Sie Punkte.
Maximal 100 Punkte pro Aufgabe sind möglich, wenn Sie die Abgabe rechtzeitig
durchgeführt haben. Für Lösungen beziehungsweise Änderungen der Lösungen, die
nachträglich (also eine Woche nach dem Fälligkeitstermin) abgegeben wurden,
gibt es nur die halbe Anzahl der Punkte, die Sie bei rechtzeitiger Abgabe
erreicht hätten. Änderungen der Lösung können die Punkteanzahl nach der Abgabe
sowohl positiv als auch negativ beeinflussen. Das heißt, wenn die Lösung durch
die Änderung schlechter wird, können auch Punkte abgezogen werden. Ihre Punkte
ergeben sich aus folgender Formel: Gesamtpunktezahl = (Punkte für ursprüngliche
Lösung + Punkte für nachträgliche Lösung) / 2. Es sind nie weniger als 0 oder
mehr als 100 Punkte erreichbar.
Bei z.B. 9 Abgaben im Semester sind maximal 900 Punkte
erreichbar. Für eine positive Beurteilung des Laborübungsteils
benötigen Sie von den maximal erreichbaren Punkten mindestens 450
Punkte, also 50%, für "Befriedigend" mindestens 562.5 (62.5%), für
"Gut" mindestens 675 (75%) und für "Sehr Gut" mindestens 787.5 Punkte
(87.5%).
Die Note für den Laborübungsteil bestimmt zur Hälfte die Note der
Lehrveranstaltung. Die zweite Hälfte ergibt sich aus der schriftlichen
Prüfung. Eine Voraussetzung für eine insgesamt positive Beurteilung
ist aber eine positive Beurteilung beider Teile, des Laborübungsteils
und des schriftlichen Prüfungsteils.
Vortragender
Jens Knoop.