Funktionale Programmierung, Spezialvorlesung, WS2000/2001
- bis zu zwölf Übungsblätter
- erstes Übungsblatt: Montag, den 23.10.2000
- erste Übung am Mittwoch, den 25.10.2000
- Scheinbedingung: 50% der Punkte aus den Übungsblättern,
mündliche Abschlußprüfung
- erstes Blatt am 23.10.00, Abgabe 30.10.00,
musterlösung
- zweites Blatt am 31.10.00, Abgabe 6.11.00, musterlösung
- drittes Blatt am 6.11.00, Abgabe 13.11.00, musterlösung
- viertes Blatt am 14.11.00, Abgabe 20.11.00, musterlösung
- Fünftes Blatt am 21.11.00, Abgabe 27.11.00, musterlösung
- Sechtes Blatt am 28.11.00, Abgabe 4.12.00, musterlösung
- Siebtes Blatt am 5.12.00, Abgabe 11.12.00, musterlösung
- Achtes Blatt am 12.12.00, Abgabe 18.12.00, musterlösung
- Neuntes Blatt am 19.12.00, Abgabe 8.01.01, musterlösung
- Zehntes Blatt am 9.01.00, Abgabe 22.01.01, musterlösung
- Elftes Blatt am 24.01.00, Abgabe 29.01.01, musterlösung
- Zwölftes Blatt am 30.01.00, Abgabe 5.02.01, musterlösung
- Dreizehntes Blatt am 6.02.00, Abgabe
12.02.01, musterlösung
Die Vorlesung behandelt die Konzepte funktionaler
Programmiersprachen anhand der Programmiersprache Haskell. Aufbauend auf den
Kenntnissen aus der Vorlesung Informatik I demonstriert die Vorlesung
fortgeschrittene Programmierkonzepte sowie die Verwendung von Haskell für die
Programmierung von Ein- und Ausgabe, von Netzwerkverbindungen und
Datenbankabfragen, sowie von Web-spezifischen Aufgaben (CGI-Programmierung,
Haskell-Server-Pages, Web-Server). Ferner wird die Vorlesung Konzepte der
GUI-Programmierung und der Animation in Haskell behandeln.
- Verständnis von fauler Auswertung, Typklassen, funktionaler I/O, sowie Monaden
- Anwendung der Konzepte am Beispiel von Web-Werkzeugen
- Heranführung an eingebettete, anwendungsorientierte Programmiersprachen
- Auffrischung:
Berechnung durch Termersetzung, Pattern Matching, Typen
- Programmierung mit fauler Auswertung (laziness):
Ströme, Rechnen mit Unbekannten, Attributgrammatiken
- Typklassen:
Klassen, Subklassen, Mehrdeutigkeit,
Implementierung durch dictionary passing, mehrere Parameter, funktionale
Abhängigkeiten
- Monaden
- Monaden und Seiteneffekte: Ein-/Ausgabe, Nebenläufigkeit, Ausnahmen
- Simon L. Peyton Jones. Tackling the awkward squad: monadic
input/output, concurrency, exceptions, and foreign-language calls in
Haskell
- Simon Marlow. Writing High-Performance Server Applications in
Haskell, Case Study: A Haskell Web Server. Haskell Workshop, Montreal,
Canada, September
2000
- Simon Peyton Jones and Alastair Reid and Tony Hoare and Simon
Marlow and Fergus Henderson. A Semantics for Imprecise
Exceptions. Proc. Programming Languages Design
and Implementation (PLDI'99), Atlanta,
1999.
- SL Peyton Jones and J Launchbury. State in Haskell. Lisp and
Symbolic Computation 8(4), Dec 1995,
pp293-341
- SL Peyton Jones, A Gordon, S Finne. Concurrent Haskell. 23rd ACM
Symposium on Principles of Programming Languages, St Petersburg Beach,
Florida, Jan 1996, pp295-308
- CGI Programmierung
- Skripting
- Animation
- GUI Programmierung
- Programmierung mit fauler Auswertung (laziness):
Ströme, Rechnen mit Unbekannten, Attributgrammatiken
- Funktionale Datenstrukturen
- 16.10.2000
- 23.10.2000
- 30.10.2000
- 06.11.2000
- 13.11.2000
- 20.11.2000
- 27.11.2000
- 04.12.2000 (ggf. unterichtsfrei wegen 1. Freiburger Multimediatage)
- 11.12.2000
- 18.12.2000
- 08.01.2001
- 15.01.2001
- 22.01.2001
- 29.01.2001
- 05.02.2001
- 12.02.2001 Abschlußprüfung
- [1]
-
Mark P. Jones.
Functional programming with overloading and higher-order
polymorphism.
In Advanced Functional Programming, volume 925 of Lecture
Notes in Computer Science, pages 97-136. Springer-Verlag, May 1995.
- [2]
-
Mark P. Jones.
Type classes with functional dependencies.
In Gert Smolka, editor, Proc. 9th European Symposium on
Programming, volume 1782 of Lecture Notes in Computer Science, pages
230-244, Berlin, Germany, March 2000. Springer-Verlag.
- [3]
-
Chris Okasaki.
Purely Functional Data Structures.
Cambridge University Press, 1998.
- [4]
-
Peter Thiemann.
Grundlagen der funktionalen Programmierung.
Teubner Verlag, Stuttgart, 1994.
thiemann@informatik.uni-freiburg.de,
April 26, 2001