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 2014

Aktuelles
Klausur
Die Klausurergebnisse der Klausur vom 10.10.14 sind über den folgenden Button abrufbar:

Klausureinsicht: Dienstag, den 21. Oktober 2014 um 10:00h in Raum 216 (R-M-S 11-15)
Die Klausurergebnisse der Klausur vom 25. Juli 2014 sind über den folgenden Button abrufbar:

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
Es gibt verschiedene Übungsgruppen und Termine. Bitte beachten Sie, dass die Eintragungen im QIS/LSF hierbei nicht mit den tatsächlich stattfindenen Terminen übereinstimmen.

Übungsgruppen

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:

Für nicht angemeldete Studierende ist noch Platz in den Gruppen 1, 10 und 11. Bitte nehmen Sie Kontakt mit dem entsprechenden Tutor auf und melden Sie sich mit Ihren Daten direkt beim Tutor an.

Die folgende Tabelle zeigt die Übungstermine, die Tutoren (samt Email-Adresse) und die Räume. Die Räume NM XXX befinden sich in der Neuen Mensa im ersten Stock. SR 307 ist im Informatik-Gebäude (Robert-Mayer-Str. 11-15) im dritten Stock.

Zeit Montag Dienstag Mittwoch Donnerstag Freitag
8-10 Gruppe1:
Sobia Mohi-ud-Din

NM 126
Gruppe 10
Rafael Franzke

NM 123
10-12 Gruppe 2:
Nicolas Meisberger

NM 117
Gruppe 5:
Aybike Demirsan

NM 133
Gruppe 8:
Melvin Metzger

NM 118
Gruppe 11:
Chutipong Brunhs

NM 114
Gruppe 12:
Arno Appenzeller

NM 130
12-14 Gruppe 6:
Max Hofmann

NM 120
Gruppe 9:
Nils Dallmeyer

SR 307
14-16 Gruppe 4:
Sadik Yel

NM 114
Gruppe 7:
Noleen Köhler

NM 102

Unterlagen Teil I: Funktionales Programmieren & Compilerbau
Skript
Folien
Unterlagen Teil II: Datenbanken
Folien
Programme
  • Haskell-Programme aus der Vorlesung: [ prg2.hs, prg2Baum.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, 23.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.
Aufgabenblatt 0 (Keine Punkte aber wichtige 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 ist bis zum 23.04.2014 zu lösen.
Aufgabenbatt 2
Aufgabenblatt 2 (Haskell-Code: blatt2.hs) ist bis zum 30.04.2014 zu lösen.
Aufgabenbatt 3
Aufgabenblatt 3 (Haskell-Code: blatt3.hs) ist bis zum 07.05.2014 zu lösen:

Lösungsvorschlag zu Aufgabe 3: lottoscheine.hs
Aufgabenbatt 4
Aufgabenblatt 4 (Haskell-Code: blatt4.hs) ist bis zum 14.05.2014 zu lösen.
Lösungsvorschlag zu Aufgabe 1
Aufgabenbatt 5
Aufgabenblatt 5 (Haskell-Code: blatt5.hs) ist bis zum 21.05.2014 zu lösen.
Aufgabenbatt 6
Aufgabenblatt 6 ist bis zum 28.05.2014 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
blatt6.hs enthält die gegebenen Datentypen
Eine Eingabe für Aufabe 1: Bankkonten.txt und die erzeugte Ausgabe: Bankkonten_output.txt
Aufgabenbatt 7
Aufgabenblatt 7 ist bis zum 04.06.2014 zu lösen.
Der Parser für Jumpy-Programme: JumpyParser.hs
Aufgabenbatt 8
Aufgabenblatt 8 ist bis zum 18.06.2014 zu lösen.
Musterlösung Blatt 8 Aufg. 2 a und 2 b
Aufgabenbatt 9
Aufgabenblatt 9 ist bis zum 25.06.2014 zu lösen.
Aufgabenbatt 10
Aufgabenblatt 10 ist bis zum 02.07.2014 zu lösen.
Aufgabenbatt 11
Aufgabenblatt 11 ist bis zum 09.07.2014 zu lösen.
Aufgabenbatt 12
Aufgabenblatt 12 ist bis zum 16.07.2014 zu lösen.
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 (deutsch): http://www.sqltutorial.de/
SQL Tutorial (englisch): http://www.w3schools.com/sql/
SQL Online ausprobieren: http://sqlzoo.net/
Kontakt
gestellt werden.
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) 2014 KIST, DBIS, Impressum