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 2006

Aktuelles
Leistungsscheine
Die Leistungsscheine für Diplom-Studierende, L3-Studierende und Nebenfachstudierende sind erstellt und können bei Fr. Schifignano, Zimmer 202, Robert-Mayer-Str. 11-15, abgeholt werden (Mo-Fr, 9-12).

Die Studienleistungen für Bachelor-Studierende im Studiengang Informatik wurden automatisch an das Prüfungsamt gemeldet.
Klausur-Ergebnisse
Die Klausureinsicht findet statt am Freitag, den 4. August in Zimmer 223, Varrentrappstr. 40-42 von 11:00 - 12:00.

Die Klausurergebnisse hängen an den Professuren KIST (links neben Zi. 216) und DBIS aus, und sind (unverbindlich) über das folgende Formular abfragbar:

Evaluierung
Bitte evaluiert die Lehre unter Eval-Bogen!

Forum
Es gibt ein Forum für die Teilnehmer der Veranstaltung.
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.30-12 Magnus-Hörsaal
Übung
Für die Teilnahme an den Übungen war eine Anmeldung bis Dienstag, den 25. April, 14:00h erforderlich. Die Ergebnisse können über den Button eingesehen werden und hängen links neben Zimmer 216, Informatikgebäude (Robert-Mayer-Str. 11-15), 2. Stock aus.


Zuordnung auf die Gruppen

Der erforderliche Benutzername und das Passwort wurden in der ersten Vorlesung bekannt geben und hängen links neben Zimmer 216, Informatikgebäude (Robert-Mayer-Str. 11-15), 2. Stock aus.

Nicht angemeldete Studierende können die Übungen Donnerstag 14-16 oder Montag 12-14 besuchen. Beide Übungen finden in NM 113 statt, Tutorin ist E. Reitz.
Eine Übersicht über die Übungstermine, Tutoren, Räume und Email-Adressen der Tutoren gibt die folgende Tabelle

Zeit Montag Dienstag Mittwoch Donnerstag Freitag
10-12 F. Grimm
NM 119
prg2_fg@ki.informatik...
12-14 E. Reitz
NM 113
prg2_er@ki.informatik...
T. Werner
NM 123
prg2_tw@ki.informatik...
I. Geier
NM 123
prg2_ig@ki.informatik...
C. Rau
NM 124
prg2_cr@ki.informatik...
F. Abromeit
NM 113
prg2_fa@ki.informatik...
D. Ilieva
NM 123
prg2_di@ki.informatik...
14-16 E. Reitz
NM 113
prg2_er@ki.informatik...
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 bis zu 25 Bonuspunkte für die Klausur durch erfolgreiche Übungen erworben werden. Voraussetzung für die Anrechnung von Bonuspunkten ist, dass der Studierende mindestens einmal eine Aufgabe innerhalb der Übungen vorgerechnet hat. Die Anzahl der Bonuspunkte berechnet sich nach der Formel:
Bonuspunkte = 25 * min {900, erreichte Übungspunkte} / 900
d.h. ab 900 erreichten Punkten gibt es 25 Bonuspunkte, darunter anteilig Punkte. Insgesamt wird es Übungsaufgaben im Umfang von 1200 Punkten geben.
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 Samstag, den 22. Juli um 10.15 statt. Zur Teilnahme an der Klausur wird eine vorherige Anmeldung erforderlich sein.

Für die Klausur sind alle Studenten nach Matrikelnummer auf die Räume verteilt:
H 4, alle Studenten mit Matrikelnummer bis 287 9999.
H 8, alle Studenten mit Matrikelnummer 288 0000 bis 3131 999.
H 12, alle Studenten mit Matrikelnummer ab 3132 000.
Unterlagen Teil I: Funktionale Programmierung
Organisatorisches
Folien mit Hinweisen zur Organisation
Kapitel 1: Programmiersprachen: rekursives Programmieren in Haskell
Skript vom 09. Mai 2006
Folien, erster Teil vom 20. April 2006
Folien, zweiter Teil vom 26. April 2006
Folien, dritter Teil vom 03. Mai 2006
Folien, vierter Teil vom 10. Mai 2006
Kapitel 2: Ströme als unendliche Listen in Haskell
Skript vom 17. Mai 2006
Folien, erster Teil vom 10. Mai 2006
Folien, zweiter Teil vom 17. Mai 2006
Kapitel 3: Operationale Semantik: Haskell
Skript vom 17. Mai 2006
Folien vom 17. Mai 2006
Kapitel 4: Bäume
Skript vom 25. Mai 2006
Folien vom 24. Mai 2006
Kapitel 5: Typen und Typcheck
Skript vom 25. Mai 2006
Folien vom 25. Mai 2006
Kapitel 6: Sortierverfahren
Skript vom 31. Mai 2006
Folien vom 31. Mai 2006
Kapitel 7: Parallele Berechnungen
Skript vom 31. Mai 2006
Folien vom 31. Mai 2006
Programme
Haskell-Programme zum ersten Kapitel.
Haskell-Programme zu Ein- und Ausgabe
Haskell-Programme zu Strömen, Sortieren, Bäume, benötigt Random14.hs
Unterlagen Teil II: OOP und Java
Vorlesung 8
Folien Teil 1 (OOP) und Teil 2 (UML) vom 7. Juni 2006
Folien Teil 3 (Java) vom 7. Juni 2006
Reading vom 7. Juni 2006
Vorlesung 9
Folien Teil 4 (UML) vom 14. Juni 2006
Auf Folie 14 war ein Fehler! Folien Teil 5 (Java) vom 14. Juni 2006
Vorlesung 10
Folien Teil 6 (Fallbeispiel) vom 21. Juni 2006
Folien Teil 7 (Java) vom 21. Juni 2006
Vorlesung 11
Folien Teil 8 (Java) vom 28. Juni 2006
Unterlagen Teil III: Datenbanken
Vorlesung 11
Folien Teil 9 (DB Grundlagen) vom 28. Juni 2006
Vorlesung 12 / 13
Folien Teil 10 (SQL) vom 5. Juli 2006
Folien Teil 11 (SQL) vom 12. Juli 2006
Aufgaben
Aufgabenbatt 1
Aufgabenblatt 1 ist bis zum 26.04.2006 zu lösen.
Aufgabenbatt 2
Aufgabenblatt 2 ist bis zum 03.05.2006 zu lösen.
Aufgabenbatt 3
Aufgabenblatt 3 ist bis zum 10.05.2006 zu lösen.
Aufgabenbatt 4
Aufgabenblatt 4 ist bis zum 17.05.2006 zu lösen.
Aufgabenbatt 5
Aufgabenblatt 5 ist bis zum 24.05.2006 zu lösen.
Aufgabenbatt 6
Aufgabenblatt 6 ist bis zum 31.05.2006 zu lösen.
Aufgabenbatt 7
Aufgabenblatt 7 ist bis zum 14.06.2006 zu lösen.
Aufgabenbatt 8
Achtung! In Blatt 8, Aufgabe 5 ist ein Fehler. Es soll heissen:
Es soll möglich sein, der main-Methode als Argument die Anzahl der Scheiben zu übergeben!!!

Aufgabenblatt 8 ist bis zum 21.06.2006 zu lösen.
Aufgabenbatt 9
Aufgabenblatt 9 ist bis zum 28.06.2006 zu lösen.
Klassen zur Aufgabe 4 (ZIP)
Aufgabenbatt 10
Aufgabenblatt 10 ist bis zum 5.07.2006 zu lösen.
Aufgabenbatt 11
Aufgabenblatt 11 ist bis zum 19.07.2006 zu lösen.
Aufgabenbatt 12
Aufgabenblatt 12 ist bis zum 19.07.2006 zu lösen.
Verwendete Software
Im ersten Teil der Vorlesung wird die Programmiersprache Haskell verwendet. Hierzu werden die folgenden Interpreter verwendet:
GHCi 6.4.1
Der GHCi ist auf den Rechner der RBI installiert und über das Kommando
/usr/local/KIST_SS_2006/bin/ghci
startbar.
Dieser Interpreter ist Bestandteil des Glasgow Haskell Compilers und steht in der verwendeten Version unter http://haskell.org/ghc/download_ghc_641.html für diverse Betriebssysteme zur Verfügung.
HUGS Verison März 2005
Der Hugs (Haskell User Gofer System) ist auf den Rechnern der RBI über das Kommando
/usr/local/KIST_SS_2006/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/6.4.1/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

Zu OO und UML:

UML Homepage Sun
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

Zu Datenbanken:

Bücher
A. Silberschatz, Henry F. Korth: 'Database System Concepts', McGraw-Hill
J. Ullman: 'Principles of Database Systems', 2d ed., Computer Science Press, 1982
Ramez Elmasri und Shamkant B. Navathe: 'Grundlagen von Datenbanksystemen', Pearson Studium, 2002
Gottfried Vossen: 'Datenbankmodelle, Datenbanksprachen, Datenbankmanagement-Systeme', Oldenbourg, 1999
Alfons Kemper and Andre Eickler: 'Datenbanksysteme - Eine Einführung, 6. Auflage', Oldenbourg, 2006

Reading:

TIJ3 - Bruce Eckel
TIJ3 - Bruce Eckel
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).
Die Scheinvergabe erfolgt nach erfolgreicher Klausur-Teilnahme.
(c) 2006 KIST, DBIS, Impressum