Proseminar: Fortgeschrittene Programmierung
Leitung: | Prof. Dr. Peter Thiemann | |
Mitwirkung: | Annette Bieniusa | |
Ort und Zeit: | Montag 14-16 Uhr, Geb. 051 Raum 00-034 |
Beschreibung
Das Proseminar beschäftigt sich der Idee der funktionalen Programmierung. Dieses Programmierparadigma betrachtet jede Berechnung als Auswertung einer mathematischen Funktion. Die Kombination und Transformation dieser Funktionen nimmt dabei eine bedeutende Stellung ein.
Als Beispiel für die Umsetzung dieser Konzepte in einer Programmiersprache dient die Sprache Haskell.
Jede Sitzung des Proseminars besteht aus 45 Minuten Vortragsteil, in dem ein Seminarteilnehmer das Thema der Woche vorstellt, und 45 Minuen Praxisteil, in dem einige Beispiele zur Vertiefung implementiert werden.
Prüfungsleistung
- Vorbereitung und Halten eines 45minütigen Vortrags
- Vorbereitung der Praxisaufgaben zum Vortrag
- Erstellen einer Ausarbeitung (10 - 15 Seiten)
- Aktive Teilnahme an den Seminarsitzungen
- Mitwirkung beim Praxisteil
In einem Proseminar werden neben Fachkenntnissen auch Kompetenzen vermittelt, die eine notwendige Grundlage für eine wissenschaftliche Arbeitsweise sind. Dazu gehören:
- eigenständige Literaturrecherche
- Lesen und Verstehen von wissenschaftlichen Texten
- Vortragstechniken
- Erstellen einer schriftlichen Ausarbeitung
Zeitplan
Datum | Thema | Referent | Betreuer | Material |
---|---|---|---|---|
22 Okt 2007 | Vorbesprechung | Prof. Thiemann | Folien | |
29 Okt 2007 | Grundlagen I | Prof. Thiemann | ||
05 Nov 2007 | Grundlagen II | Prof. Thiemann | Vorlage,Lösung | |
12 Nov 2007 | Parsen and Backtracking | Christian Wawrzinek | Annette Bieniusa | Vorlage, Lösung, Folien |
19 Nov 2007 | Typklassen/Predicated Types | Natascha Widder | Stefan Wehr | Vorlage, Folien |
26 Nov 2007 | Monaden | Sebastian Wagner | Annette Bieniusa | Folien |
03 Dec 2007 | Effiziente Funktionale Datenstrukturen | Alexander Nutz | Prof. Thiemann | Folien, Übung, Übungscode: Binsearchtree.hs, Rbtree.hs, Queue.hs |
10 Dec 2007 | Monad Transformers | Christoph Gonsior | Annette Bieniusa | Folien, Übung |
17 Dec 2007 | Wiederholung | Prof. Thiemann | Folien, Übung, Interpreter | |
07 Jan 2008 | !!! enfällt !!! | |||
14 Jan 2008 | Testing and Tracing | Diana Hille | Stefan Wehr | badinsert.hs, ggt.hs, Folien |
21 Jan 2008 | Arrows | Jonas Gehring | Annette Bieniusa | Folien, Übung, circuits.hs |
28 Jan 2008 | !!! verschoben auf 18.Feb. !!! | |||
04 Feb 2008 | Concurrency | Sebastien Braun | Annette Bieniusa | Folien, Übung, demo1.hs, demo2.hs, philo.hs, ProdCons.hs, BChan.hs, |
11 Feb 2008 | !!! entfällt !!! | |||
18 Feb 2008 | WASH | Evgeni Genev | Prof. Thiemann | Folien |
Drei Wochen vor dem Vortrag müssen die Inhalte mit dem Betreuenden besprochen werden.
Zwei Wochen vor dem Vortrag müssen die Folien und das Übungsblatt in einer ersten Fassung vorliegen.
Eine Woche vor dem Vortrag müssen die Folien und das Übungsblatt fertig vorliegen.
Die Ausarbeitung muss bis zum 01.03.2008 fertig sein.
Ausarbeitung
Die Ausarbeitung soll 10-15 Seiten umfassen. Sie muss mit
erstellt werden. Hierfür steht eine Vorlage zur Verfügung : ausarbeitung.tex
Themenübersicht
Diese Seiten sollen Ihnen als erster Startpunkt für die Literaturrecherche dienen:
- offizielle Homepage zu Haskell
- Online-Portal von Springer
- Online-Portal der ACM
- Homepages von Kursen zu Fortgeschrittener Funktionaler Programmierung anderer Universitäten: hier, hier und hier!
Eine gute allgemeine Einführung in Haskell bietet Programming in Haskell von Graham Hutton.
-
Grundlagen:
- Konzepte: call-by-name, call-by-value, call-by-need, lazy evaluation, Typen, parametrische Polymorphie, higher-order
- Definitionen, Datentypen, Listen, Listenkomprehension, Pattenmatching, algebraische Datentypen, anonyme Funktionen
- Beispiele:
- higher-order functions (map, filter, fold, curry, ...)
- laziness: unendliche Listen, Streams, zyklische Programme
- Parsen und Backtracking. (zunächst ohne Monaden)
- Graham Hutton. Higher-Order Functions for Parsing. JFP
- Fokker, J., Functional parsers, in: Advanced Functional Programming, First International Spring School on Advanced Functional Programming Techniques, LNCS 925 (1995), pp. 1-23.
- AFP 1998
- Effiziente Funktionale Datenstrukturen
- Chris Okasaki: Purely Functional Data Structures
- Oft functional pearls: von Richard Bird, Ralf Hinze, Chris Okasaki, Mike Spivey
- Typklassen / Predicated Types
- Wadler & Blott 1989
- AFP lecture notes, Papers von Mark Jones
- Monaden
- Wadler (Moggi)
- Peyton-Jones
- Mark Jones (constructor classes)
- Monad Transformers
- Sheng Liang, Paul Hudak, and Mark Jones
- AFP
- Embedded Languages/ FRAN
- Functional Reactive Animation
- Testing and Tracing
- QuickCheck: Hughes & Claessen
- HAT: Runciman
- WASH
- Generic Programming
- Ralf Hinze, Johan Jeuring
- Scrap your Boilerplate
- Concurrency
- Concurrent Haskell
- STM(Software Transactional Memory)
- Arrows
- John Hughes
- Ross Paterson's arrow web page
- Listen: Listenalgebra (Bird), Listengesetze, Induktion, konstruktive Induktion, Programmkalkulation