Uni-Logo

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

DatumThemaReferentBetreuerMaterial
22 Okt 2007VorbesprechungProf. ThiemannFolien
29 Okt 2007Grundlagen IProf. Thiemann
05 Nov 2007Grundlagen IIProf. ThiemannVorlage,Lösung
12 Nov 2007Parsen and BacktrackingChristian WawrzinekAnnette BieniusaVorlage, Lösung, Folien
19 Nov 2007Typklassen/Predicated TypesNatascha WidderStefan WehrVorlage, Folien
26 Nov 2007MonadenSebastian WagnerAnnette BieniusaFolien
03 Dec 2007Effiziente Funktionale DatenstrukturenAlexander NutzProf. ThiemannFolien, Übung, Übungscode: Binsearchtree.hs, Rbtree.hs, Queue.hs
10 Dec 2007Monad TransformersChristoph GonsiorAnnette BieniusaFolien, Übung
17 Dec 2007WiederholungProf. ThiemannFolien, Übung, Interpreter
07 Jan 2008!!! enfällt !!!
14 Jan 2008Testing and TracingDiana HilleStefan Wehrbadinsert.hs, ggt.hs, Folien
21 Jan 2008ArrowsJonas GehringAnnette Bieniusa Folien, Übung, circuits.hs
28 Jan 2008!!! verschoben auf 18.Feb. !!!
04 Feb 2008ConcurrencySebastien BraunAnnette Bieniusa Folien, Übung, demo1.hs, demo2.hs, philo.hs, ProdCons.hs, BChan.hs,
11 Feb 2008!!! entfällt !!!
18 Feb 2008WASHEvgeni GenevProf. Thiemann Folien
Die Sitzung am 18. Februar beginnt um 10 Uhr.

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

LaTeX, Dokumentklasse article und einer Schriftgröße von 11 Punkten

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:

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
  • Listen: Listenalgebra (Bird), Listengesetze, Induktion, konstruktive Induktion, Programmkalkulation