Funktionale Programmierung
LVA 185.161, VL 2.0, ECTS 3.0, 2006 W
BDS/W, BSI/P5, BZI/W, ZbGr
(zweistündige Vorlesung mit Laborübung; siehe auch
TUWIS++/185.161)
Anmeldesystem freigeschaltet!
Das
elektronische Anmeldesystem ist jetzt freigeschaltet (12.10.2006). Sie
können sich ab sofort bis einschließlich zum
25. Oktober 2006 (verlängert vom ursprünglich 23.10.2006)
für die Teilnahme an der Lehrveranstaltung "Funktionale
Programmierung" anmelden. Bis zum 31. Oktober 2006 können Sie
sich gegebenenfalls auch wieder abmelden. Nach dem 31. Oktober 2006
gehe ich davon aus, dass Sie die Lehrveranstaltung fest in Ihren
Stundenplan aufgenommen haben und sie erfolgreich bis zum Ende
besuchen wollen.
Zum Anmeldesystem.
Prüfungsanmeldesystem
freigeschaltet!
Das Anmeldesystem für die Prüfungen ist freigeschaltet
(10.01.2007). Anmeldungen sind ab sofort für Termine zwischen
Freitag, den 19.01.2007, und Donnerstag, den 01.02.2007, möglich.
Nachtragstermine wird es zu Anfang, in der Mitte
und zu Ende der Vorlesungszeit im Sommersemester 2007 geben. Die
genauen Termine dafür werden an dieser Stelle
bekanntgegeben.
Beachten Sie zu den Prüfungen und zur
Zeugnisausstellung auch die hier gegebenen
Hinweise, sowie die entsprechenden Hinweise in Ihren
Vorlesungsunterlagen (siehe Vorlesungsteil 10).
- Nachtragstermine zu Anfang des Sommersemesters 2007:
Termine zwischen Montag, den 05.03.2007, und Freitag, den 09.03.2007,
sowie zwischen Montag, den 19.03.2007, und Freitag, den 23.03.2007,
sind freigegeben und können ab sofort über das Anmeldesystem
belegt werden. (28.02.2007)
- Nachtragstermine zur Mitte des Sommersemesters 2007:
Termine zwischen Freitag, den 25.05.2007, und
Dienstag, den 05.06.2007, sind freigegeben und können ab sofort über das Anmeldesystem
belegt werden.
- Nachtragstermine zum Ende des Sommersemesters 2007:
Termine zwischen Freitag, den 22.06.2007, und
Freitag, den 29.06.2007, sind freigegeben und können ab sofort über das Anmeldesystem
belegt werden. (18.06.2007)
Zum Prüfungsanmeldesystem.
Do, 18.01.2007: Besprechung Aufgabenblätter
Der Vorlesungsteil ist abgeschlossen. Die Besprechung
der noch offenen Aufgabenblätter erfolgt
am
Donnerstag, den 18.01.2007, um 16:30 Uhr im
Radinger-Hörsaal.
Abgabetermine
Beginnend mit Aufgabenblatt 3 werden die Standardabgabetermine von
Montag, 15:00 Uhr, auf Dienstag, 15:00 Uhr, um jeweils einen
Tag verlängert. Standardausgabetermin für neue
Aufgabenblätter wird der Montag bleiben.
Sie können auf der b1 unter Ihrer Benutzerkennung fpxxx auch
abgesetzt arbeiten. Den Wert für xxx erhalten Sie, indem Sie
zu Ihrer Gruppennummer 500 addieren. Zur Gruppennummer 150 gehört
also die Benutzerkennung fp650.
Die Vorbesprechung für diese Lehrveranstaltung findet am Donnerstag,
den 05.10.2006, von 16:30 Uhr bis 17:30 Uhr im Radinger-Hörsaal
am Getreidemarkt statt. Das elektronische Anmeldesystem wird nach
der Vorbesprechung an dieser Stelle zur
Verfügung stehen.
Weitere Informationen zur Vorbesprechung und zu Zeit und
Ort der Vorlesung finden Sie
hier.
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
- Ein- und Ausgabe
- 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 Vorlesung 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.
Während der Lehrveranstaltung werden die
verwendeten Folien und Aufgabenstellungen für den
Laborübungsteil wöchentlich an dieser Stelle zur Verfügung gestellt.
Vorlesung
Folien vom
| Thema
| Verfügbare Formate (Folien pro Seite)
| Hinweise und Bemerkungen
|
07.12.2006
10. Vorlesungsteil
| Module,
Abstrakte Datentypen,
Reflektive Programmierung,
Ausblick und Rückblick
| "1 F/S".pdf
"1 F/S".pdf.gz
"4 F/S".pdf
"4 F/S".pdf.gz
"8 F/S".pdf
"8 F/S".pdf.gz
| Letzter Vorlesungsteil
|
30.11.2006
9. Vorlesungsteil
| Monaden,
eager vs. lazy
Evaluation,
lambda-Kalkül
| "1 F/S".pdf
"1 F/S".pdf.gz
"4 F/S".pdf
"4 F/S".pdf.gz
"8 F/S".pdf
"8 F/S".pdf.gz
| Keine
|
23.11.2006
8. Vorlesungsteil
| Funktionen
höherer Ordnung,
Ein- und Ausgabe,
Fehlerbehandlung
| "1 F/S".pdf
"1 F/S".pdf.gz
"4 F/S".pdf
"4 F/S".pdf.gz
"8 F/S".pdf
"8 F/S".pdf.gz
| Keine
|
09.11.2006
7. Vorlesungsteil
| Nachträge zu
Polymorphie, Muster,
Listenkomprehension
| "1 F/S".pdf
"1 F/S".pdf.gz
"4 F/S".pdf
"4 F/S".pdf.gz
"8 F/S".pdf
"8 F/S".pdf.gz
| Keine
|
07.11.2006
6. Vorlesungsteil
| Ad hoc Polymorphie,
Typklassen in Haskell
| "1 F/S".pdf
"1 F/S".pdf.gz
"4 F/S".pdf
"4 F/S".pdf.gz
"8 F/S".pdf
"8 F/S".pdf.gz
| Keine
|
31.10.2006
5. Vorlesungsteil
| Polymorphie
auf Funktionen
und Datentypen
| "1 F/S".pdf
"1 F/S".pdf.gz
"4 F/S".pdf
"4 F/S".pdf.gz
"8 F/S".pdf
"8 F/S".pdf.gz
| Keine
|
24.10.2006
4. Vorlesungsteil
| Algebraische
Datentypen,
Typsynonyme
| "1 F/S".pdf
"1 F/S".pdf.gz
"4 F/S".pdf
"4 F/S".pdf.gz
"8 F/S".pdf
"8 F/S".pdf.gz
| Keine
|
19.10.2006
3. Vorlesungsteil
| Layout-Regeln,
Rekursionstypen,
Komplexitätsklassen,
Aufrufgraphen
| "1 F/S".pdf
"1 F/S".pdf.gz
"4 F/S".pdf
"4 F/S".pdf.gz
"8 F/S".pdf
"8 F/S".pdf.gz
| Keine
|
17.10.2006
2. Vorlesungsteil
| Funktionen,
Funktionsterme,
Signaturen und
Klammereinspa-
rungsregeln
| "1 F/S".pdf
"1 F/S".pdf.gz
"4 F/S".pdf
"4 F/S".pdf.gz
"8 F/S".pdf
"8 F/S".pdf.gz
| Veranstaltungs-
hinweis
Kolloquiumsvortrag, Prof. Dr. Helmut Veith, 18.10.2006, 16:00 Uhr s.t.,
EI 5, Gußhausstr. 25-29
|
12.10.2006
1. Vorlesungsteil
| Einführung und
Grundlagen
| "1 F/S".pdf
"1 F/S".pdf.gz
"4 F/S".pdf
"4 F/S".pdf.gz
"8 F/S".pdf
"8 F/S".pdf.gz
| Keine
|
05.10.2006
Vorbesprechung
| Motivation und
Organisatorisches
| "1 F/S".pdf
"1 F/S".pdf.gz
"4 F/S".pdf
"4 F/S".pdf.gz
"8 F/S".pdf
"8 F/S".pdf.gz
| Termin und Ort
der Vorbesprechung:
Do, 05.10.2006,
16:30-17:30 Uhr, Radinger-Hörsaal.
Veranstaltungs-
hinweise
Antrittsvorlesung, Univ.Prof. Dr. Hannes Werthner, 09.10.2006, 17:00 Uhr s.t.,
EI 9, Gußhausstr. 25-29
Kolloquiumsvortrag, Dr. David F. Bacon, 06.10.2006, 10:00 Uhr c.t.,
EI 5, Gußhausstr. 25-29
|
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 2005/2006.
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.
- 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 2006/2007
findet am Donnerstag, den 5. Oktober 2006, von 16:30 Uhr bis 17:30 Uhr
im Radinger-Hörsaal am Getreidemarkt 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 Vorlesung selbst beginnt am Donnerstag, den
12. Oktober 2006, und findet im Regelfall am Donnerstag von 16:30 Uhr
bis 18:00 Uhr 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 (Treitelstraß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@b1.complang.tuwien.ac.at
(
Achtung: an fp@b1... nur von der b1 aus, nicht von
einem anderen Rechner oder von außen!)
bzw. direkt an einen Tutor in den Übungsräumen richten. Tutoren sind
während der Übung zu folgenden
Zeiten anwesend.
Ab dem 16. Oktober 2006 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
| 10:00 Uhr - 12:00 Uhr (Christoph Roschger)
12:00 Uhr - 14:00 Uhr (Christoph Bonitz)
|
Dienstag
| 09:00 Uhr - 11:00 Uhr (Karl-Michael Edlinger)
13:00 Uhr - 15:00 Uhr (Christian Biesinger)
|
Mittwoch
| 09:00 Uhr - 11:00 Uhr (Karl-Michael Edlinger)
14:15 Uhr - 16:15 Uhr (Christian Biesinger)
16:15 Uhr - 17:15 Uhr (Christoph Bonitz)
|
Donnerstag
| 12:00 Uhr - 13:00 Uhr (Christoph Roschger)
|
"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 mündlichen Prüfung zusammen. Der Vorlesungsteil
soll dabei bis ca. zum 15. Januar 2007 abgeschlossen sein. Die
Prüfungen (etwa 15 Min.) werden dann nach Vereinbarung im Anschluss
noch während der Vorlesungszeit ab ca. dem 20. Januar 2007
abgehalten. Weitere Termine wird es auch in der ersten Februarwoche
geben.
Nachtragstermine wird es zu Beginn, in der Mitte und gegen
Ende der Vorlesungszeit im Sommersemester 2007 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.
Die Anmeldung zu den Prüfungen wird elektronisch über
das Anmeldesystem zur Vorlesung erfolgen. Dabei sollen Sie sich immer
als Gruppe für einen Termin anmelden und auch als Gruppe zu diesem
Termin kommen. Im Anmeldesystem werden Sie jeweils sehen, welche
Termine noch frei sind. Der Termin, ab wann die Anmeldung möglich
ist, wird an dieser Stelle und in der Vorlesung bekanntgegeben werden.
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 9 Abgaben in diesem 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 mündlichen Prüfung
zum Vorlesungsteil. Eine Voraussetzung für eine insgesamt positive Beurteilung
ist aber eine positive Beurteilung beider Teile, des Laborübungsteils und des
Vorlesungsteils. Bei der Vorlesungsprüfung wird (neben dem theoretischen
Stoff des Vorlesungsteils) auch überprüft, ob Sie Ihre eigenen Lösungen der
Aufgabenstellungen auch im Detail verstehen. Die Beantwortung entsprechender
Fragen sollte Ihnen leicht fallen, wenn Sie die Aufgabenstellungen selbst
gelöst bzw. an deren Lösung mitgearbeitet haben.
Vortragender
Jens Knoop, Tel.: 58801-18510, E-mail:
knoop@complang.tuwien.ac.at