Universität Bremen  
   
  > > Deutsch
English
 

Praktische Informatik 3 (WS 02/03)

 
Willkommen auf der Heimatseite der Lehrveranstaltung "Praktische Informatik " im Wintersemester 2002/2003.

Hier findet ihr Inhaltliches, Organisatorisches, Kopien der Vorlesungsfolien und Aufgabenzettel, ein Literaturverzeichnis, etwas über Haskell-Software. und Links zu Haskell. Neu: gebt uns Feedback!

Inhaltliches

Das Thema dieser Veranstaltung ist die funktionale Programmierung.

Funktionale Sprachen erlauben eine wesentlich abstraktere Programmierung als ihre imperativen Gegenstücke. Das Programm spezifiziert eher, was zu tun ist, nicht wie (mit welcher Reihenfolge von Zustandsveränderungen (also Zuweisungen)) es zu tun ist. Dieser Abstraktionsgewinn erlaubt es, in Konzepten und Algorithmen zu denken, nicht in Klassenstrukturen und geschweiften Klammern.

Aus diesem Grunde sollte jeder Informatiker zumindest eine funktionale Sprache einmal kennengelernt haben - wie zum Beispiel die in dieser Veranstaltung verwendete Sprache Haskell.

Bei der funktionalen Programmierung werden Programme als Funktionen modelliert, die eine Eingabe auf eine Ausgabe abbilden. Dieser unschuldige Satz hat weitreichende Konsequenzen. Zum ersten bedeutet es nämlich, daß unsere Programme zustands- und variablenfrei sind; eine Funktion f muß nämlich für eine Eingabe a immer dasselbe Ergebnis liefern, und kann nicht in Abhängigkeit von einem globalen oder internen Zustand ein anderes Ergebnis zurückgeben.

Diese Eigenschaft (auch referentielle Transparenz genannt), zusammen mit den anderen Eigenschaften funktionaler Programmiersprachen, wie (strenge) Typisierung, Funktionen höherer Ordnung und algebraischen Datentypen, machen funktionale Programme elegant, kurz, mathematischen Betrachtungen (Korrektheitsbeweisen) zugänglich und vor allem ganz anders als imperative oder objektorientierte Programme, wie wir sie in PI1/PI2 kennengelernt haben.

Gliederung

Bis Weihnachten werden wir uns mit den Grundkonzepte der funktionalen Programmierung beschäftigen, wie Funktionsdefinition, Typisierung, Basisdatentypen, Funktionen höherer Ordnung, Polymorphie, algebraischen Datentypen und abstrakten Datentypen (ADTs).

Um zu demonstrieren, dass funktionale Programmiersprachen nicht nur elegant und abstrakt, sonder auch eminent nützlich sind, werden wir nach Weihnachten diese Konzepte dann anwenden.

Organisatorisches

Die VAK der Veranstaltung ist 03-533.

Termine

Die Vorlesung ist Montags 10-12 im kleinen Hörsaal ("Keksdose").

Neben der Vorlesung werden fünf Tutorien angeboten:

Di10-12 MZH 1380 Dennis Walter (dw)
Mi15-17 MZH 6240 Rafael Trautmann (pirate)
Mi15-17 MZH 7250 Thomas Meyer (mclee)
Mi17-19 MZH 6240 Felix Beckwermert (foetus)
Mi17-19 MZH 1380 Michael Skibbe (mskibbe)

Übungsbetrieb

Es werden zweiwöchentlich Vorlesungsblätter ausgegeben - sie sind Montags ab 16:00 auf dieser Webseite verfügbar.

Die Übungsblätter werden in den Tutorien besprochen. Ab dieser Besprechung sind zwei Wochen Zeit zur Bearbeitung der Übungsblätter; danach werden die Übungsblätter in den Tutorien beim Tutor abgegeben.

Scheinkriterien

In der ersten Vorlesung wurden folgende Scheinkriterien ausgehandelt und mit 118:2:7 Stimmen angenommen:
  1. Von den ausgegebenen Übungsblättern müssen alle bearbeitet werden, wobei ein Übungsblatt als bearbeitet gilt, wenn mindestens 20% der Punkte erreicht werden.
  2. Insgesamt müssen im Schnitt 50% der Gesamtpunktzahl erreicht werden.
  3. Die Individualität der Leistung wird sichergestellt durch:
    • Vorstellung der Lösung zu einer Aufgabe im Tutorium;
    • Mündliche Beteiligung im Tutorium.
    Kann der Tutor am Ende des Semesters nicht zweifelsfrei eine individuelle Leistung feststellen, findet ein Prüfungsgespräch statt.
  4. Wer aus schwerwiegendem Grund ein Übungsblatt nicht bearbeitet, kann bei Vorliegen der übrigen Voraussetzungen nach einem Fachgespräch einen Schein erhalten.

Notenspiegel

Die Note für den PI3-Schein ergibt sich aus den in den Übungen erzielten Punkten nach folgendem Schlüssel:

Prozente Note
100-98 1.0
97-95 1.3
94-90 1.7
89-85 2.0
84-80 2.3
79-75 2.7
74-70 3.0
69-65 3.3
64-60 3.7
59-50 4.0
49-0 n/b

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.

Man beachte ferner, dass die Veranstaltung PI3 in ihrer jetzigen Form den Inhalt abdeckt, der früher in PI1 gelehrt wurde. Daher können Studenten, die schon in PI1 funktionale Programmierung (entweder in Haskell oder in Scheme) gemacht haben, den PI3-Schein nicht in das Vordiplom einbringen.

Die Angaben oben gelten nur für die DPO'93. Diese gilt nicht für Studenten, die mit dem WS 2002/2003 das Informatik-Studium aufgenommen haben (die also jetzt im ersten Semester sind); für diese ist Praktische Informatik 3 verbindlich.

Studienbegleitende Leistungsnachwiese

Wer einen studienbegleitenden Leistungsnachweis (vulgo: der Schein) in das Vordiplom einbringen möchte, der besorge sich bitte einen Scheinvordruck (vor der Fachbereichsverwaltung, MZH 7. Ebene), und fülle diese wie folgt aus:
  • Im oberen Teil:
    • oben links: Fachbereich 3
    • Euren Name, Matrikelnummer
    • Titel der Lehrveranstaltung: Praktische Informatik 3
    • Veranstaltungskennziffer: 03-533
    • WS 02/03
    • Wochenstunden:2+2
  • Die folgenden sind in dem unteren Teil ("nicht vom Studenten auszufüllen"):
    • Gruppenleistung ankreuzen
    • Inhalt und Form der Leistung: Erfolgreiche Bearbeitung von Übungsblättern
    • Prüfungsgebiet: Praktische Informatik
Danach gebt den Schein bitte entweder beim Veranstalter (MZH 8110) oder Sylvie Rauer (MZH 8190) ab, oder bringt ihn zum Fachgespräch mit.

Feedback Eure Meinung interessiert uns! Was war gut, was war schlecht?

Bitte füllt unseren Evaluationsfragebogen aus, und sagt es uns! Entweder hier als Webformular, oder hier als PDF ausdrucken und im Tutorium abgeben.

Vorlesungsfolien und Übungsblätter

Hier finden sich die Vorlesungsfolien und Übungsblätter, sowie der Haskell-Quellcode aus den Vorlesungen.

Vorlesungsfolien:

Es gibt entweder alle Folien im Überblick (im PDF-Format zum bequemen Betrachten), oder Handouts pro Vorlesung (in schwarz-weiß-grauem Postscript zum besseren Drucken): Kleiner Tip: mit gunzip -c lecture-X.ps.gz | psnup -r -2 | lp (oder sogar -4) lassen sich die Druckversionen papiersparend ausdrucken.

Übungsblätter

  • 1. Übungsblatt [PS] [PDF], ausgegeben am 21.10.02.
  • 2. Übungsblatt [PS] [PDF], ausgegeben am 04.11.02.
  • 3. Übungsblatt [PS] [PDF], ausgegeben am 18.11.02.
  • 4. Übungsblatt [PS] [PDF], ausgegeben am 02.12.02.
  • 5. Übungsblatt [PS] [PDF], ausgegeben am 16.12.02.
  • 6. Übungsblatt [PS] [PDF], ausgegeben am 13.01.03.

Bücher und weiterführende Literatur

Die Veranstaltung basiert auf folgendem Buch:

[Cover]Simon Thompson:
Haskell: The Craft of Functional Programming
Zweite Auflage
Addison-Wesley Publishing Company, 1999
ISBN 0-201-34275-8


Einen etwas bunteren und zugleich abstrakteren Einstieg in Haskell bietet folgendes Buch:

[Cover]Paul Hudak:
The Haskell School of Expression
Cambridge University Press, 2000
ISBN 0-521-64408-9



Dieses Buch ist etwas formaler als die beiden vorherigen, und betont eher den Aspekt der formalen, korrekten Programmentwicklung:

[Cover] Richard Bird: Introduction to Functional Programming using Haskell.
Prentice Hall Series in International Computer Science.
Prentice Hall, 1998.
ISBN 0-13-484346-0


Software: Haskell in Aktion

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.

Es gibt auch mehrere Haskell-Compiler, der Glasgow Haskell Compiler hat sogar eine Hugs vergleichbare, interaktive Kommandozeilenschnittstelle. Für den anfänglichen Übungsbetrieb sind diese zwar etwas zu schwergewichtig, aber später werden wir sie vielleicht benutzen.

Links zu Haskell und Hugs

 
   
Autor: Dr. Christoph Lüth
 
   
Zuletzt geändert am: 4. August 2004   impressum