Funktionale Programmierung
LVA 185.161, VL 2.0, ECTS 3.0, 2008 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.
Einsichtnahme Klausur vom 02.04.2009
Einsichtnahme:
- Donnerstag, den 23.04.2009, 12 Uhr - 13 Uhr,
Institutsbibliothek E1851.1, Argentinierstraße 8, 4. Stock (Mitte).
Zeugnisse
- Die Zeugnisse finden sich bereits im TUWIS.
Unter g0:~/p3.erg finden Sie die Punkte der schriftlichen Prüfung.
Aktuelles zu den schriftlichen Prüfungen und
den Prüfungsterminen
Schriftliche Prüfungstermine:
Einsichtnahme:
- Haupttermin: Am Mi, den 18.02.2009,
zwischen 16:00 Uhr
und 17:00 Uhr besteht die Möglichkeit zur Einsichtnahme
in der Bibliothek E185.1, 4. Stock, Argentinierstr. 8.
(05.02.2009)
Vorlesungstermine
- Do, 04.12.2008: Keine Vorlesung! (epilog, Diplomarbeitspräsentation,
FfI-weit LVA-frei ab 15:00 Uhr zur Teilnahme am epilog)
- Do, 27.11.2008, Vorlesung von 16:30-18:00 Uhr
s.t. im Radinger-Hörsaal, Getreidemarkt 2 (Abschluss
des Vorlesungsteils, letzte Vorlesung)
- Do, 20.11.2008, Vorlesung von 16:30-18:00 Uhr s.t.
im Radinger-Hörsaal, Getreidemarkt 2
- Do, 13.11.2008, Vorlesung von 16:30-18:00 Uhr s.t.
im Radinger-Hörsaal, Getreidemarkt 2
- Do, 06.11.2008, Vorlesung von 16:30-18:00 Uhr s.t.
im Radinger-Hörsaal, Getreidemarkt 2
- Do, 30.10.2008, Vorlesung von 16:30-18:00 Uhr s.t.
im Radinger-Hörsaal, Getreidemarkt 2
- Di, 21.10.2008, Vorlesung von 13:00-14:00 Uhr s.t.
im Informatik-Hörsaal, Treitlstr. 3
- Do, 16.10.2008, Vorlesung von 16:30-18:00 Uhr s.t.
im Radinger-Hörsaal, Getreidemarkt 2
- Do, 09.10.2008, Vorlesung von 16:30-18:00 Uhr s.t.
im Radinger-Hörsaal, Getreidemarkt 2
- Di, 07.10.2008, Vorlesung von 13:00-14:00 Uhr s.t.
im Informatik-Hörsaal, Treitlstr. 3
- Do, 02.10.2008, Vorlesung von 16:30-18:00 Uhr s.t.
im Radinger-Hörsaal, Getreidemarkt 2
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: 06.11.2008)
Die Vorlesungsfolien für das WS 2008/09 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 2008/09 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.
Zur Orientierung finden Sie auch entsprechende Informationen aus
dem
Wintersemester 2007/2008.
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 2008/2009 findet am
Donnerstag, den 2. Oktober 2008, von 16:30 Uhr bis 17:00 Uhr im
Radinger-Hörsaal
am Getreidemarkt 2 statt. Unmittelbar im Anschluss daran findet
ebendort die erste Vorlesung von 17:00 Uhr bis 18:30 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:30 Uhr bis 18:00 Uhr ebenfalls im
Radinger
Hörsaal, GM 2, statt. Bei Bedarf kann die Vorlesung alternativ
oder auch zusätzlich am Dienstag von 13:00 Uhr bis 14:00 Uhr im
Informatikhörsaal (Treitlstraße 3) stattfinden. Diese abweichenden
Termine werden jeweils rechtzeitig in der Vorlesung und auf dieser
Webseite bekanntgegeben werden.
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
fp@g0.complang.tuwien.ac.at
(
Achtung: an fp@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 8. Oktober 2008 werden die Tutoren (bis auf weiteres)
an folgenden Tagen und Zeiten im
Labor
anwesend sein und Ihnen für Fragen zur Verfügung stehen.
Montag
| 14:00 Uhr - 18:00 Uhr (Martin Riener)
|
Mittwoch
| 09:00 Uhr - 13:00 Uhr (Johannes Strodl)
15:00 Uhr - 17:00 Uhr (Markus Triska)
|
Donnerstag
| 15:00 Uhr - 17:00 Uhr (Markus Triska)
|
"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 2009 abgeschlossen sein. Der Haupttermin für die
schriftliche Prüfung (90 Minuten) ist Donnerstag, der 22.01.2009,
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 2009 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.