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 2019

Aktuelles
Klausur
Die erste PRG-2 Klausur fand am 5. August 2019 ab 09:00 Uhr statt.
Die Zweitklausur findet am 11. Oktober 2019 ab 09:00 Uhr statt. Die Aufteilung auf die Räume (Bockenheim H IV, H V und H IV) folgt noch.
Anmeldung für die Klausur am 11. Oktober bis zum 04. Oktober 2019
  • Bioinformatik, Geographie, Informatik, Mathematik, Physik: online über QIS/LFS (Details unter: http://go.uni-frankfurt.de)
  • Lehramt - bitte eine kurze eMail an: tolle@dbis.cs.uni-frankfurt.de . mit Angabe von L2/3/5 und Matrikelnummer
  • Alle anderen (Linguistik, .): Anmeldung per Zettel! ...im Briefkasten des Prüfungsamtes Informatik einwerfen (Robert-Mayer-Str. 11-15 - Erdgeschoss)
Modulscheine Lehramt
Die ausgefüllten Modulscheine für Lehramtstudierende der Klausur vom 5. August 2019 sind abholbereit. Bitte sprechen Sie hierzu mit Frau Dölek einen Termin ab (), der Ort der Abholung ist der Raum 202, Robert-Mayer-Straße 11-15 (Informatikgebäude).
Klausurergebnisse
Die Klausurergebnisse der Klausur vom 5. August 2019 sind unter diesem Link abrufbar (ohne Gewähr).
Die Klausureinsicht findet am Donnerstag, den 15. August 2019 statt - Ort: Robert-Mayer-Str 11-15 (Informatikgebäude) Raum 216 im 2. Stock. Bei der Klausureinsicht sind Korrekturen in beide Richtungen möglich. Die Dauer der Einsicht ist pro Teilnehmer auf höchstens 15 Minuten beschränkt. Es gibt drei Slots:
  • Matrikelnummer kleinergleich 6613000 in der Zeit von 9:00-10:00 Uhr
  • Matrikelnummer größer 6613000 und kleinergleich 6890000 in der Zeit von 10:30-11:30 Uhr
  • Matrikelnummer größer 6890000 in der Zeit von 12:00-13:00 Uhr
Videoaufzeichnung vom 10.07.2019
Hier gab es ein Problem mit der Technik, so dass die Videodatei beschädigt ist. Als Ersatz möchten wir auf die Videoaufzeichnung vom 04.07.2018 von PRG-2 2018 verweisen. Die entsprechenden Zugangsdaten können aus den jetzigen Zugangsdaten abgeleitet werden.
Repetitorium
Tung Le Trong hält am Dienstag, den 30.7. von 10-18 Uhr ein Repetitorium in H IV.
Tutoren im Lernzentrum
Auch in diesem Semester gibt es Tutoren im Lernzentrum, die vor allem für die Basismodule fachliche Beratung anbieten. Die aktuellen Tutorenzeiten hängen im Lernzentrum aus. Das Lernzentrum befindet sich im 3. Stock der Robert-Mayer-Str. 10 (Matheturm).
Videos
Die Vorlesung wird aufgezeichnet. Die Videoaufzeichnungen sind hier zu finden.
Benutzername und Passwort wurden in der Vorlesung bekanntgegeben.
Beachten Sie bitte, dass die Videos nicht vom Lehrstuhl hochgeladen und verwaltet werden, weshalb wir keinen Einfluss darauf haben, wann die Videos verfügbar sind.
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 (bis einschließlich 05.06.2019).

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

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 Verteilung der Teilnehmerinnen und Teilnehmer hat stattgefunden. Über die Seite
http://anmeldung.sd.uni-frankfurt.de/auge
erfahren Sie, welcher Übungsgruppe Sie zugeordnet wurden. Die folgende Tabelle zeigt die Übungstermine, die Tutor/en/innen (samt E-Mail-Adresse ( AT durch @ ersetzen!) und die Räume.
Die Gruppennummer entspricht der Gruppennummer im AUGE-System. Die Räume befinden sich alle im Hörsaaltrakt Bockenheim.
Wichtig: Ein Wechsel zwischen Übungsgruppen ist nur mit einem Tauschpartner möglich. Wenden Sie sich bitte direkt an die betroffenen Tutoren, falls Sie einen Tauschpartner haben.

Zeit Montag Dienstag Mittwoch Donnerstag Freitag
8-10 Gruppe 1
Tutorin: Sina Wetzel
Raum: H 7
Gruppe 10
Tutorin: Anh Duong Vo
Raum: H 7
Gruppe 14
Tutor: Aleksey Koschowoj
Raum: H 7
10-12 Gruppe 2
Tutorin: Luisa Cardenas
Raum: H 7
Gruppe 5
Tutor: Robin Krause
Raum: H 15
Gruppe 6
Tutor: Adrian Welcker
Raum: H 7
Gruppe 18
Tutorin: Felora Karimi
Raum: H 8
Gruppe 11
Tutor: Lukas Müller
Raum: H 7
Gruppe 19
Tutor: Tung Le Trong
Raum: H 8
Gruppe 15
Tutorin: Katharina Dahmann
Raum: H 7
12-14 Gruppe 3
Tutor: Florian Boeck
Raum: H 7
Gruppe 7
Tutor: Chrisowalandis Deligio
Raum: H 7
Gruppe 12
Tutor: Lukas Müller
Raum: H 10
Gruppe 20
Tutor: Tung Le Trong
Raum: H 15
Gruppe 16
Tutor: Andreas Scholl
Raum: H 7
Gruppe 21
Tutor: Mevlüt Bagci
Raum: H 8
14-16 Gruppe 4
Tutor: Tobias Bergmann
Raum: H 7
Gruppe 8
Tutor: Chrisowalandis Deligio
Raum: H 7
Gruppe 17
Tutor: Lars Gröber
Raum: H 10
16-18 Gruppe 9
Tutorin: Marwa Abu-Ayyad
Raum: H 7
Gruppe 13
Tutorin: Amy Huang
Raum: H 7
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 verfügbar: organisation.pdf
Unterlagen Teil I: Funktionales Programmieren & Compilerbau
Skript
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 (Informationen zur Regelung am 1. Mai werden sich dann auf dem entsprechenden Aufgabenblatt finden).
Im Hörsaal werden entsprechende Kästen bereitgestellt.
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, Ihre Matrikelnummer und Ihre Übungsgruppe 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 E-Mail als Quellcode-Datei an den entsprechenden Tutor geschickt werden. Hierbei gilt die selbe Frist, wie für die Abgabe -- mittwochs bis 09:15h.
  • Erstellte Programme sind stets zu dokumentieren und zu testen, unabhängig davon, ob dies in der Aufgabenstellung explizit erwähnt wird.
Allgemeine Hinweise
Die Allgemeinen Hinweise beinhalten Hinweise zur Übungsanmeldung, zur Abgabe und Bearbeitung der Übungsaufgaben, zur Modulprüfung, sowie zum Schreiben von Haskell-Programmen.
Aufgabenblatt 1
Aufgabenblatt 1 (Haskell-Code: blatt1.hs) ist bis zum 24.04.2019 zu lösen.
Aufgabenblatt 2
Aufgabenblatt 2 ist bis zum 30.04.2019, 16 Uhr s.t. zu lösen, zur Abgabe dient der weiße Briefkasten bei Raum 216, Robert-Mayer-Straße 11-15.
Aufgabenblatt 3
Aufgabenblatt 3 (Haskell-Code: blatt3.hs) ist bis zum 08.05.2019 zu lösen.
Aufgabenblatt 4
Aufgabenblatt 4 (Haskell-Code: blatt4.hs) ist bis zum 15.05.2019 zu lösen.
Aufgabenblatt 5
Aufgabenblatt 5 (Haskell-Code: blatt5.hs, Beispiel-Musikstück zur zweiten Aufgabe: NiDa_-_Against_The_Lazyness.mp3) ist bis zum 22.05.2019 lösen.
Aufgabenblatt 6
Aufgabenblatt 6 (Haskell-Code: blatt6.hs) ist bis zum 29.05.2019 zu lösen.
CombParser.hs enthält die benötigten Parser-Kombinatoren.
Ein einfaches Beispiel mit Kommentaren zur Verwendung der Parser-Kombinatoren: einfachesParseBeispiel.hs
Aufgabenblatt 7
Aufgabenblatt 7 (Haskell-Code: blatt7.hs) ist bis zum 05.06.2019 zu lösen.
Das Webinterface für Stackmaschinenprogramme ist unter http://www.ki.informatik.uni-frankfurt.de/stackmachine zu finden.
Der Simulator kittSim kann hier heruntergeladen werden: kittSim-1.0.zip

Aufgabenbatt 8
Aufgabenblatt 8 ist bis zum 19.06.2019 zu lösen.
Hier die zu verwendenden CSV-Dateien für Aufgabe 2: Wikidata_RomanEmperor.csv und Wikidata_KindervonRomanEmperor.csv
... und die SPARQL-Anfragen unter Wikidata (falls das jemand ausprobieren möchte): AnfragenSPARQL.txt
Aufgabenbatt 9
Aufgabenblatt 9 ist bis zum 26.06.2019 zu lösen.
Der Musterdump zu Aufgabe 4 Musterdump_Blatt9_2019.sql. Es ist vorteilhaft die Datei mit "speichern unter" herunterzuladen, um zu vermeiden, dass Umlaute komisch aussehen!
Aufgabenbatt 10
Aufgabenblatt 10 ist bis zum 03.07.2019 zu lösen.
Aufgabenbatt 11
Aufgabenblatt 11 ist bis zum 10.07.2019 zu lösen.
Der Musterdump zu Aufgabe 2 Musterdump: blatt11_studenten.sql.
Aufgabenbatt 12
Aufgabenblatt 12 ist bis zum 17.07.2019 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
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
Allgemeine, organisatorische Fragen können an 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) 2019 KIST, DBIS, Impressum, Datenschutzerklärung