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.