CS 310: Praktische Informatik III: Konzepte von Programmiersprachen
VL+UE 12 113 11310 Praktische Informatik III: Konzepte von Programmiersprachen
Prof. Dr. R. Loogen
Mo, 12.15-14.00, HG 7 (Biegenstraße), Mi, 08.15 - 10.00, HG 7 (Biegenstraße)
Beginn: 13. Oktober 2008
Übungstermine wahlweise donnerstags 12-14 (HS I) oder 16-18 (HS III), jeweils auf den Lahnbergen
Tutor/inTerminRaumE-Mail
Dominik Krappel Do, 12-14 UhrHS I (Ebene D3, Lahnberge) hannoman2 at googlemail.com
Ulrike Georgi Do, 16-18 UhrHS III (Ebene D3, Lahnberge) ulrikegeorgi at gmx.de
Die Übungsgruppen beginnen in der zweiten Vorlesungswoche, d.h. am 22. und 23. Oktober 2008.
Am Montag, dem 9. Februar 2009, findet um 16.15 Uhr im Hörsaal I (Lahnberge) ein Sondertutorium vor der Klausur statt!
Fachgebiet Klassifikation Semester Leistungspunkte Skript
Informatik Grundstudium >=1 8 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: Studierende des Bachelor-/Masterstudiengangs Informatik oder des modularisierten Lehramtsstudiengangs Informatik müssen sich vier Wochen vor Vorlesungsende zu der Modulprüfung anmelden.
Die Modulprüfung besteht aus der Klausur am Semesterende. Als Zulassungsvoraussetzung für die Klausur sind die Kriterien für den Erwerb eines unbenoteten Scheins (siehe unten) zu erfüllen.

Studierende anderer Studiengänge können einen Leistungsnachweis erwerben.
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 Übungsaufgabe
Zum Erwerb eines benoteten Scheins ist zusätzlich am Semesterende eine Klausur zu bestehen.
Übungsorganisation Die Übungsblattaus- und -abgabe erfolgt jeweils vor der Mittwochsvorlesung. Das erste Blatt wird am Mittwoch, dem 15. Oktober erscheinen.
Die Abgabe der Übungsaufgaben ist in Zweiergruppen erlaubt. Die Lösungen sollten grundsätzlich schriftlich, Programme zusätzlich per E-Mail an Ihren Tutor oder Ihre Tutorin abgegeben werden.


Klausurtermin: Mittwoch, 11.02.2009, 8.00 - 10.00 Uhr, HG 7
Bitte bringen Sie Ihren Studentenausweis und den Personalausweis mit!
Ergebnis der Klausur:
Von den 30 Teilnehmern haben 12 bestanden.
Die Ergebnisse hängen gegenüber dem Informatik-Sekretariat auf Ebene D5 aus.
Es ergab sich folgendes Notenspektrum:
 
| sehr gut  | gut | befriedigend | ausreichend  |
|-----------|-----|--------------|--------------|
|     3     |  2  |       2      |     5        |
 
Klausureinsicht und -rückgabe: Donnerstag, 12.02.2009, 16.15 - 17.00 Uhr, HS III (Ebene D3, Lahnberge)
Nachholklausur: Dienstag, 31.03.2009, 10.00 - 12.00 Uhr, HS IV (Lahnberge)
Ergebnis der Klausur:
Von den 16 Teilnehmern haben 8 bestanden.
Die Ergebnisse hängen gegenüber dem Informatik-Sekretariat auf Ebene D5 aus.
Es ergab sich folgendes Notenspektrum:
 
| sehr gut  | gut | befriedigend | ausreichend  |
|-----------|-----|--------------|--------------|
|     0     |  4  |       3      |     1        |
 
Klausureinsicht und -rückgabe: 1. - 8. April 2009 bei Mischa Dieterle (Zimmer 05D20, Lahnberge)

Übungsblätter: Blatt 1, 15.10.2008, Abgabe: 22.10.2008, Picture.hs
Blatt 2, 22.10.2008, Abgabe: 29.10.2008, Übersicht über Haskell-Funktionen und -Operatoren
Blatt 3, 29.10.2008, Abgabe: 05.11.2008, Modul Formula
Blatt 4, 05.11.2008, Abgabe: 12.11.2008, SearchTree.hs, Korrektur (Aufg. 9): count hat Ergebnistyp Int.
Blatt 5, 12.11.2008, Abgabe: 19.11.2008, EditorKommandos.hs
Blatt 6, 19.11.2008, Abgabe: 26.11.2008, SOE Graphics Library (Download), Vordefinierte Funktionen
Blatt 7, 26.11.2008, Abgabe: 03.12.2007
Blatt 8, 03.12.2008, Abgabe: 10.12.2008
Blatt 9, 10.12.2008, Abgabe: 17.12.2008, robinson.hs
Blatt 10, 17.12.2008, Abgabe: 14.01.2009, Modul Frequency.hs, zu dekodierende Botschaft: botschaft.txt
Blatt 11, 14.01.2009, Abgabe: 21.01.2009
Blatt 12 (letztes Blatt in der Wertung), 21.01.2009, Abgabe: 28.01.2009
Blatt 13 (Bonusblatt), 28.01.2009, Freiwillige Abgabe: 04.02.2009
Zum Ueben: Klausuren aus 2006, 2004, 2002 und 2000
Die Klausuren sind nur von Fachbereichsrechnern zugänglich.
Vorlesungsunterlagen: Einführung: Einführungsfolien, Simple.hs
Listen: bspLists.hs, Fallstudie: queue.hs
Algebraische Datenstrukturen: bspStructures.hs, Fallstudie: SearchTree.hs
QuickCheck: Homepage, Folien, qctest.hs, testQueue.hs
Monadische Ein-/Ausgabe: bspMonadicIO.hs, Einfache Graphiken mit der SOE Graphics Library: bspGraphics.hs
Funktionen höherer Ordnung: bspHOF.hs ... über allgemeinen Bäumen: bspRoseTreeMapFold.hs
Fallstudien: Indexerstellung: index.hs, Routenplanung: Rumpfprogramm, Erste Vorlesungsversion (mit 2 Problemen), Korrigierte Vorlesungsversion, Entfernungstabelle
Lazy Evaluation: bspLaziness.hs, ... mit Annotationen für den Hood-Debugger: bspLazinessObservable.hs
Weihnachtsvorlesung: Haskore, Folien, haskore.zip
Vorlesungsfolien vom 19. Januar 2009: VL_lambda.pdf
Monadische Programmierung: monadProg.hs
Prolog-Beispielprogramme: bibel.pl, bibel1.pl, graph.pl, listen.pl, farben.pl, dutch.pl

Literatur:
  1. Funktionale Programmierung
    siehe auch Haskell Bookshelf
  2. Formale Modellierung
    • Chris Hankin: Introduction to Lambda Calculi for Computer Scientists, King's College Publications 2004.
    • Kees Doets, Jan van Eijck: The Haskell Road to Logic, Maths and Programming, King's College Publications 2004.
    • David A. Watt: Programmiersprachen: Konzepte und Paradigmen, Hanser 1996.
    • John C. Mitchell: Concepts of Programming Languages, Cambridge University Press 2003.
Skript: Das Skript ist von den Rechnern des Fachbereichs aus zugänglich.

Links: Haskell Homepage
SWI-Prolog Homepage


Inhalt:
  1. Einführung
  2. Grundkonzepte funktionaler Programmierung
  3. Datenstrukturen
  4. Nachweis von Programmeigenschaften
  5. Interaktive Ein-/Ausgabe
  6. Funktionen höherer Ordnung
  7. Typinferenz
  8. Laziness: Bedarfsgesteuerte Auswertung>
  9. Der Lambda-Kalkül
  10. Monadische Programmierung
  11. Denotationelle Semantik (nicht behandelt!)
  12. Logik-Programmierung


Zuletzt geändert: Friday, 07-Jun-2013 16:03:20 CEST