Fachbereich Informatik und Mathematik
Institut für Informatik
Professur für Datenbanken und Informationssysteme
Professur für Künstliche Intelligenz und Softwaretechnologie
Uni Frankfurt Institut für Informatik
KIST DBIS

Grundlagen der Programmierung 2 [PRG-2]

Sommersemester 2015

Aktuelles
Klausurergebnisse Wintersemester
Die Ergebnisse der Klausur vom 09.Oktober 2015 sind unter diesem Link abrufbar (ohne Gewaehr).
Die Klausureinsicht findet am Donnerstag 15. Oktober 2015, um 14:00 Uhr in Raum 216, Robert-Mayer-Str. 11-15, 2. OG statt
Klausurergebnisse Sommersemester
Die Ergebnisse sind unter diesem Link abrufbar (ohne Gewaehr).

Anmeldung zur Klausur
Studierende folgender Fachrichtungen: Informatik, Bioinformatik, Physik, Mathematik und Geographie melden sich Online im QIS/LFS an, Details unter: go.uni-frankfurt
Alle anderen (Linguistik, Lehramt, ...) füllen bitte folgenden Zettel aus und geben diesen im Prüfungsamt Informatik (Robert-Mayer-Straße 11-15, Zimmer 19 - 20, Erdgeschoss) ab (bzw. werfen ihn in den Briefkasten vor dem Prüfungsamt).
Kombinatorparser und GHC 7.10
Dieser Hinweis betrifft nur diejenigen, die die Version 7.10 des GHC verwenden (bei Version 7.8 tritt dieser Fehler nicht auf. Falls Fehlermeldungen der Form
Ambiguous occurrence `<*>'
It could refer to either `CombParser.<*>',

auftreten, möge man in CombParser.hs und in Dateien, die CombParser.hs importieren noch zusätzlich die Zeile
import Prelude hiding ((<*>),(*>),(<*))
in beide Dateien oben einfügen.
Anmeldung für die Übungsgruppen
Nicht angemeldete Teilnehmer:
Die Gruppe 10 hat noch Kapazitäten. Bitte direkt beim entsprechenden Tutor per Email melden und fragen, ob er noch freie Plätze hat. Die Daten: Name, Matrikelnummer, Studiengang, Geburtsdatum dem Tutor geben. Dieser wird die Daten an die Professur weiterleiten.
Vorkurs Informatik
Vom 18.März - 25.März 2015 hat der Vorkurs Informatik zum Sommersemester 2015 statt gefunden. Das Material ist weiterhin auf der Webseite zum Vorkurs verfügbar.
Videos
Die Vorlesung werden aufgezeichnet. Die Videoaufzeichnungen sind hier zu finden.
Passwort und Username werden in der Vorlesung bekannt gegeben.
Haskell Compiler - GHC
Hinweise zum Benutzen und zur Selbstinstallation des GHC / GHCi sind auf dieser Seite zu finden.
Inhalt

Die Veranstaltung findet als gemeinsame Veranstaltung der Professuren für Künstliche Intelligenz und Softwaretechnologie (KIST) und für Datenbanken und Informationssysteme (DBIS) statt.

Die erste Hälfte wird von Herrn Prof. Dr. M. Schmidt-Schauß (KIST) gehalten.

Die zweite Hälfte wird von Herrn Dr. K. Tolle (DBIS) gehalten.

Hierbei sind folgende Inhalte vorgesehen.
Übersicht über Sprachparadigmen:
Funktionale Programmierung, Rekursion und Iteration, Typisierung, Operationale Semantik für funktionale Programmiersprachen, parallele Programmierkonzepte.
Einführung in den Compilerbau
Einführung in Datenbanksysteme:
Architekturen, konzeptionelle und logische Modelle, Entity- Relationship-Modell, Relationenmodell, Normalformen, Datenbankdesign, Abfragesprachen (SQL).
Vorlesung
Mittwoch, 9 Uhr c.t., Jügelhaus - Hörsaal V
Übung
Anmeldung für die Übungsgruppen
Die Anmeldung für die Übungsgruppen war bis Sonntag, 19. April 23:55 Uhr möglich. Die Verteilung der Teilnehmer und Teilnehmerinnen hat stattgefunden. Über die Seite
http://anmeldung.sd.uni-frankfurt.de/auge
können Sie erfahren, welcher Übungsgruppe sie zugeordnet wurden.
Nicht angemeldete Teilnehmer:
Die Gruppe 10 hat noch Kapazitäten. Bitte direkt beim entsprechenden Tutor per Email melden und fragen, ob er noch freie Plätze hat. Die Daten: Name, Matrikelnummer, Studiengang, Geburtsdatum dem Tutor geben. Dieser wird die Daten an die Professur weiterleiten.

Die folgende Tabelle zeigt die Übungstermine, die Tutor/en/innen (samt Email-Adresse ( AT durch @ ersetzen! ) und die Räume. Die Räume NM XXX befinden sich in der Neuen Mensa im ersten Stock. Die Hörsäle mit arabischer Nummer befinden sich im Hörsaalgebäude.

Zeit Montag Dienstag Mittwoch Donnerstag Freitag
8-10 Gruppe 1
Tutorin: Sobia Mohiudin
Raum: H 5
Gruppe 11
Tutor: Florian Stein
Raum: NM 113
10-12 Gruppe 2
Tutor: Lukas Larisch
Raum: H 5
Gruppe 3
Tutor: Sascha Rauh
Raum: H 5
Gruppe 4
Tutor: Niclas Günther
Raum: H 9
Gruppe 8
Tutor: Jia-Ming Lao
Raum: H 9
12-14 Gruppe 5
Tutorin: Kathrin Donandt
Raum: H 9
Gruppe 9
Tutor: Nils Dallmeyer
Raum: H 5
14-16 Gruppe 6
Tutor: Tung Le Trong
Raum: NM 113
Gruppe 10
Tutor: Patrick Pech
Raum: H 9
Gruppe 12
Tutorin: Sina Ditzel
Raum: H 5
16-18 Gruppe 7
Tutor: Timm Hess
Raum: NM 120

Organisatorisches
Die wesentlichen organisatorischen Hinweise sind hier zusammengefasst. Sie beinhalten Hinweise zur Übungsanmeldung, zur Abgabe und Bearbeitung der Übungsaufgaben, zur Modulprüfung, sowie zum Schreiben von Haskell-Programmen.
Die Folien zum Organisatorischen aus der ersten Vorlesung sind hier: organisation.pdf verfügbar
Unterlagen Teil I: Funktionales Programmieren & Compilerbau
Skript
Folien
Unterlagen Teil II: Datenbanken
Folien
Programme
  • Haskell-Programme aus der Vorlesung: [ prg2.hs]
  • Haskell-Programme zu Parsern:
  • Happy-Parserdefinitionen:
    Wer die Haskell-Platform installiert hat, hat auch schon den Parsergenerator Happy mitinstalliert.
    Der Parser wird mit happy Datei.y erstellt (wenn Datei.y die entsprechende Parserdefinition ist).
    Happy erstellt dann den Parser in der Datei Datei.hs.
    Mit happy -iInfo Datei.y wird dabei noch die Info-Datei namens Info erzeugt, die u.a. die Aktions- und Goto-Tabellen enthält.
    • Parser mit Shift-Reduce-Konflikt, if-then-Beispiel: sr-konflikt.y
    • Parser mit Reduce-Reduce-Konflikt: rr-konflikt2.y
    • Parser für Arithmetische Ausdrücke:
      • Mit Shift-Reduce-Konflikten: Parser1.y
      • Ohne Konflikte, da Prioritäten und Assoziativitäten angegeben sind: Parser2.y
Aufgaben
Die Abgabe der Aufgabenblätter ist jeweils bis zum Beginn der Vorlesung am Mittwoch möglich.
Im Hörsaal werden entsprechende Kästen bereit gestellt.
Verspätete Abgaben werden i.A. nicht angenommen.
Wer mittwochs morgen nicht pünktlich zur Abgabe erscheinen kann, hat die Möglichkeit sein Übungsblatt bereits vorher (z.B. Dienstag Nachmittag) abzugeben:

Links neben Raum 216 (2.Stock, Robert-Mayer-Str. 11-15 (Informatikgebäude)) ist ein weißer Briefkasten, in den die Abgaben eingeworfen werden können.
Bei der Abgabe sollten Sie beachten:
  • Ihr Name und Ihre Übungsgruppe (erfahren Sie spätestens am Mittwoch, 22.4. morgens) sollten lesbar auf der ersten Seite Ihrer Abgabe stehen
  • Bei Abgabe im Hörsaal: Bitte die Abgabe in den richtigen Kasten werfen.
  • Zu implementierende Programme sollten stets zusätzlich zur Abgabe auf Papier auch per Email als Quellcode-Datei an den entsprechenden Tutor geschickt werden. Hierbei gilt die selbe Frist, wie für die Abgabe -- mittwochs bis 09:15h, Ausnahme: Der Code zu Blatt 1 kann im Laufe des Mittwochs an den Tutor geschickt werden, da Sie Ihre Übungsgruppe erst Mittwoch morgen erfahren.
  • Erstellte Programme sind stets zu dokumentieren und zu testen, unabhängig davon, ob dies in der Aufgabenstellung explizit erwähnt wird.
  • Zum strukturierten Testen bieten sich auch entsprechende Pakete wie z.B. Hspec an.
Allgemeine Hinweise
Die Allgemeinen Hinweise beinhalten Hinweise zur Übungsanmeldung, zur Abgabe und Bearbeitung der Übungsaufgaben, zur Modulprüfung, sowie zum Schreiben von Haskell-Programmen.
Aufgabenbatt 1
Aufgabenblatt 1 (Haskell-Code: blatt1.hs) ist bis zum 22.04.2015 zu lösen.
Aufgabenbatt 2
Aufgabenblatt 2 (Haskell-Code (enthält die 5 Tresore): blatt2.hs) ist bis zum 29.04.2015 zu lösen.
Aufgabenbatt 3
Aufgabenblatt 3 (Haskell-Code: blatt3.hs) ist bis zum 06.05.2015 zu lösen.
Aufgabenbatt 4
Aufgabenblatt 4 (Haskell-Code: blatt4.hs) ist bis zum 13.05.2015 zu lösen.
Aufgabenbatt 5
Aufgabenblatt 5 (Haskell-Code: blatt5.hs) ist bis zum 20.05.2015 zu lösen.
Aufgabenbatt 6
Bitte beachten: Auf dem ausgedruckten Blatt war in der Grammatik zu Aufgabe 2b) ein Tippfehler in der Produktion für I:
Richtig ist I ::= <saft>N B E V</saft>
Aufgabenblatt 6 (Haskell-Code: blatt6.hs) ist bis zum 27.05.2015 zu lösen.
CombParser.hs enthält die Parser-Kombinatoren, die in Aufgabe 2 benötigt werden.
Ein einfaches Beispiel mit Kommentaren zur Verwendung der Parser-Kombinatoren: einfachesParseBeispiel.hs
Beispieleingabe für Aufgabe 1 sind in SusisSaefte.txt und NorbertsSaefte.xml. Eine erzeugte Ausgabe ist Saefte_output.txt
Aufgabenbatt 7
Aufgabenblatt 7 (Haskell-Code: blatt7.hs enthält u.a. einen Parser für Pferde-Programme) ist bis zum 03.06.2015 zu lösen.
. Das Webinterface für Stackmaschinenprogramme ist unter http://www.ki.informatik.uni-frankfurt.de/stackmachine aufrufbar.
Aufgabenbatt 8
Aufgabenblatt 8 ist bis zum 17.06.2015 zu lösen.
Saftliste Aufgabe 2: Saft.csv
Musterloesung Aufgabe 2
Aufgabenbatt 9
Aufgabenblatt 9 ist bis zum 24.06.2015 zu lösen.
Musterlösung Aufg. 2 Blatt 8 als Basis für Aufgabe 5 siehe oben
Musterlösung Blatt 9
Aufgabenbatt 10
Aufgabenblatt 10 ist bis zum 01.07.2015 zu lösen.

Musterlösung Blatt 10 und der Dump zu Aufgabe 2.
Aufgabenbatt 11
Aufgabenblatt 11 ist bis zum 08.07.2015 zu lösen.

Musterlösung Blatt 11
Aufgabenbatt 12
Aufgabenblatt 12 ist bis zum 15.07.2015 zu lösen.
Musterlösung Blatt 12 und der SQL-Dump zu Aufgabe 2.
Weiteres Material

Zur Programmiersprache Haskell:

Offizielle Homepage zu Haskell
http://haskell.org
Haskell 2010 Language Report (Offizielle Sprachdefinition von Haskell 2010)
http://www.haskell.org/onlinereport/haskell2010/ (Online-Version)
http://haskell.org/definition/haskell2010.pdf (PDF)
Dokumentation der 'Haskell Hierarchical Libraries' (Standard-Programmbibliotheken zu Haskell)
http://www.haskell.org/ghc/docs/latest/html/libraries/
Implementierungen
Haskell Platform: http://hackage.haskell.org/platform
Glasgow Haskell Compiler (GHC): http://haskell.org/ghc
Weitere Implementierungen: http://www.haskell.org/implementations.html
Bücher
Manuel M. T. Chakravarty / Gabriele C. Keller: Einführung in die Programmierung mit Haskell
Miran Lipovaca: Learn You a Haskell for Great Good! (Aus dem Netz der Universität kostenlos zugänglich (E-Book-Lizenz der Universitätsbibliothek))
Marco Block, Adrian Neumann: Haskell-Intensivkurs: Ein kompakter Einstieg in die funktionale Programmierung (Aus dem Netz der Universität kostenlos zugänglich (E-Book-Lizenz der Universitätsbibliothek))
Simon Thompson: Haskell: The Craft of Functional Programming
Weitere Bücher: http://www.haskell.org/haskellwiki/Books#Textbooks
Tutorials
Das Skript zum Vorkurs Informatik beinhaltet eine Einführung in Haskell: Vorkursskript. Weiteres Material zum Vorkurs sind auf der Webseite zum Vorkurs zu finden.
A Gentle Introduction to Haskell: http://www.haskell.org/tutorial/
Weitere Tutorials: http://www.haskell.org/haskellwiki/Books#Papers_available_on_the_Web

Zu Datenbanken:

Bücher
Batini, Navathe, Ceri: "Conceptual Database Design: An Entity-Relationship Approach", Benjamin-Cummings
Kemper, Eickler: "Datenbanksysteme. Eine Einführung", Oldenbourg
Ramez Elmasri und Shamkant B. Navathe, 'Grundlagen von Datenbanksystemen', Pearson Studium, 2002
Gottfried Vossen, 'Datenbankmodelle, Datenbanksprachen, Datenbankmanagement-Systeme', Oldenbourg, 2000
Bernstein, Hadzilacos, Goodman, 'Concurrency Control and Recovery in Database Systems', Addison-Wesley, 1987
SQL:
SQL Tutorial (englisch): http://www.w3schools.com/sql/
SQL Online ausprobieren: http://sqlzoo.net/
Kontakt / Fragen
Weitere Informationen
Studienfächer / Studienrichtungen:
  • BSc Informatik: Pflichtveranstaltung im Basismodul B-PRG2: Programmierung 2
  • L3 Informatik: Pflichtveranstaltung im Modul L3-CS-PRG2 Programmierung-2
  • L2/L5 Informatik: Wahlpflichtveranstaltung im Modul L5-CS-IG 2 Informatikgrundlagen 2
  • BSc Bioinformatik: Pflichtveranstaltung im Bioinf. Modul 2 Grundlagen der Programmierung (B-PRG)
  • BSc Physik der Informationstechnik: Pflichtveranstaltung im Modul 9: Informatik A
(c) 2015 KIST, DBIS, Impressum