Funktionale Programmierung
LVA 185.A03, VU 2.0, ECTS 3.0, 2011 W
(zweistündige Vorlesung mit Übung; siehe auch
TISS/185.A03)
Haben Sie Interesse an einem geförderten
Auslandsstudium?
Informationen zu Fördermöglichkeiten finden Sie
hier.
Termine für Vorlesung, Haskell Live und Labor
- Mi, 11.01.2012, 08:15 - 09:45 Uhr, Vorlesung im
Informatik-Hörsaal, Treitlstr.
- Di, 20.12.2011, 08:15 - 09:45 Uhr, Vorlesung im
Informatik-Hörsaal, Treitlstr.
- Di, 13.12.2011, 08:15 - 09:45 Uhr, Vorlesung im
Informatik-Hörsaal, Treitlstr.
- Di, 06.12.2011, 08:15 - 09:45 Uhr, Vorlesung im
Informatik-Hörsaal, Treitlstr.
- Di, 29.11.2011, 08:15 - 09:45 Uhr, Vorlesung im
Informatik-Hörsaal, Treitlstr.
- Di, 22.11.2011, 08:15 - 09:45 Uhr, Vorlesung im
Informatik-Hörsaal, Treitlstr.
- Do, 17.11.2011, 08:15 - 09:45 Uhr, Vorlesung im
HS 8 Heinz Parkus, Karlsplatz 13
- Di, 08.11.2011, 08:15 - 09:45 Uhr, Vorlesung im
Informatik-Hörsaal, Treitlstr.
- Fr, 04.11.2011, 08:15 - 09:45 Uhr, Vorlesung im
Informatik-Hörsaal, Treitlstr.
- Di, 25.10.2011, 08:15 - 09:45 Uhr, Vorlesung im
Informatik-Hörsaal, Treitlstr.
- Fr, 21.10.2011, 08:15 - 09:45 Uhr, Vorlesung im
HS 8 Heinz Parkus, Karlsplatz 13
- Di, 11.10.2011, 08:15 - 09:45 Uhr, Vorlesung im
Informatik-Hörsaal, Treitlstr.
- Di, 04.10.2011, 09:15 - ca. 09:45 Uhr, Vorbesprechung Informatik-Hörsaal, Treitlstr.
- Fr, 13.01.2012, Haskell Live von
14:15-15:00 Uhr im Informatik-Hörsaal, Treitlstr.
- Fr, 16.12.2011, Haskell Live von
14:15-15:00 Uhr im Informatik-Hörsaal, Treitlstr.
- Fr, 09.12.2011, Haskell Live von
14:15-15:00 Uhr im Informatik-Hörsaal, Treitlstr.
- Fr, 02.12.2011, Haskell Live von
14:15-15:00 Uhr im Informatik-Hörsaal, Treitlstr.
- Fr, 25.11.2011, Haskell Live von
14:15-15:00 Uhr im Informatik-Hörsaal, Treitlstr.
- Fr, 18.11.2011, Haskell Live von
14:15-15:00 Uhr im Informatik-Hörsaal, Treitlstr.
- Fr, 11.11.2011, Haskell Live von
14:15-15:00 Uhr im Informatik-Hörsaal, Treitlstr.
- Fr, 04.11.2011, Haskell Live von
14:15-15:00 Uhr im Informatik-Hörsaal, Treitlstr.
- Fr, 28.10.2011, Haskell Live von
14:15-15:00 Uhr im Informatik-Hörsaal, Treitlstr.
- Fr, 21.10.2011, Haskell Live von
14:15-15:00 Uhr im Informatik-Hörsaal, Treitlstr.
- Fr, 14.10.2011, Haskell Live von
14:15-15:00 Uhr im Informatik-Hörsaal, Treitlstr.
Im
Labor
stehen Tutoren zu den angegebenen Zeiten für Fragen zur Verfügung.
Dienstag
| 11:00 Uhr - 13:00 Uhr (Bernhard Urban)
|
Freitag
| 09:00 Uhr - 11:00 Uhr (Kim Bong Min)
|
Plenumsübung und Laborbetreuung bieten die Möglichkeit,
Fragen und Probleme in einem persönlichen Gespräch zu
klären. Für Fragen von allgemeinem Interesse steht
das TISS-Forum zur Lehrveranstaltung
zur Verfügung.
Nicht für die Öffentlichkeit bestimmte Fragen zur
Lehrveranstaltung können Sie ebenfalls persönlich
insbesondere mit den Tutoren besprechen oder elektronisch an bitte
ausschließlich folgende Adresse richten: fp2011W@g0.complang.tuwien.ac.at
(Achtung: an fp2011W@g0... nur von der g0
aus senden, nicht von einem anderen Rechner oder von außen!)
Anmeldung
Die Anmeldung über
TISS/185.A03 ist bis zum 25.10.2011 möglich.
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 der
vorlesungsbegleitenden Plenumsübung
Haskell
Live wird am Beispiel konkreter Aufgabenstellungen praktisch
vorgeführt und diskutiert, wie sich diese zur Lösung
einsetzen lassen. Dabei können 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.
Die Studierenden
erhalten so ein umfassendes theoretisches und praktisches
Verständnis der Grundlagen, Prinzipien und Konzepte funktionaler
Programmierung und lernen, diese auf ihre Eignung zur Lösung
programmiertechnischer Aufgaben zu bewerten und zielorientiert und
angemessen im funktionalen Programmierstil anzuwenden und einzusetzen.
- Teil I: Einführung
- Motivation
- Grundlagen von Haskell
- Rekursion
- Teil II: Applikative Programmierung
- Auswertung von Ausdrücken
- Programmentwicklung
- Datentypdeklarationen
- Teil III: Funktionale Programmierung
- Funktionen höherer Ordnung
- Polymorphie
- Teil IV: Fundierung funktionaler Programmierung
- Auswertungsstrategien
- Formale Rechenmodelle
- Lambda-Kalkül
- Teil V: Ergänzungen und weiterführende Konzepte
- Muster und mehr
- Fehlerbehandlung
- Module
- Programmierprinzipien
- Typinferenz
- Ein- und Ausgabe
- Teil VI: Resümee und Perspektiven
In der Lehrveranstaltung wird die Programmiersprache
Haskell zur praktischen
Illustration funktionaler Programmierung verwendet; in der Übung
wird der Haskell-Interpreter
Hugs 98 verwendet, der für
viele Plattformen frei verfügbar ist.
Für die Übungsaufgaben werden auf dem Aufgabenblatt oder auf
der Webseite der Lehrveranstaltung in der Regel einige Testfälle
angegeben. Diese Testfälle sind dazu gedacht, die erwartete
Signatur, insbesondere die Reihenfolge von Argumenten, deutlich zu
machen. Ein weitergehendes eigenständiges Testen der Programme
können die Testfälle nicht ersetzen. Sie sind dazu nicht
gedacht und nicht geeignet.
Vorlesung
|
Inhalt
|
Folien
|
Hinweise
|
Vorlesungsfolien
| Kap. 1 bis Kap. 17, Literatur, Anhang
| pdf
| Stand: 11.01.2012.
|
Vorbesprechung
(04.10.2011)
| Motivation,
Organisatorisches
| pdf
| Stand: 04.10.2011.
|
Übung
|
Abgabe-/Nachabgabe-
termin
|
Angabe
|
Hinweise und Bemerkungen
|
12.12.2011
| 11.01.2012 (15:00) /
18.01.2012 (15:00)
|
Blatt 9.pdf
| Testfälle
(Letztes Aufgabenblatt)
Der Namenskonflikt der beiden
Funktionen isValid ist durch
Umbenennung aufgelöst. Die
Funktion in Teilaufgabe 1 heißt
nun isValidSL, die in Teilaufgabe 2
isValidSDK (16.12.2011)
|
07.12.2011
| 14.12.2011 (15:00) /
11.01.2012 (15:00)
|
Blatt 8.pdf
| Testfaelle
|
30.11.2011
| 07.12.2011 (15:00) /
11.01.2012 (15:00)
|
Blatt 7.pdf
| Testfälle
|
23.11.2011
| 30.11.2011 (15:00) /
07.12.2011 (15:00)
|
Blatt 6.pdf
| Testfälle siehe Aufgabenblatt.
|
09.11.2010
| 23.11.2011 (15:00) /
30.11.2011 (15:00)
|
Blatt 5.pdf
| Keine.
|
02.11.2011
| 11.11.2011 (15:00) /
16.11.2011 (15:00)
|
Blatt 4.pdf
| Testfälle
|
26.10.2011
| 11.11.2011 (15:00) /
16.11.2011 (15:00)
|
Blatt 3.pdf
| Testfälle
Beide Abgabetermine feiertagsverlängert (waren 02.11. und 09.11.2011).
|
19.10.2011
| 26.10.2011 (15:00) /
11.11.2011 (15:00)
|
Blatt 2.pdf
| Testfälle
Zweiter Abgabetermin feiertagsverlängert (war 02.11.2011).
|
12.10.2011
| 19.10.2011 (15:00) /
26.10.2011 (15:00)
|
Blatt 1.pdf
| Testfälle
|
Übung
Für die Lösungen der Aufgabenblätter werden in
Abhängigkeit der Güte der Lösungen unterschiedlich
viele Punkte vergeben. Pro Aufgabenblatt sind zwischen 0 und maximal
100 Punkte möglich. Für jedes Aufgabenblatt gibt es dabei zwei
Abgabetermine, wobei sich die Gesamtpunktezahl für ein
Aufgabenblatt nach der Formel "Gesamtpunktezahl = (Punkte für Lösung
zum Erstabgabetermin + Punkte für Lösung zum Zweitabgabetermin) /
2". Die volle Punktzahl kann also erreicht werden, wenn alle
Lösungen zum Erstabgabetermin abgegeben werden; die halbe
Punktzahl kann erreicht werden für Lösungen, die erstmals
oder in veränderter Form zum Zweitabgabetermin abgegeben
werden. Änderungen (oder Weglassungen) von Lösungen vom
Erstabgabetermin können die Gesamtpunktezahl daher sowohl positiv als
auch negativ beeinflussen. Wenn die Lösung durch die Änderung
an Güte verliert, kann sich die erreichte Gesamtpunktezahl insgesamt
verringern.
Für eine positive Beurteilung des Übungsteils sind von den
maximal erreichbaren Punkten für alle Aufgabenblätter
mindestens 50% erforderlich, für "Befriedigend" mindestens 62.5%, für
"Gut" mindestens 75% und für "Sehr Gut" mindestens 87.5%. Bei z.B. 10
Aufgabenblättern im Semester sind maximal 1.000 Punkte
erreichbar. Unter dieser Annahme sind dann mindestens 500 Punkte (50%)
für eine positive Beurteilung des Übungsteils erforderlich, für
"Befriedigend" mindestens 625 (62.5%), für "Gut" mindestens 750 (75%)
und für "Sehr Gut" mindestens 875 Punkte (87.5%).
Die Note für den Ü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 eine positive Beurteilung beider Teile, des Übungsteils
und des schriftlichen Prüfungsteils.
Schriftliche Prüfung
Die Beurteilung setzt sich je zur Hälfte aus dem Erfolg bei der
Übung und dem Ergebnis einer 90-minütigen schriftlichen
Prüfung (sog. Klausur) zusammen. Die schriftliche Prüfung erfolgt
über den Vorlesungs- und Übungsstoff und einen
wissenschaftlichen (Übersichts-) Artikel, den Sie sich
im Lauf der Vorlesungszeit selbstständig
erschließen und zwar
- John Hughes. Why Functional Programming Matters.
Research Topics in Functional Programming. D. Turner (Hrsg.),
Addison Wesley, 1990.
Der Haupttermin für die schriftliche Prüfung ist im
Anschluss an den Vorlesungsblock. Nachtragsklausurtermine wird es zu
Beginn, in der Mitte und gegen Ende der Vorlesungszeit im
Sommersemester 2012 geben. Die genauen Termine werden rechtzeitig in
TISS 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 TISS.
Zeugnisausstellung
Zeugnisse werden zum
frühestmöglichen Zeitpunkt ausgestellt. Das ist nach nicht
positivem Abschluss des Übungsteils, dem positiven Abschluss
von Übungsteil und schriftlicher Prüfung, nach
zweimaligem nicht positivem Abschluss der schriftlichen Prüfung
bzw. nach Verstreichen aller schriftlichen Prüfungstermine ohne
positiven Abschluss.
Vortragender
Jens Knoop.