Praktische Informatik 3 (WS2000/2001)
Willkommen auf der Heimatseite der Lehrveranstaltung "Praktische
Informatik " im Wintersemester 2000/2001.
Inhaltliches
Das Thema dieser Veranstaltung ist funktionale und logische
Programmierung, auch oft unter deklarativer
Programmierung zusammengefaßt.
Die deklarative Programmierung beschäftigt sich mit
Programmiersprachen, bei denen das zu lösende Problem in einer
möglichst abstrakten und dennoch ausführbaren Weise
beschrieben wird. Diese Programmiersprachen basieren auf
unterschiedlichen mathematischen Formalismen: bei der funktionalen
Programmierung werden Programme als Funktionen dargestellt, die
eine Eingabe auf eine Ausgabe abbilden, während bei der
logischen Programmierung Programme
durch eine bestimmte Art von logischen Formeln dargestellt werden.
Wir werden uns auf die funktionale Programmierung in der
Programmiersprache Haskell
konzentrieren (mehr darüber unten), aber die
Veranstaltung ist natürlich mehr als ein Haskell-Kurs. Ziel ist
es eine Denkweise zur algorithmischen Lösung von Problemen auf
hohem abstrakten Niveau zu vermitteln. Mit anderen Worten,
Programmieren ohne jedes Bit im Rechner beim Namen zu kennen, oder
Programmieren für Informatiker.
Die Veranstaltung basiert in größeren Teilen auf dem Buch The Haskell School of Expression, das als
begleitende Lektüre empfohlen wird.
Eine vorläufige Liste der in der Veranstaltung behandelten Themen:
- Einführung in die funktionale Programmierung
- Modellierung einfacher Datentypen: geometrische Figuren
- Eine kleine Grafikbücherei: Figuren und Regionen,
einfache Animationen
- Polymorphie und Funktionen höherer Ordnung
- Beispiele: Arithmetische Ausdrücke als Bäume, Parsierung durch Funktionen höherer Ordnung.
- Beweis durch Induktion, formale Bedeutung eines Programmes (Semantik)
- Weitere Beispiele: einfaches web-scripting , Graphen und Ströme
- Grundlagen der logischen Programmierung
- Mini-Prolog: Ein Prolog-Interpreter in Haskell
Organisatorisches
Achtung, die Vorlesung ist ab dem 27.11. nicht mehr im
kleinen Hörsaal der Keksdose!
Die Veranstaltung besteht aus folgenden Teilen:
- Der Vorlesung, Freitags 13-15 im MZH 5290, gehalten von Christoph
Lüth.
- Den Tutorien, Dienstags 10-12 in den Räumen MZH
5210, 5290 und 6240, in denen in der Gruppe der Vorlesungsstoff
vertieft und ergänzender Stoff erarbeitet wird. Die Tutorien
werden gehalten von Rafael Trautmann, Thomas Meyer und
Christoph Lüth
Die VAK der Veranstaltung ist 03-533.
Scheinkriterien
In der ersten Vorlesung wurden folgende Scheinkriterien ausgehandelt
und mit 34:17:6 Stimmen angenommen:
- Von den n ausgegebenen Übungsblättern müssen n-1
bestanden werden, wobei ein Übungsblatt als bestanden gilt, wenn
mindestens 40% der Punkte erreicht werden.
- Insgesamt müssen bei den n-1 besten Übungsblättern im
Schnitt 60% der Gesamtpunktzahl erreicht werden. (Der Schnitt bezieht
sich auf n-1 Blätter, nicht auf alle.)
- Zur Prüfung der Individualität der Leistung findet in der letzten
Woche des Semesters eine betreute Bearbeitung des n+1
Übungsblattes statt. Dieses Übungsblatt zählt nicht zu den unter (1.)
und (2.) angerechneten.
- Studenten, die an der betreuten Bearbeitung nicht teilnehmen, oder
deren Leistung in der betreuten Bearbeitung wesentlich von der
vorherigen, in der Gruppe erbrachten Leistung abweicht, werden zu
einem Fachgespräch (beim freundlichen
Veranstalter) geladen. Ersatzweise kann die Individualität der
Leistung nach Maßgabe des Tutors durch aktive Teilnahme am Tutorium
als gesichert gelten; in diesem Fall entfällt das Fachgespräch. Die
freiwillige Teilnahme am Fachgespräch steht jedem offen.
Scheinrelevanz
Der in der DPO'93 aufgeführte prüfungsrelevante PI3-Schein kann (in
diesem Semester) nicht nur (wie bisher) über das SWP sondern
alternativ auch über PI3 abgedeckt werden. Die in der DPO zusätzlich
aufgeführte Forderung der erfolgreichen Teilnahme am SWP bleibt davon
unberührt.
Kurz gesagt kann also gewählt werden zwischen
- entweder prüfungsrelevante Studienleistung in PI3 sowie
erfolgreiche Teilnahme an SWP
- oder prüfungsrelevante Studienleistung in SWP.
Mehr dazu hier.
Vorlesungsfolien und Übungsblätter
Hier finden sich die Vorlesungsfolien und Übungsblätter, sowie der
Haskell-Quellcode aus den Vorlesungen.
Vorlesungsfolien:
- [1] vom 27.10.2000.
Dazu die Quellen:
intro.hs,
isort.hs,
msort.hs.
- [2] vom 03.11.2000.
Dazu die Quellen:
ack.hs,
float_rat.hs,
Shape.hs.
- [3] vom 10.11.2000.
Dazu die Quellen:
io_intro.hs,
simple_gfx.hs,
balls.hs,
sierpinski.hs,
squares.hs.
- [4] vom 17.11.2000.
Dazu die Quellen:
Parser.hs,
Tree.hs,
expr.hs.
- [5] vom 24.11.2000.
Dazu die Quellen:
Shape.hs
Draw.hs,
Region.hs mit
Beispielen,
Picture.hs.
- [6] vom 01.12.2000.
Dazu die Quellen:
SimpleAnim.hs mit
Beispielen.
- [7] vom 08.12.2000.
Dazu die Quellen:
Memo.hs,
Fal.hs mit
Beispielen und
Ball1.hs
(Anmerkung: für SimpleAnim und Fal werden die
Module Shape, Draw, Region,
Picture, Memo und Fal benötigt.
Im FB3-Netz liegen diese Module schon unter /usr/local/lang/Hugs/lib/x11, zu Hause müßt ihr sie herunterladen und irgendwo hinlegen, wo
Hugs sie sehen kann.)
- [8] vom 15.12.2000.
Dazu die Quellen:
weitere Beispiele,
Ball2.hs und
Paddleball.hs.
- [9] vom 22.12.2000
(und auf besonderen Wunsch die
LaTeX-Quellen dazu)
- [10] vom 12.01.2001.
Dazu das kleine und das
große Beispiel, und die Quellen:
HelloHTML.cgi,
EnvPassed.cgi und
eval.cgi.
Ferner das Haskell-CGI Paket
(ist im FB3-Netz schon installiert).
- [11] vom 19.01.2001
(mit Beispielen).
- [12] vom 26.01.2001.
Dazu die Quellen für das Vierfarbenproblem.
- [13] vom 02.02.2001.
Dazu die Quellen für MyIO.hs.
- [14] vom 09.02.2001.
Kleiner Tip: mit gunzip -c folienX.ps.gz | psnup -l -2 |
lp
(oder sogar -4
) lassen sich die Folien
papiersparend ausdrucken. Wenn der erzeugte PostScript unleserlich
ist, kann man ihn mit fixfmps
wieder reparieren (einfach
als Filter benutzen).
Vorlesungsbegleitende Materialen
Übungsblätter
Hier ist der Leitfaden zur
Lösung der Übungsblätter.
Bücher und weiterführende Literatur
Die Veranstaltung basiert in weiten Teilen auf folgendem Buch: Paul Hudak:
The Haskell School of Expression
Cambridge University Press, 2000
ISBN 0-521-64408-9
Paperback ca. DM 60,-
Ein weiteres empfehlenswertes Buch zum Thema, mit einem etwas
formaleren Stil als das vorhergehende, ist folgendes:
Simon Thompson:
Haskell: The Craft of Functional Programming
Addison-Wesley Publishing Company, 1996
ISBN 0-201-40357-9
ca. DM 68,-
Software
Der Übungsbetrieb basiert auf dem Haskell-Interpreter Hugs. Hugs ist lokal im
FB3-Netz installiert, und wird mit
/usr/local/lang/hugs
aufgerufen. Auf der Hugs
Homepage gibt es Implementationen für viele verschiedene
Betriebssysteme (Unix/Linux, Windows, Mac &c). Hier
ist eine lokale Kopie der
Unix-Version; unter vielen Linux-Distributionen (z.B. SuSE) ist Hugs
schon als installierbares Paket dabei.
Für Grafiken und Animationen wird das Paket
SOEGraphics
benötigt. Im FB3-Netz ist es in die
lokale Installation von Hugs integriert. Wer es zu Hause installieren
möchte: hier sind die Quellen
für Windows und Linux. (Für Solaris muß man das
Makefile geringfügig ändern; wer das braucht, mailt mich bitte an.)
Links zu Haskell und Hugs
Christoph Lüth
Last modified: Fri Apr 5 18:15:16 CEST 2002