Christoph Lüth > | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
[03-700.03] Praktische Informatik 3 (WS 04/05) |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Willkommen auf der Heimatseite der Lehrveranstaltung "Praktische Informatik " im Wintersemester 2004/2005. Hier findet ihr Inhaltliches, Organisatorisches, Kopien der Vorlesungsfolien und Aufgabenzettel, ein Literaturverzeichnis, etwas über Haskell-Software. und Links zu Haskell. InhaltlichesDas Thema dieser Veranstaltung ist die funktionale Programmierung. Bei der funktionalen Programmierung werden Programme als emph{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. Dieser Abstraktionsgewinn erlaubt es, in Konzepten und Algorithmen zu denken, nicht in Klassenstrukturen und geschweiften Klammern. Aus diesem Grunde sollte jeder Informatiker eine funktionale Sprache einmal kennengelernt haben --- wie zum Beispiel die in dieser Veranstaltung verwendete Sprache Haskell. 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. OrganisatorischesDie VAK der Veranstaltung ist 03-700.03. TermineDie Die erste Vorlesung ist am Montag, dem 25.10; die Tutorien finden ab diesem Termin statt. Neben der Vorlesung werden acht Tutorien angeboten:
Außerdem gibt es neben den Tutorien noch eine FAQ (Fragestunde), die sich insbesondere an Studenten wendet, die sprachliche Probleme haben. Hier könnt ihr alles fragen, was im Tutorium oder der Vorlesung zu kurz kam. Die Fragestunde wird Mi von 09-11 von Berthold Hoffmann (hof) in seinem Büro (MZH 8130) abgehalten. ÜbungsbetriebEs werden zweiwöchentlich Übungssblä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 einstimming angenommen:
NotenspiegelDie Note für den PI3-Schein ergibt sich aus den in den Übungen erzielten Punkten nach folgendem Schlüssel:
Spielregeln
Vorlesungsfolien und Übungsblätter
Übungsblätter
Die Abgabe sollte mit LaTeX gesetzt werden. Dazu benutzt bitte pi3.cls; hier ist ein Beispiel. Bücher und weiterführende LiteraturDie Veranstaltung basiert auf folgendem Buch:
Simon
Thompson: Seit Sommer diesen Jahres auf dem Markt ist dieses Buch, das sich eigentlich eher an Programmieranfänger wendet:
Manuel
Chakravarty und Gabriele Keller: Einen bunteren und zugleich abstrakteren Einstieg in Haskell bietet folgendes Buch:
Paul Hudak: Dieses Buch ist formaler als die vorherigen, und betont eher den Aspekt der formalen, korrekten Programmentwicklung:
Richard Bird: Introduction to Functional Programming using Haskell. Software: Haskell in Aktion
Der Übungsbetrieb basiert auf dem Haskell-Interpreter Hugs. Hugs ist lokal im
FB3-Netz als Auf der Hugs Homepage gibt es Implementationen für viele verschiedene Betriebssysteme (Unix/Linux, Windows, Mac &c). 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, hat wesentlich bessere Fehlermeldungen. Für das letzte und Teile des Bonusübungsblattes wird die Hugs Graphics Library benötigt. Hier eine Tipps und Hinweise dazu:
Links zu Haskell und Hugs
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Autor: Dr. Christoph Lüth |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|