Studierende im
Master- und Bachelorstudium 'Information Engineering'
Diese Vorlesung führt in eine Welt von Programmiersprachen
ein, die sich von der der klassischen imperativen
Sprachen (wie etwa Pascal, C, Java) grundlegend unterscheidet:
die Welt der funktionalen Programmiersprachen (hier: Haskell).
Auf einer einzigen Kernidee -- der Anwendung von Funktionen --
basierend, kann man einen Programmierstil aufbauen, der oft zu
überraschend kurzer und sehr eleganter Formulierung von
Algorithmen führt. Funktionale Sprachen besitzen
Eigenschaften (Stichwort: referentielle Transparenz), die ihre
Programme leicht analysierbar, transformierbar (optimierbar) und
kombinierbar machen.
Problemlösung in der funktionalen Welt orientiert sich enger
am Problem als an der Maschine. Das macht diese Sprachen
zur idealen Spielwiese, auf der auch mit komplizierteren
Datenstrukturen und Algorithmen gearbeitet werden kann, ohne
sich von vornherein mit den Details der Implementierung befassen zu
müssen. Teilweise kann man funktionale Programme aus einem
gegebenen Problem automatisch ableiten (Stichwort:
Programmsynthese).
Letztlich können auch "imperative Programmmierer" hier eine
neue Sicht auf ihre imperativen Programme gewinnen: Kenntnis
einer funktionalen Sprache kann zu einem disziplinierten und
sauberen imperativen Programmierstil führen.
R. Bird, P. Wadler, "Introduction to Functional Programming", Prentice Hall International Series in Computer Science, 1988 (second edition 1999) [verfügbar in der Bibliothek]
S. Thompson, "Haskell -- The Craft of Functional Programming", Addison-Wesley, 1996 (second editition 1999) [verfügbar in der Bibliothek]
J. Fokker, "Functional Programming", 1997 [verfügbar auf dem Web unter URL http://www.cs.uu.nl/~jeroen/courses/fp-eng.ps.gz]
Vorlesung anhand von Foliensätzen, die den Studenten vorher zur Verfügung stehen, teilweise Online-Demonstrationen. Vorwiegend praktisch orientierte Übungen (Programmierung und Analyse von Haskell-Skripten an Rechnern der Informatik). Haskell-Interpreter stehen zusätzlich für alle gängigen Rechnerplattformen frei zür Verfügung.
Klausur oder Kolloquium (kurze mündliche Prüfung) nach Absprache mit den Studierenden.