VL: Praktische Informatik III: Konzepte von Programmiersprachen
VL 12060 Praktische Informatik III: Konzepte von Programmiersprachen
Prof. Dr. R. Loogen
Dienstag, 9.15-11.00, HG 4 (neu!) statt HG 5, Mittwoch, 11.15 - 13.00, HG 7 (neu!) statt HG 4 (Biegenstraße)
Beginn: 25. Oktober 2005
UE 12061
TutorinTerminRaumE-Mail
Catharina BarlenMi, 14-16 UhrHörsaal IV (Ebene D4, Lahnberge) cbarlen at web.de
Carina M. RinglerDo, 12-14 UhrHörsaal I (Ebene D4, Lahnberge) carina.ringler at web.de
Simone Geisel Do, 14-16 UhrHörsaal IV (Ebene D4, Lahnberge) simone-g. at gmx.de

Die Übungsgruppen beginnen in der zweiten Vorlesungswoche, d.h. am 2. und 3. November 2005.
Achtung: Am Mittwoch, dem 08.02.2006 findet die Übung um 14 Uhr wegen einer Vorbesprechung zur Fachbereichsratssitzung im Hörsaal II statt.
Die Mittwochsübung findet im Hörsaal II statt, falls der Hörsaal IV durch eine Fachbereichsratssitzung belegt ist.
Fachgebiet Klassifikation Semester Fortsetzung Skript
Informatik Grundstudium >=1 - ja

Voraussetzungen: Diese VL ist eine einführende Veranstaltung für Studierende der Informatik, des Lehramtsstudiengangs Informatik und mit Nebenfach Informatik. Die Vorlesungen Praktische Informatik I und II werden nicht vorausgesetzt.
Scheinkriterien: Zum Erwerb eines unbenoteten Scheins sind folgende Kriterien zu erfüllen:
  1. aktive Teilnahme an den Übungen
  2. erfolgreiche Bearbeitung von mindestens 50 % der Übungsaufgaben
  3. erfolgreiche Präsentation der Lösung mindestens einer mündlichen Übungsaufgabe
Zum Erwerb eines benoteten Scheins ist zusätzlich am Semesterende eine Klausur zu bestehen.
Übungsorganisation Die Übungsblattaus- und -abgabe erfolgt jeweils vor der Dienstagsvorlesung.
Die Abgabe der Übungsaufgaben ist in Zweiergruppen erlaubt.
Leistungskontrolle: Ergebnis (nur lokal zugänglich)


Klausurtermin: (neu!) Wegen der Kollision mit der Klausur zur Vorlesung "Einführung in die Softwaretechnik" wird die Klausur verschoben auf
Mittwoch, 15.02.2006, 11.00 - 13.00 Uhr, HS IV (Lahnberge).
Zum Ueben: Klausuren vom 4. Februar 2000 (Postscript, PDF), 31. Januar 2002 (Postscript, PDF) und 18. Februar 2004 (Postscript, PDF)
Klausurergebnis: Aushang (nur lokal zugänglich)
Notenskala:
| >= 64 | >= 60 | >= 57 || >= 54 | >= 50 | >= 47 || >= 44 | >= 40 | >= 37 || >= 34 | >= 30 |  < 30 | 
|-------|-------|-------||-------|-------|-------||-------|-------|-------||-------|---------------|
|  0,7  |  1,0  |  1,3  ||  1,7  |  2,0  |  2,3  ||  2,7  |  3,0  |  3,3  ||  3,7  |  4,0  |  5,0  | 
    
Klausureinsicht und -rückgabe: Mittwoch, 22.02.2006, 11.00 - 12.00 Uhr, SR V (Lahnberge)
Nachholklausur: Mittwoch, 05.04.2006, 9.00 - 11.00 Uhr, HS IV (Lahnberge)
Das Ergebnis der Nachholklausur ist auf der Ebene D5 gegenüber dem Informatik-Sekretariat durch Aushang bekanntgemacht.
Klausureinsicht und -rückgabe: Freitag, 07.04.2006, 12.00 - 13.00 Uhr, Raum 5435 (Büro Loogen)

Übungsblätter: Zur Benutzung von Haskell-Interpretern
HSWORDFILE.TXT für Syntaxhighlighting in UltraEdit
Blatt 1, 25.10.2005 (Postscript, PDF), Picture.hs
Blatt 2, 01.11.2005 (Postscript, PDF)
Blatt 3, 08.11.2005 (Postscript, PDF)
Blatt 4, 15.11.2005 (Postscript, PDF), Modul SearchTree.hs
Blatt 5, 22.11.2005 (Postscript, PDF), Hugs Graphics Library: GraphicsLib.zip plus Dokumentation (Postscript, PDF)
Blatt 6, 29.11.2005 (Postscript, PDF)
Blatt 7, 06.12.2005 (Postscript, PDF)
Blatt 8, 13.12.2005 (Postscript, PDF), Modul Frequency.hs, Kodierte Mitteilung
Blatt 9, 20.12.2005 (Postscript, PDF)
Blatt 10, 10.01.2006 (Postscript, PDF), satz.pl
Blatt 11, 17.01.2006 (Postscript, PDF)
Blatt 12, 24.01.2006 (Postscript, PDF)
Blatt 13, 31.01.2006 (Postscript, PDF)
Vorlesungsfolien: 1. Einführung
Beispielprogramme: Einführungsbeispiel: Simple.hs
Listen: bspLists.hs, Standardfunktionen: bspPrelude.hs Fallstudie: queue.hs
Algebraische Datenstrukturen: bspStructures.hs, Fallstudie: SearchTree.hs
Monadische Ein-/Ausgabe: bspMonadicIO.hs, Einfache Graphiken mit der Hugs Graphics Library: bspGraphics.hs
Funktionen höherer Ordnung: bspHOF.hs, ... über allgemeinen Bäumen: bspRoseTreeMapFold.hs, Fallstudie Indexerstellung: index.hs
Monadische Kompositionsoperatoren: bspIOCompositions.hs,
Lazy Evaluation: bspLaziness.hs
Prolog-Beispielprogramme
Haskell-Simulation der SECD-Maschine
IO-Exceptions in Haskell: bspIOExceptions.hs

Literatur:
  1. Deklarative Programmierung
    siehe auch Haskell Bookshelf
  2. Konzepte von Programmiersprachen
    • David A. Watt: Programmiersprachen: Konzepte und Paradigmen, Hanser 1996.
    • Ravi Sethi: Programming Languages: Concepts and Constructs, Addison-Wesley 1990.
    • Robert W. Sebesta: Concepts of Programming Languages, 6. Auflage, Addison-Wesley 2004.
    • John C. Mitchell: Concepts of Programming Languages, Cambridge University Press 2003.
    • Bruce MacLennan: Principles of Programming Languages Design, Evaluation and Implementation, Oxford University Press 1999.
Skript: Der erste Teil kann im Informatik-Sekretariat auf Ebene D5 (Lahnberge) zum Preis von 5€ erworben werden.

Links: Haskell Homepage
Warum funktional programmieren?
Learning Haskell
Der Hugs-Interpreter, Hugs-Downloads
Typische Fehlermeldungen des Hugs-Interpreters
Das Hugs-Manual ( PDF)
SWI-Prolog Homepage
SWI-Prolog Online Manual (pdf-Version)


Inhalt:
  1. Deklarative Programmierung
    In deklarativen Programmiersprachen sind Programme Problembeschreibungen. Die Ausführung der Programme basiert auf der Manipulation von Ausdrücken, die Werte definieren. Details der Programmausführung, wie z. B. die Speicherverwaltung, spielen für den Programmierer keine Rolle. Daher erfolgt die Programmentwicklung schneller als in imperativen Sprachen und die Programme sind kürzer als entsprechende imperative. Zu den deklarativen Sprachen zählen funktionale und Logik-Sprachen. In der Vorlesung werden am Beispiel der funktionalen Sprache Haskell die grundlegenden Ideen und Konzepte deklarativer Programmierung vermittelt:
    • Rekursive Funktionsgleichungen
    • Algebraische Datenstrukturen und Pattern Matching
    • Funktionen höherer Ordnung
    • Polymorphe Typsysteme, Typinferenz
    • Auswertungsstrategien
    • Monadische Ein-/Ausgabe
  2. Methoden der Beschreibung der Semantik von Programmiersprachen: operationell, denotationell, axiomatisch
  3. Verifikation: Klasseninvarianten, Schleifeninvarianten, Verifikationsbedingungen, Hoare-Kalkül, Korrektheitsbeweise


Zuletzt geändert: Wednesday, 05-Apr-2006 15:08:50 CEST