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 2007

Aktuelles
Die Scheine (nicht Bachelor) können ab sofort vormittags im Sekretariat KI, Frau Schifignano, Raum 202 abgeholt werden!
Die Klausurergebnisse sind online über den folgenden Button abrufbar (ohne Gewähr) und hängen links neben Zimmer 216 am Brett aus.
Klausurergebnis
Die Klausureinsicht findet am Freitag, den 27.07. um 9.30 in Zimmer 216 (Informatikgebäude) statt.
Anmeldung zur Klausur bis 13. Juli 2007 beendet.
Übungen Freitag 8-10
Die beiden Übungen:
  • Fr 8-10, Claudia Stockhausen
  • Fr 8-10, Conrad Rau, Eva Reitz
beginnen jeweils um 8.30h.
Feiertage: Di 1. Mai; Do 17. Mai, Mo 28. Mai; Do 7 Juni
Aufgrund der Feiertage findet an oben genannten Tagen jeweils keine Übung statt. Bitte besuchen Sie in den entsprechenden Übungswoche (beginned ab Mi, den 25.04) eine andere Übung. Es empfiehlt sich die Übung beim selben Tutor zu besuchen, sofern dieser zwei Übungsgruppen leitet.
Anmeldung zur Teilnahme an den Übungen
Zur Teilname an den Übungen war eine Anmeldung bis Dienstag den 24. April 2007, 14:00h erforderlich. Das Ergebnis ist über den folgenden Knopf einsehbar.
Zusätzlich hängt das Ergebnis links neben Raum 216 (2.Stock, Informatikgebäude, Robert-Mayer-Str. 11-15) aus!
Forum
Es gibt ein Forum für die Teilnehmer der Veranstaltung.
War aktuell ...
Die erste Veranstaltung findet am Mittwoch, den 18. April 2007 im Magnus Hörsaal um 9 c.t. statt.
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 ersten Hälfte wird von Herrn Prof. Dr. M. Schmidt-Schauß (KIST) gehalten. Die zweite Hälfte wird von Herrn Prof. Dott. Ing. R. Zicari (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 die objektorientierte Programmierung:
Klassen, Objekte, Kommunikation, Vererbung, Architekturen von OO-Programmen, Java, UML.
Einführung in Datenbanksysteme:
Architekturen, konzeptionelle und logische Modelle, Entity- Relationship-Modell, Relationenmodell, Normalformen, Datenbankdesign, Abfragesprachen (SQL).
Vorlesung
Mi 9-12 Magnus-Hörsaal
Übung
Es wird verschiedene Übungstermine geben, die Verteilung der Teilnehmer auf die Übungsgruppen findet zu Beginn der Veranstaltung statt. Die ersten Übungen werden ab Mittwoch, den 25.April stattfinden.
Eine Übersicht über die Übungstermine, Tutoren und Räume gibt die folgende Tabelle. Ihren Platz finden Sie über den folgenden Knopf:
Übungsgruppenzuordnung

Zeit Montag Dienstag Mittwoch Donnerstag Freitag
8-10 Eva Reitz
NM 119
Claudia Stockhausen
NM 118
10-12 Frank Abromeit
NM 118
12-14 Frank Abromeit
NM 118
Igor Geier
NM 118
Thomas Schröder
NM 118
Igor Geier
NM 118
Eva Reitz
NM 133
14-16
16-18 Thomas Schröder
NM 116

Die Email-Adressen der Tutoren sind der folgenden Liste zu entnehmen:
Claudia Stockhausen
Conrad Rau
Desislava Ilieva
Eva Reitz
Frank Abromeit
Igor Geier
Thomas Schröder
Klausur und Studienleistung
Vergabe der Studienleistung
Eine benotete Studienleistung wird vergeben, falls in der Klausur 50 oder mehr Punkte erreicht werden. Die Klausur hat insgesamt 100 Punkte.
Bonuspunkte
Es können je Teil bis zu 12,5 Bonuspunkte für die Klausur durch erfolgreiche Übungen erworben werden (insgesamt somit bis zu 25). Voraussetzung für die Anrechnung von Bonuspunkten ist, dass der Studierende mindestens einmal eine Aufgabe innerhalb der Übungen vorgerechnet hat. Im ersten Teil gibt es 6 Aufgabenblätter mit je 100 Übungspunkten, im zweiten Teil gibt es ebenso 6 Aufgabenblätter mit je 100 Übungspunkten. Die Anzahl der Bonuspunkte berechnet sich nach der Formel:
Bonuspunkte = 12,5 * min {450, erreichte Übungspunkte Teil 1 (Blatt 1-6)} / 450
+
12,5 * min {450, erreichte Übungspunkte Teil 2 (Blatt 7-12)} / 450
d.h. wer in beiden Teilen mind. 450 von 600 Übungspunkten erreicht, erhält die maximale Anzahl von 25 Bonuspunkten. Darunter gibt es anteilig Punkte.
Benotung
Die Note der Studienleistung, wird anhand der Klausurpunkte (einschl. Bonuspunkte) wie folgt vergeben:
ab 50 Punkte: ausreichend (4.0)
ab 60 Punkte: befriedigend (3.0)
ab 70 Punkte: gut (2.0)
ab 80 Punkte: sehr gut (1.0)
Klausur
Die Klausur findet am Montag, den 23. Juli um 09.30 statt.
Abhängig von der Matrikelnummer schreibt jeder Student in einem der folgenden Räume:
Raum Magnus: Alle gerade MatNr. bis 33 80 000
Raum GV1 (auch bekannt als G1: Alle ungerade MatNr. bis 33 80 000
Raum GV2 (auch bekannt als G2): Alle MatNr. ab 33 80 001
Zur Teilnahme an der Klausur ist eine vorherige Anmeldung erforderlich:
Unterlagen Teil I: Funktionale Programmierung
Organisatorisches
Folien mit Hinweisen zur Organisation
Kapitel 1: Programmiersprachen: rekursives Programmieren in Haskell
Kapitel 2: Ströme als unendliche Listen in Haskell
Kapitel 3: Operationale Semantik: Haskell
Kapitel 4: Bäume
Kapitel 5: Haskell, Typen und Typberechnung
Compilerbau
Unterlagen Teil II: Datenbanken
Einführung in Datenbanken, ER-Model
Unterlagen Teil III: Objektorientierte Pragrammierung und Java
Einführung in die Objektorientierte Pragrammierung, Java und UML
Aufgaben
Die Abgabe der Aufgabenblätter ist jeweils bis zum Beginn der Vorlesung am Mittwoch möglich.
Verpätete Abgaben werden i.A. nicht angenommen. Im Hörsaal sind werden entsprechende Kästen bereit gestellt.
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 am Dienstag den 24.04.2007) 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 an den entsprechenden Tutor geschickt werden.
Aufgabenbatt 1
Aufgabenblatt 1 ist bis zum 25.04.2007 zu lösen.
Aufgabenbatt 2
Aufgabenblatt 2 ist bis zum 02.05.2007 zu lösen.
Aufgabenbatt 3
Aufgabenblatt 3 ist bis zum 09.05.2007 zu lösen.
Aufgabenbatt 4
Aufgabenblatt 4 ist bis zum 16.05.2007 zu lösen.
Aufgabenbatt 5
Aufgabenblatt 5 ist bis zum 23.05.2007 zu lösen.
Aufgabenbatt 6
Aufgabenblatt 6 ist bis zum 30.05.2007 zu lösen.
Für Aufgabe 1 sollten die funktionalen Parserkombinatoren combParser.hs benutzt werden.
Aufgabenbatt 7
Aufgabenblatt 7 ist bis zum 13.06.2007 zu lösen.
Aufgabenbatt 8
Aufgabenblatt 8 ist bis zum 20.06.2007 zu lösen.
Aufgabenbatt 9
Aufgabenblatt 9 ist bis zum 27.06.2007 zu lösen.
Aufgabenbatt 10
Aufgabenblatt 10 ist bis zum 04.07.2007 zu lösen.
Aufgabenbatt 11
Aufgabenblatt 11 ist bis zum 11.07.2007 zu lösen.
Aufgabe5.java (Klassenrumpf für Aufgabe 5)
Aufgabenbatt 12
Aufgabenblatt 12 ist bis zum 18.07.2007 zu lösen.
unsortiert.txt (Datei mit Zufallszahlen für Aufgabe 5)
Verwendete Software
Im ersten Teil der Vorlesung wird die Programmiersprache Haskell verwendet. Hierzu werden die folgenden Interpreter verwendet:
GHCi 6.6
Der GHCi ist auf den Rechner der RBI installiert und über das Kommando
/opt/rbi/bin/ghci
startbar.
Dieser Interpreter ist Bestandteil des Glasgow Haskell Compilers und steht in der verwendeten Version unter http://haskell.org/ghc/download_ghc_66.html für diverse Betriebssysteme zur Verfügung.
HUGS Verison September 2006
Der Hugs (Haskell User Gofer System) ist auf den Rechnern der RBI über das Kommando
/opt/rbi/bin/hugs
startbar.
Unter http://cvs.haskell.org/Hugs/pages/downloading.htm steht der Interpreter für diverse Betriebssysteme zur Verfügung.
Weiteres Material

Zur Programmiersprache Haskell:

Offizielle Homepage zu Haskell
http://haskell.org
Haskell 98 Report (Offizielle Sprachdefinition von Haskell 98)
http://www.haskell.org/onlinereport (Online-Version)
http://haskell.org/definition/haskell98-report.pdf (PDF)
Dokumentation der 'Haskell Hierarchical Libraries' (Standard-Programmbibliotheken zu Haskell)
http://www.haskell.org/ghc/docs/latest/html/libraries/
Implementierungen
Glasgow Haskell Compiler (GHC): http://haskell.org/ghc
Haskell User Gofer System (HUGS): http://haskell.org/hugs
Weitere Implementierungen: http://www.haskell.org/implementations.html
Bücher
Manuel M. T. Chakravarty / Gabriele C. Keller: Einführung in die Programmierung mit Haskell
Simon Thompson: Haskell: The Craft of Functional Programming
Weitere Bücher: http://www.haskell.org/haskellwiki/Books#Textbooks
Tutorials
A Gentle Introduction to Haskell: http://www.haskell.org/tutorial/
Weitere Tutorials: http://www.haskell.org/haskellwiki/Books#Papers_available_on_the_Web

Zur Programmiersprache Java:

Java Homepage Sun
http://java.sun.com
Java API Specification (Doku)
http://java.sun.com/j2se/1.5.0/docs/api/index.html
Java Compiler JDK 5.0 und Virtuelle Maschine JRE 5.0
http://java.sun.com/j2se/1.5.0/download.jsp
Eclipse
http://www.eclipse.org/
Weiterführendes
Java Tutorial: http://java.sun.com/developer/onlineTraining/new2java/index.html
Horstmann, Cornell: "Core Java 2, Band 1", Addison-Wesley
Java News: http://www.onjava.com/
Java Buch: http://www.boku.ac.at/javaeinf/jein.html
Reading: Bruce Eckel Thinking in Java Chapter1

Zu OO und UML:

UML Homepage
http://www.uml.org/
Bücher
Heide Balzert: "Lehrbuch der Objektmodellierung", Spektrum AV
Grady Booch, Jim Rumbaugh, Ivar Jacobson: "Das UML Benutzerhandbuch", Addison-Wesley
Grechenig, Zuser: "SE mit UML und dem Unified Process", Pearson
Eclipse mit Omondo-UML Plugin (für Windows2000/XP):
http://www.eclipsedownload.com/EclipseUML_E320_Free_Edition_2.1.0.20061006_including_Eclipse3.2.zip

Zu Datenbanken:

Bücher
Batini, Navathe, Ceri: "Conceptual Database Design: An Entity-Relationship Approach", Benjamin-Cummings
Kemper, Eickler: "Datenbanksysteme. Eine Einführung", Oldenbourg
SQL:
Einführung in SQL: http://www.hrz.uni-dortmund.de/Kurse/DB-Docs/SQLOracle.html
SQL Reference: http://www.sqltutorial.de/
SQL Tutorial: http://www.w3schools.com/sql/default.asp
SQL Course: http://sqlcourse.com/
SQL Tutorial: http://www.intermedia.net/support/sql/sqltut.asp
Wikipedia Artikel: english, deutsch
Artikel:
Referential Integrity Is Important For Databases
Kontakt
Für allgemeine bzw. organisatorische Fragen können Sie sich per Email an prg2@informatik.uni-frankfurt.de wenden.
Weitere Informationen
Studienfächer / Studienrichtungen: PF INF-BSc 2 , PF L3-CS-PRG ab 2 , BIOINF-D 2.
Pflichtveranstaltung des Basismoduls B-PRG (bestehend aus PRG-1 und PRG-2, insges. ECTS: 17).
(c) 2007 KIST, DBIS, Impressum