Proseminar: Funktionale Programmierung in Haskell
Leitung: | Prof. Dr. Peter Thiemann | |||
Mitwirkung: | Annette Bieniusa | |||
Ort und Zeit: | Montag 13:30-16 Uhr, Geb. 051 Raum 00-006 | Montag, 16.02., 14:15-16:00 Uhr, Geb. 051 Raum 00-006 |
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.
Das Proseminar wird im ersten Teil eine Einführung in Haskell geben. Diese wird durch praktische Übungen ergänzt und vertieft. Ab Januar stellen die Teilnehmer dann ihre Themen in eigenen Vorträgen vor.
Prüfungsleistung
- Vorbereitung und Halten eines 30minütigen Vortrags mit anschließender Diskussion
- 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
In den ersten Sitzungen werden wir eine Einführung in die Programmiersprache Haskell geben. Die Folien basieren auf dem Material von Graham Hutton.
Datum | Thema | Material |
---|---|---|
20.10.08 | Informationen zur Vortragsgestaltung und Ausarbeitung | Folien |
27.10.08 | Einführung, Pattern Matching | Folien |
03.11.08 | Typen und Typklassen | Folien |
10.11.08 | Typendeklarationen | Folien |
17.11.08 | Input/Ouput und Monaden | Folien |
24.11.08 | Monadische Interpreter | Folien, interpreter.hs |
Für den Vortragsteil durch die Teilnehmer ist folgender aktualisierter Zeitplan vorgesehen:
Datum | Thema | Vortragender | Betreuender | Abgabe |
---|---|---|---|---|
12.01.2009 | Data Parallel Haskell | Florian Geißer | Annette Bieniusa | 05.01.2009 |
12.01.2009 | Concurrent Haskell | Sven Wirtz | Annette Bieniusa | 05.01.2009 |
12.01.2009 | Software Transactional Memory | Fadi Salameh | Stefan Wehr | 05.01.2009 |
02.02.2009 | Parsing | Felix Atmanspacher | Annette Bieniusa | 19.01.2009 |
02.02.2009 | QuickCheck und SmallCheck | Philipp Lerche | Stefan Wehr | 19.01.2009 |
02.02.2009 | Contracts | Tim Schulte | Stefan Wehr | 19.01.2009 |
09.02.2009 | Functional Reactive Animation | Sebastian Dufner | Prof. Thiemann | 26.01.2009 |
09.02.2009 | Probabilistic Functional Programming | Mirko Brodesser | Annette Bieniusa | 26.01.2009 |
09.02.2009 | Foreign Function Interface | Thorsten Engesser | Prof. Thiemann | 26.01.2009 |
16.02.2009 | Scrap your Boilerplate | Mihail Borisov | Stefan Wehr | 02.02.2009 |
16.02.2009 | Generic for the Masses | Roland Hediger | Annette Bieniusa | 02.02.2009 |
- Die Vorträge beginnen bereits um 13:30.
- Bitte vereinbaren Sie mit Ihrem Betreuer einen Termin für eine erste Besprechung vor der Weihnachtspause.
- Der Abgabe-Termin bezieht sich auf die Abgabe einer vorläufigen Version der Vortragsfolien und der Ausarbeitung (spätestens zwei Wochen vor dem Vortrag).
- Eine Woche vor dem Vortrag müssen die überarbeiteten Folien dann dem Betreuer vorgelegt werden.
- Die endgültige Abgabe der Ausarbeitung erfolgt dann zum Vorlesungsende (22.02.2009!!).
Themen
Für die Vortragsthemen finden Sie hier eine Übersicht zu relevantem Material. Arbeiten Sie dieses bitte zunächst selbständig durch. Bei Fragen wenden Sie sich direkt an Ihren Betreuer!
- Concurrent Haskell
- Software Transactional Memory
- Data parallel Haskell
- Efficient Functional Datenstructures
- Chris Okasaki. Purely Functional Data Structures. CUP, 1998.
- Lazyness vs. Strictness, Streams
- John Hughes. Why Functional Programming Matters.
- Ralf Hinze. Einführung in die funktionale Programmierung mit Miranda. Teubner, Stuttgart, 1992.
- Paul Hudak. The Haskell School of Expression. CUP, 2007. (Chap. 14)
- Richard S. Bird. Using circular programs to eliminate multiple traversals of data. Acta Informatica, 1984.
- QuickCheck and SmallCheck
- Contracts
- Functional Reactive Animation/Programming
- Paul Hudak. The Haskell School of Expression. CUP, 2007. (Chap. 13 + 15)
- Conal Elliott. Simply efficient functional reactivity
- Probabilistic Functional Programming
- Parsing
- Scrap your Boilerplate
- Generic for the masses
- Foreign Function Interface
Ausarbeitung
Die Ausarbeitung soll 10-15 Seiten umfassen. Sie muss mit
erstellt werden.
Material
Diese Seiten können 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.
Weiterführende und praxisrelevante Themen finden sich in Real World Haskell Bryan O'Sullivan, Don Stewart und John Goerzen.