Funktionale Programmierung (FunkProg) (080088)

Dozentinnen/Dozenten
Frank Huch, Michael Hanus, Jan Christiansen

Angaben
Vorlesung, 4 SWS, ECTS-Studium, ECTS-Credits: 3,0, Modul: W6; Fachgebiet: Praktische Informatik
Zeit und Ort: Mo, Mi 16:00 - 17:30, LMS2 - R.Ü2

Übung, 2 SWS, ECTS-Studium, ECTS-Credits: 4,0
Zeit und Ort: Do, 16:00 - 17:30, LMS2 - R.Ü2

Voraussetzungen / Organisatorisches
Diese Vorlesung richtet sich an Studierende aller Informatikstudiengänge und ist für das Hauptstudium konzipiert (Diplom-Informatik, Ing.-Informatik, Bachelor). Es werden keine anderen Vorlesungen vorausgesetzt.

Inhalt
Die Vorlesung gibt eine ausführliche Einführung in die funktionale Programmierung. Neben den Grundlagen (Lambda-Kalkül, Semantik, Polymorphismus) werden auch weiterführende Konzepte moderner funktionaler Sprachen vorgestellt. Hierbei liegt der Schwerpunkt auf dem praktischen Einsatz funktionaler Sprachen. Geplante Themen sind: effiziente Algorithmen und Datenstrukturen, Programmiertechniken, Parserkombinatoren, XML-Anbindung, nebenläufige Programmierung, verteilte Programmierung, CGI-Programmierung, Debugging und Profiling.

Bei diesen Themen werden in der funktionalen Programmierung zum Teil andere Ansätze als in imperativen Sprachen gewählt. Es zeigt sich häufig aber auch, dass diese Ansätze auch im imperativen/objektorientierten Kontext tragen und zu verständlicherem Code führen.

Hauptsächlich werden wir uns mit der lazy funktionalen Programmiersprache Haskell beschäftigen. Bei der verteilten Programmierung wird außerdem die Sprache Erlang diskutiert.

Informationen zu den Übungen
Hier finden Sie die Übungszettel, einzelne Musterlösungen und Anmerkungen zu den Übungsaufgaben.

  • 1. Übung Bitte beachten Sie: in Aufgabe 4 sollen binäre Bäume implementiert werden.
  • 2. Übung Bei Aufgabe 1 b), sollten Sie sich zunächste auf Int-Listen beschränken, da ein Vergleich der Listenelemente erforderlich ist und wir in der Vorlesung noch keinen Mechanismus zur polymorphen Verwendung von (==) kennengelernt haben.
  • 3. Übung
  • 4. Übung
  • 5. Übung
  • 6. Übung
  • 7. Übung und die Musterlösung zu Aufgabe 4
  • 8. Übung
  • 9. Übung und die Observe-Bibliothek
  • 10. Übung und die Lösung von Jan
  • 11. Übung
  • 12. Übung und die Trie-Funktionen
  • 13. Übung und das Erlangprogramm für die Zusatzaufgabe 2
    Chat aus der Vorlesung
  • Weitere Informationen
    In der Vorlesung verwenden wir in erster Linie die Programmiersprache Haskell. Für Haskell stehen der Interpreter Hugs, als auch der Glasgow Haskell Compiler (ghc) (welcher ebenfalls interaktiv verwendet werden kann) zur Verfügung.

    Beide Systeme sind auch auf den Solaris-Rechnern des Instituts unter dem Benutzer haskell installiert. Zur Verwendung dieser Systeme sollten Sie deshalb den Pfad /home/haskell/bin in Ihre Umgebungsvariable PATH aufnehmen.


    Frank Huch, Lehrstuhl für Programmiersprachen und Übersetzerkonstruktion
    Last modified: Fri Jul 8 18:18:28 CEST 2005