Funktionale Programmierung
LVA 185.161, VL 2.0, 2004 W
(zweistündige Vorlesung mit Laborübung; siehe auch
TUWIS++/185.161)
Anmeldesystem freigeschaltet!
Das
elektronische Anmeldesystem ist jetzt freigeschaltet. Sie können
sich ab sofort bis einschließlich zum 17. Oktober 2004 für
die Teilnahme an der Lehrveranstaltung "Funktionale Programmierung"
anmelden. Bis zum 31. Oktober 2004 können Sie sich gegebenenfalls
auch wieder abmelden. Nach dem 31. Oktober 2004 gehe ich davon aus,
dass Sie die Lehrveranstaltung fest in Ihren Stundenplan aufgenommen
haben und sie erfolgreich bis zum Ende besuchen wollen.
Weitere Informationen zur Gruppeneinteilung
und zur Ausgabe der Rechennummern und Passwörter finden Sie auf
den Folien zur
Vorbesprechung zu dieser
Lehrveranstaltung. Die Rechennummern und Passwörter werden ab
Dienstag, den 12. Oktober 2004, von den Tutoren im
Labor
ausgegeben. Die Anwesenheitszeiten der Tutoren im Labor finden Sie
hier. Die Übernahme von Rechennummer und
Passwort werden wir Sie durch Unterschrift zu quittieren bitten. Bitte
bringen Sie deshalb Ihren Studentenausausweis mit und kommen Sie zur
Übernahme von Rechennummer und Passwort zusammen mit allen
Gruppenpartnern. Vielen Dank.
Zum Anmeldesystem.
Prüfungsanmeldesystem freigeschaltet!
Das Anmeldesystem für die Prüfungen ist freigeschaltet. Anmeldungen
sind ab sofort möglich.
Die nächsten Prüfungstermine für Nachzügler
finden Sie über das
Anmeldesystem.
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:
- 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
Grundlegende Kenntnisse zumindest einer Programmiersprache (wie z.B. in
"Einführung in das Programmieren" vermittelt) werden vorausgesetzt.
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
|
25.01.2005
12. Vorlesungsteil
| Abstrakte Datentypen,
Reflektive Programmierung,
Ausblick und Rückblick
| "1 F/S".ps
"1 F/S".ps.gz
"4 F/S".ps
"4 F/S".ps.gz
"8 F/S".ps
"8 F/S".ps.gz
| Keine
|
18.01.2005
11. Vorlesungsteil
| Monaden,
Programmierung im Großen
| "1 F/S".ps
"1 F/S".ps.gz
"4 F/S".ps
"4 F/S".ps.gz
"8 F/S".ps
"8 F/S".ps.gz
| Keine
|
16.12.2004
10. Vorlesungsteil
| Ein-/Ausgabe,
Monaden und
Fehlerbehandlung
| "1 F/S".ps
"1 F/S".ps.gz
"4 F/S".ps
"4 F/S".ps.gz
"8 F/S".ps
"8 F/S".ps.gz
| Keine
|
14.12.2004
9. Vorlesungsteil
| Funktionale,
Funktionen höherer
Ordnung
| "1 F/S".ps
"1 F/S".ps.gz
"4 F/S".ps
"4 F/S".ps.gz
"8 F/S".ps
"8 F/S".ps.gz
| Keine
|
07.12.2004
8. Vorlesungsteil
| Polymorphie,
Ad-hoc Polymorphie
und Typklassen
| "1 F/S".ps
"1 F/S".ps.gz
"4 F/S".ps
"4 F/S".ps.gz
"8 F/S".ps
"8 F/S".ps.gz
| Keine
|
30.11.2004
7. Vorlesungsteil
| Algebraische
Datentypen
| "1 F/S".ps
"1 F/S".ps.gz
"4 F/S".ps
"4 F/S".ps.gz
"8 F/S".ps
"8 F/S".ps.gz
| Keine
|
23.11.2004
6. Vorlesungsteil
| Tupel und Listen,
Polymorphie,
Überladen
| "1 F/S".ps
"1 F/S".ps.gz
"4 F/S".ps
"4 F/S".ps.gz
"8 F/S".ps
"8 F/S".ps.gz
| Vorlesung zum
üblichen Termin:
13-14 Uhr!
(Kein Abendtermin!)
|
16.11.2004
5. Vorlesungsteil
| Rekursionstypen,
Komplexitätsklassen
| "1 F/S".ps
"1 F/S".ps.gz
"4 F/S".ps
"4 F/S".ps.gz
"8 F/S".ps
"8 F/S".ps.gz
| Keine
|
09.11.2004
4. Vorlesungsteil
| Lambda-Kalkül
| "1 F/S".ps
"1 F/S".ps.gz
"4 F/S".ps
"4 F/S".ps.gz
"8 F/S".ps
"8 F/S".ps.gz
| Folien aktu-
alisiert am
16.11.2004
(Folien 2, 18, 20 modifiziert,
Folien 6, 10, 16 neu ergänzt)
|
19.10.2004
3. Vorlesungsteil
| Ausdrücke und ihre
Auswertung, Auswertungs-
strategien
| "1 F/S".ps
"1 F/S".ps.gz
"4 F/S".ps
"4 F/S".ps.gz
"8 F/S".ps
"8 F/S".ps.gz
| Keine
|
19.10.2004
2. Vorlesungsteil
| Elementare Datentypen,
Listen und Ausdrücke
| "1 F/S".ps
"1 F/S".ps.gz
"4 F/S".ps
"4 F/S".ps.gz
"8 F/S".ps
"8 F/S".ps.gz
| Keine
|
12.10.2004
1. Vorlesungsteil
| Motivation und
erste Schritte in Haskell und Hugs
| "1 F/S".ps
"1 F/S".ps.gz
"4 F/S".ps
"4 F/S".ps.gz
"8 F/S".ps
"8 F/S".ps.gz
| Veranstaltungen
Vortrag, Simon Peyton Jones, einer der Väter von Haskell, 15.10.2004
IASTE Firmenmesse, 20.10.2004
|
05.10.2004
Vorbesprechung
| Motivation und
Organisatorisches
| "1 F/S".ps
"1 F/S".ps.gz
"4 F/S".ps
"4 F/S".ps.gz
"8 F/S".ps
"8 F/S".ps.gz
| Keine
|
Für die Übungsaufgaben werden im Regelfall auch einige
Testfälle zur Verfügung gestellt. Diese Testfälle sind
vorzugsweise 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 2003/2004.
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.
- Simon Thompson. Haskell: The Craft of Functional Programming,
Addison-Wesley (Pearson), 2nd edition, 1999.
- 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.
- Peter Pepper. Funktionale Programmierung in OPAL, ML, Haskell und Gofer,
Springer-Verlag, 2. Auflage, 2003.
- Antony J.T. Davie An Introduction to Functional Programming
Systems using Haskell, Cambridge University Press, 1992.
- ...
Zeit und Ort
Die Vorbesprechung für das Wintersemester 2004/2005 findet am
5. Oktober 2004 von 13:00 Uhr bis 14:00 Uhr im Informatikhörsaal
(Treitelstraße 3) statt. Die Vorlesung selbst beginnt am 12. Oktober
2004 und findet ebenfalls jeden Dienstag von 13:00 Uhr bis 14:00
Uhr im Informatikhörsaal (Treitelstraße 3) 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 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
fp@b1.complang.tuwien.ac.at
oder direkt an einen Tutor in den Übungsräumen richten. Tutoren sind
während der Übung zu folgenden
Zeiten anwesend.
Ab dem 18. Oktober 2004 werden die Tutoren (bis auf weiteres)
an folgenden Tagen und Zeiten im
Labor
anwesend sein und Ihnen für Fragen und zur Ausgabe von
Rechennummern und Passwörtern zur Verfügung stehen.
Montag
| 13:00 Uhr - 17:00 Uhr (Adrian Prantl)
|
Dienstag
|
10:30 Uhr - 13:00 Uhr (Christoph Roschger)
14:00 Uhr - 15:30 Uhr (Christoph Roschger)
18:00 Uhr - 20:00 Uhr (Sinan Saral)
|
Donnerstag
| 09:30 Uhr - 11:30 Uhr (Sinan Saral)
|
Freitag
| 08:00 Uhr - 12:00 Uhr (Anis Hadzisalihovic)
|
"Funktionale Programmierung" ist für folgende Bakkalaureatsstudien anrechenbar:
"Software & Information Engineering" (Pflichtfach, 5. Semester) 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 2005 abgeschlossen sein. Die
Prüfungen (etwa 15 Min.) werden dann nach Vereinbarung im Anschluss
noch während der Vorlesungszeit ab ca. dem 20. Januar 2005
abgehalten. Weitere Termine wird es auch in der ersten Februarwoche
geben. 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, in der Vorlesung und auch in der
news-Gruppe bekanntgegeben werden.
Anmeldung zu den Prüfungen ab sofort möglich!
Das Anmeldesystem für die Prüfungen ist freigeschaltet. Anmeldungen
sind ab sofort möglich.
Zum Prüfungsanmeldesystem.
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 10 Abgaben in diesem Semester sind maximal 1000 Punkte
erreichbar. Für eine positive Beurteilung des Laborübungsteils
benötigen Sie von den maximal erreichbaren Punkten mindestens 500
Punkte, also 50%, für "Befriedigend" mindestens 625, für "Gut"
mindestens 750 und für "Sehr Gut" mindestens 825 Punkte.
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