Funktionale Programmierung
Lehrkräfte
Dozent | Prof. Dr. Peter Thiemann | thiemann@info... |
Übung | Luminous Fennell | fennell@info... |
News
2014-02-14 | Achtung: auf dem Projektblatt wurde ein Hinweis zu Versionsproblemen mit threepenny-gui hinzugefügt |
2014-02-14 |
Es gibt in den Ferien zwei zusätzliche Übungstermine:
|
2014-02-13 | Definitiver Termin für Exkursion: Mi, 19.2., 16:30. Treffpunkt ist direkt pünktlich in der Firma oder um 16:20 an der Johanneskirche. |
2014-02-13 | Freiwilliges Abschlussprojekt ist online. |
2014-02-04 | Exkursion zu factis research findet voraussichtlich am Mi, 19. 02 statt. Genaue Uhrzeit und Treffpunkt wird noch bekannt gegeben. |
2014-01-28 | Achtung: Bitte bis 31. 1. zur Prüfung anmelden |
2014-01-27 | Übungsbeispiel zur Arrow-Notation hinzugefügt (ex10) |
2014-01-14 | Verbesserung von Fehlern auf Blatt 9 und Korrektur der Deadline auf Donnerstag |
2013-12-12 | Das Module Transformers.lhs für ex08 war unvollständig. Bitte neu herunterladen! |
2013-12-05 | Auf Blatt 7 und dem zugehörigen Code waren einige Fehler. Bitte neu herunterladen! |
2013-12-03 | Korrektur von Musterlösung 4! Aufgabe 3 war falsch. |
2013-11-14 | Korrektur von Blatt 4! Die Definition von foldl war falsch. |
2013-11-11 | Beispiel-Logs für Aufgabe 3.1 hochgeladen |
2013-11-07 | Am Vorlesungstermin vom 21.11 wird Prof. Thiemann durch Luminous Fennell vertreten |
2013-11-07 | Es gibt jetzt eine Umfrage zur Schwierigkeit bzw zum Umfang der Übungsblätter im Forum |
2013-10-25 | An der Vorlesungsterminen am 29.10 und 31.10 wird Prof. Thiemann durch Luminous Fennell vertreten |
2013-10-25 | Die Installationsinstruktionen für Mac OS X wurden angepasst |
2013-10-15 | Homepage online |
Vorlesungsmaterial
Note: "Recording" is an unedited screen recording of the lecture. Only available inside Uni Freiburg network.
Übungen
Inhaltliches
In diesem Kurs werden grundlegende bis fortgeschrittene Konzepte der funktionalen Programmierung anhand der Programmiersprache Haskell vermittelt.
Ziel
Lernziele aus dem Modulhandbuch: “Entwickeln einer alternativen, nicht-prozeduralen Sicht auf Algorithmen und Datenstrukturen, sicherer Umgang mit Funktionen und Daten höherer Ordnung, Kenntnis von grundlegenden und fortgeschrittenen funktionalen Programmiertechniken, selbständige Entwicklung von mittelgroßen funktionalen Programmen.”
Behandelte Themen
- Definition von Funktionen, Patternmatching und Funktionen höherer Ordnung
- Typen und Typklassen
- Algebraische Datentypen
- Funktionale Datenstrukturen
- Applicative Parser
- Monaden und Monadentransformer
- Arrows
- Verifikation von funktionalen Programmen
- Monadische Ein/Ausgabe und Stream Ein/Ausgabe
Voraussetzungen
Spaß am Programmieren und am Lernen und Anwenden neuer Programmierkonzepte und -sprachen. Weiterhin empfehlenswert:
- Kurse “Informatik I” sowie “ Mathematik II für Informatiker” erfolgreich absolviert
- Eigener Laptop
Vorkenntnisse in Haskell sind nicht notwendig.
Literatur
Grundlage für das erste Drittel der Vorlesung ist das Lehrbuch Programming in Haskell von Graham Hutton, welches auch in der TF-Bibliothek steht.
Organisatorisches
Termine
Vorlesung | Di 14-16 ct | Geb. 101 - SR 01-018 |
Do 14-15 ct | Geb. 101 - SR 01-018 | |
Übung | Do 15-16 ct | Geb. 101 - SR 01-018 |
Übungsmodus
Es gibt jede Woche ein Übungsblatt, das hier auf der Homepage unter Übungen heruntergeladen werden kann. Zur Bearbeitung und Abgabe der Übungen wird jedem Teilnehmer ein persönliches Subversion Repository eingerichtet.
Abgegebene Übungsaufgaben werden (unbepunktet) korrigiert und die Musterlösung in der folgenden Woche in der Übung besprochen. Weiterhin können bei Bedarf einzelne Themen aus der Vorlesung anhand von konkreten (Code-)Beispielen vertieft werden.
Prüfungsvorraussetzung
Um zur Prüfung zugelassen zu werden müssen die Teilnehmer jede Aufgabe auf jedem Blatt bearbeiten. Falls die sinnvolle Bearbeitung einer Aufgabe nicht gelingt, kann stattdessen eine entsprechende Begründung abgegeben werden.
Prüfung
Je nach Anzahl der Prüfungsanmeldungen wird es entweder eine schriftliche oder mündliche Prüfung während der Prüfungsphase geben. Durch erfolgreiches bearbeiten eines Programmierprojekts gegen Ende der Vorlesungszeit kann die Note einer bestandenen Prüfung verbessert werden.
Kommunikation
Neuigkeiten und Änderungen im Ablauf der Veranstaltung werden auf oben auf dieser Homepage unter News angekündigt. Bei wichtigen kurzfristigen Ankündigungen wird eine Benachrichtigung über das Kurssystem per Email verschickt. Daher sollten sich alle Teilnehmer über das Vorlesungsverzeichnis für die Veranstaltung registrieren!
Des Weiteren gibt es ein Forum, in dem allgemeine Fragen zur Vorlesung und den Übungen besprochen werden können.