> > | ||||||||||||||||||||||||||||||||||||||||||||||||
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!
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.
GliederungBis 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.
TermineDieNeben der Vorlesung werden fünf Tutorien angeboten:
ÜbungsbetriebEs 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.
ScheinkriterienIn der ersten Vorlesung wurden folgende Scheinkriterien ausgehandelt und mit 118:2:7 Stimmen angenommen:
NotenspiegelDie Note für den PI3-Schein ergibt sich aus den in den Übungen erzielten Punkten nach folgendem Schlüssel:
ScheinrelevanzDer 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
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.
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: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):
gunzip -c lecture-X.ps.gz | psnup -r -2 |
lp (oder sogar -4 ) lassen sich die
Druckversionen papiersparend ausdrucken.
Übungsblätter
Bücher und weiterführende LiteraturDie Veranstaltung basiert auf folgendem Buch: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: Paul Hudak: Dieses Buch ist etwas formaler als die beiden vorherigen, und betont eher den Aspekt der formalen, korrekten Programmentwicklung:
Richard Bird: Introduction to Functional Programming using Haskell.
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.
|
||||||||||||||||||||||||||||||||||||||||||||||||
Autor: Dr. Christoph Lüth |
||||||||||||||||||||||||||||||||||||||||||||||||
|