|
Ludwig-Maximilians-Universität München
Institut für Informatik
Lehr- und Forschungseinheit für Datenbanksysteme
|
University of Munich
Institute for Computer Science
Database and Information Systems
|
Programmierpraktikum im WS 2007/08
Aktuelles:
- 07.04.08: Das Sekretariat ist leider weiterhin nicht besetzt, voraussichtlich bis 21.04.2008.
- 10.03.08:
Die Scheine sind fertig und können im Prinzip im Sekretariat abgeholt werden.
Das Sekretariat ist allerdings voraussichtlich bis 08.04.2008 nicht besetzt
(siehe http://www.dbs.ifi.lmu.de/Mitarbeiter/susanne.html).
Wir bitten Sie daher:
- Sich mit dem Abholen Ihres Scheines bis 08.04.2008 zu gedulden.
Alle, die bis zum Schluß durchgehalten haben, haben ja auch bestanden. Also: Keine Panik!
- Falls Sie aus einem wichtigen Grund Ihren Schein bereits vorher benötigen,
können Sie bei uns vorbeikommen, aber NUR Mo-Fr ZWISCHEN 11:00 Uhr und 11:15 Uhr.
- 14.02.08:
Achtung: Da einige vorher eine Klausur schreiben, beginnt die Schlußveranstaltung am
18.02.2008 erst um 10:15 Uhr.
- 13.02.08:
Die Termine der einzelnen Gruppen haben sich durch Tausch teilweise geändert:
aktuelle Termine.
- 29.11.07:
Achtung: Jede Vor-Gruppe (V01 bis V35) bekommt in der
kommenden Woche von uns Feedback zu ihrer Abgabe "Game of
Life". Dazu steht für jede Gruppe ein Zeitfenster von je 10
Minuten an folgenden Terminen bereit:
- Mittwoch zwischen 14:00 und 16:00 Uhr
- Donnerstag zwischen 10:00 und 11:00 Uhr
- Donnerstag zwischen 13:00 und 15:00 Uhr
- Freitag zwischen 10:00 und 11:00 Uhr
Im Plenum am Montag, 03.12.07, werden Listen von Terminen
bereitstehen, in die sich jede Gruppe für ihr Treffen mit uns
eintragen muss. Bis dahin sollte sich jede Gruppe mehrere
Zeiträume überlegen, in denen sie Zeit für unser Treffen hat.
- 16.11.07:
Sie können Ihre GUI einem Test mit folgender Datei unterziehen:
goltest.txt
- setzen Sie dazu die Liniendicke auf 1 und die Zellgröße auf 3,
dann sollte die Welt auf einen normalen Bildschirm passen.
Bei einer runden Welt ist dies ein periodisches Muster.
- 14.11.07:
Achtung: Bei den Abnahmen der Online-Präsentationen der einzelnen Gruppen ist uns aufgefallen,
dass bei einigen Gruppen nicht alle Anforderungen, die auf den Aufgabenblättern spezifiziert waren,
erfüllt wurden. Auch wenn die Lösung ansonsten schön ist und viele interessante Features
enthält, gilt grundsätzlich: Maßgeblich zum Erreichen eines Milestones sind die auf den
Aufgabenblättern angegebenen Minimalanforderungen, alle weiteren Features finden wir schön, sie
tragen aber nicht zum Erreichen des Milestones bei. Da wir insgesamt mit Eurer Arbeitsmoral im großen
und ganzen zufrieden sind, finden wir es unangebracht, allen betroffenen Gruppen eine gelbe Karte für
das Nicht-Erreichen des Milestones zu geben. Trotzdem müssen wir natürlich auf die Einhaltung der Milestones
bestehen. Daher gibt es für alle Gruppen ausnahmsweise die Gelegenheit, ihre Lösungen
entsprechend der Aufgabenstellung zu vervollständigen, damit der Milestone "Game of Life" (Aufgabenblatt 1-4)
erfüllt ist. Diese vervollständigte Version muss bis Mittwoch, den 21.11.2007, 8:00 Uhr morgens
im Repository sein und wird von uns nocheinmal überprüft. Gruppen, deren Lösungen dann nicht
die Minimalanforderungen erfüllen, werden mit einer gelben Karte für die Gruppe sanktioniert.
- 05.11.07:
Die Aktualisierung auf dem Webserver erfolgt wieder zur vollen Stunde.
- 03.11.07:
Wegen technischer Probleme wird die Version des Repository auf dem Webserver zur Zeit nur gelegentlich aktualisiert.
- 24.10.07:
Hinweise für die Subversion-Bereiche der einzelnen Gruppen s.u. http://www.dbs.ifi.lmu.de/Lehre/Programmierpraktikum/WS0708/gruppen/
- 15.10.07:
Einteilung der Gruppen für Vorprojekt und Referate s.u. Organisation.
- 26.09.07:
Zur Liste der zugelassenen Teilnehmer s.u. Organisation.
- 31.07.07:
Die Anmeldung zu den Praktika ist möglich (s.u. Organisation).
Inhalt:
In dem Praktikum sollen die Teilnehmer unter Anleitung ein größeres Programm entwerfen,
spezifizieren und implementieren und dabei die in den Vorlesungen "Informatik I+II" erlernten
grundlegende Konzepte und Techniken praktisch einsetzen.
Das Praktikum richtet sich an Studierende im Grundstudium und gilt als Wahlpflichtpraktikum vor dem Vordiplom.
Voraussetzung für die Teilnahme ist der Besuch der Vorlesungen Informatik I und II, sowie grundlegende
Kenntnisse der Programmiersprache Java.
Folgende Aspekte werden im Rahmen des Praktikums eine wichtige Rolle spielen:
- Objektorientierte Analyse und Programmentwicklung
- Dokumentation des Codes (mit javadoc)
- Verwendung von Software-Management-Tools (z.B. CVS)
- Wiederverwendung von Basisbausteinen durch Vererbung
- Einführung in Client-Server-Programmierung
- Benutzung von Threads (Nebenläufigkeit)
- Benutzung des Swing API zur Entwicklung einer graphischen Oberfläche
- Zusammenarbeit an einem größeren Projekt in einer Gruppe
Die neu zu erlernenden technischen Grundlagen werden in Seminarform
(d.h. durch Gruppen-Referate der Teilnehmer) vermittelt.
Anmeldung
Die Anmeldung zu den Praktika ist möglich von 30.07.-31.08.2007 unter:
http://www.nm.ifi.lmu.de/php-bin/praktikumsanmeldung.php?nr=71.
Nähere Informationen zu den Voraussetzungen finden Sie dort.
Bei Problemen mit der Anmeldung wenden Sie sich bitte an
Thomas Schaaf.
zugelassene Teilnehmer
Organisatorische Hinweise
Merkblatt (mit Zuordnung Tutoren-Gruppen)
Gruppen Vorprojekte und Referate
Zuordnung Gruppen-Studenten
Zuordnung Studenten-Gruppen
Hinweis zu den Seiten der einzelnen Gruppen (Subversion-Repository)
Gruppen Hauptprojekt
Zuordnung Gruppen-Studenten
Zuordnung Studenten-Gruppen
Zuordnung Tutoren-Gruppen
Zeit und Ort:
Veranstaltung |
Zeit |
Ort |
Beginn |
Plenum |
Mo, 10.00 - 12.00 Uhr |
1.14 (Oettingenstr. 67) |
15.10.2007 |
In den Plenum-Sitzungen besteht Anwesenheitspflicht.
Datum |
Themen |
Aufgaben/Milestones |
15.10.2007 |
Model-View-Controller |
Game of Life (1),
Gardner-Artikel
|
22.10.2007 |
- T1: "Malen nach Zahlen" - Graphikprogrammierung mit AWT: Koordinatensystem, geometrische Figuren, Bilder etc.
(Gruppe V07)
- T2: Einführung zu GUIs - Was sind Windows, Frames, Panels etc.? Wie ist eine GUI aufgebaut?
(Gruppe V17)
- T3: GUI Layout in AWT - Welche Elemente plaziert man wie wo und wie sieht es dann aus?
(Gruppe V18)
- T4: GUI Layout in Swing - Unterschiede zwischen Swing und AWT (in Absprache mit dem Referat T3), Layoutmanager in Swing
(Gruppe V19)
- T5: Wissen, wo was los ist - Das Designpattern "Observer", Ausblick auf das Event-Listener-Modell in Java
(Gruppe V35)
|
Game of Life (2)
|
29.10.2007 |
- T6: Was passiert, wenn ich da drauf drücke? - GUI-Kontroll-Items: Buttons, Slider, Radiobuttons, Menü, Dialogfelder, Textelemente, ... : Events und Listener
(Gruppe V05)
- T7: Die Klasse ist da, wo sie hingehört - Innere Klassen, lokale innere Klassen, anonyme Klassen, statische verschachtelte Klassen
(Gruppe V30)
- T8: Parallel oder sequentiell? - Nebenläufigkeit, Prozesse und Threads, Probleme bei nebenläufigen Prozessen/Threads, Synchronisation mit Monitoren
(Gruppe V22)
- T9: Mehrgleisig auch in Java? - Die Klasse Thread, das Interface Runnable, Synchronisation von Threads in Java
(Gruppe V33)
- T10: Dateien als Gruppe verwalten - Was sind und können CVS und Subversion? Grundlegende Kommandos und Regeln für Subversion
(Gruppe V16)
Achtung: Kontakt für die Referenten am 29.10.2007: Dr. Matthias Renz
|
Game of Life (3)
|
05.11.2007 |
- T11: Kleine Applikationen im Web - Applets: Lebenszyklus, Einbinden, Einschränkungen
(Gruppe V01)
- T12: Wie stelle ich eine Anwendung mit vielen Klassen zu Verfügung? - Jarfile mit Manifest, Ant als Deployment-Tool
(Gruppe V03)
- T13: Dokumentation eines Projektes – Javadoc: Tags, Overview-Seiten, Stil-Konventionen, Erzeugen der HTMLDokumentation
von Hand und durch Ant (in Absprache mit T12)
(Gruppe V32)
- T14: Eine mächtige, freie Entwicklungsumgebung – Eclipse: Überblick über die Funktionalität, Einbindung
von cvs/Subversion und Ant-build-files (Absprache mit T12 und T13, Rückbezug zu T10)
(Gruppe V27)
- T15: "Das gehen wir noch mal durch" – Das Design-Pattern "Iterator" und die Verwendung von Iteratoren im
Java-Collections-Framework
(Gruppe V23)
|
Game of Life (Applet, Dokumentation, Deployment)
|
05.11.-09.11.2007 |
Zwischenabnahme "Game of Life" |
12.11.2007 |
- T16: Netzwerk: Einführung - Netzwerkschichtmodelle, Client-Server Modell, Protokolle (IP, TCP, UDP)
(Gruppe V11)
- T17: CGI und Servlets - was ist CGI, was sind Servlets? Verwendung von Servlets, Aufruf von CGI-Skripten
(Gruppe V28)
- T18: Sockets - Das Konzept der Sockets, Client-Sockets, Server-Sockets
(Gruppe V02)
- T19: RMI - Prinzipielle Arbeitsweise von RMI, Remote-Interface, Remote-Object, Remote-Referenz, RMI-Registry, Stub, Skeleton
(Gruppe V24)
- T20: Design-Pattern: Proxy - Motivation, Struktur, Anwendung
(Gruppe V34)
Achtung: Kontakt für die Referenten am 12.11.2007: Arthur Zimek
|
Netzwerkprogramm
|
12.11.-19.11.2007 |
Zwischenabnahme "Game of Life"-Applet und Dokumentation (erfolgt online über die Präsentation auf der Gruppenseite) |
19.11.2007 |
- T21: Wer? Wie? Was? Warum? - Überblick über die Spielregeln und den Spielablauf der Siedler von Catan
(Gruppe V08)
- T22: Nicht wieder alle kopflos drauflos laufen bitte! - Verschiedene Software-Entwicklungsprozess-Modelle (z.B. Wasserfallmodell), typische Schritte im SWE-Prozess
(Gruppe V31)
- T23: Use-Case-Analyse - Was sind Use-Cases? Wie stellt man Use-Cases in UML dar?
(Gruppe V12)
- T24: UML: Statische Modellierung, Klassendiagramme - Wiederholung und Ergänzung des Kapitels aus Info 2 zum Thema statische Modellierung in UML (Klassendiagramme), Umsetzung der Konzepte in Java
(Gruppe V29)
- T25: UML: Dynamische Modellierung, Sequenzdiagramme - Was sind Sequenzdiagramme? Wozu kann man Sequenzdiagramme benutzen? Wie entwirft man Sequenzdiagramme?
(Gruppe V14)
|
Entwurf
|
19.11.-23.11.2007 |
Zwischenabnahme "Netzwerk-Applikation" |
26.11.2007 |
- T26: UML: Dynamische Modellierung, Zustandsübergangsdiagramme - Was sind Zustandsübergangsdiagramme?
Wozu kann man Zustandsübergangsdiagramme benutzen? Wie entwirft man Zustandsübergangsdiagramme?
(Gruppe V15)
- T27: "Nein, wir machen das noch anders" - Was sind Refactoring Patterns?
Häufige Patterns (z.B. Extract Interface, Extract Superclass, Extract Subclass, Push Up Field/Method/Contructor Body,
Push Down Field/Method, Collapse Hierarchy, Form Template Method)
(Gruppe V26)
- T28: "Wir machen nicht, wir lassen machen" - das Design-Pattern "Factory"
(Gruppe V06)
- T29: "Das gibt's nur einmal" - das Design-Pattern "Singleton"
(Gruppe V04)
|
Implementierung
|
03.12.2007 |
- T30: "Keiner hört mir zu" - Logging: Botschaften so ausgeben, dass man sie auch lesen kann
(Gruppe V21)
- T31: Fehlerreduktion durch planvolles und systematisches Testen (Beispiel: JUnit)
(Gruppe V20)
- T32: "Gestern ging's noch" - das Design-Pattern "State": zustandsabhängiges Verhalten
(Gruppe V25)
- T33: "Heute bist Du dran" - das Design-Pattern "Strategy": unterschiedliche Verhaltensmuster durch Delegation
(Gruppe V09)
- T34: Spieltheorie, Spielstrategien: Anregungen für "Siedler von Catan"-KIs
(Gruppe V10)
|
Kontrollelemente
|
10.12.2007 |
Nachbesprechung der Vorprojekte
|
Server
|
17.12.2007 |
kein Plenum
|
Client und GUI
|
07.01.2008 |
kein Plenum
|
Debugging und Benutzerführung
|
14.01.2008 |
kein Plenum
|
Cheat-Funktion zum Testen
|
21.01.2008 |
kein Plenum
|
Beta-Test
|
28.01.2008 |
kein Plenum
|
Endabnahme
|
04.02.2008 |
kein Plenum
|
|
18.02.2008 |
Schlußveranstaltung (Beginn: 10:15 Uhr)
|
|
Vorprojekt:
In den ersten drei Wochen wird in Gruppen von 3 Teilnehmern
eine Modellierung des "Game of Life" vorgenommen.
Hierbei sollen unterschiedliche
Möglichkeiten der Benutzerinteraktion vorgesehen werden.
Ziel des Vorprojektes ist es, die wichtigsten Konzepte, die auch für das Hauptprojekt benötigt werden,
in einem kleinen, übersichtlichen Projekt einzuüben.
Hauptprojekt:
In Gruppen von 6 Teilnehmern wird eine netzwerkfähige JAVA-Applikation entwickelt.
Dieses Programm soll das beliebte Spiel Die Siedler von Catan mit einer Client-Server-Architektur
realisieren. Dabei soll das Serverprogramm den Spielzustand repräsentieren und mit den Clientprogrammen der einzelnen
Mitspieler kommunizieren.
Der Spielzustand soll auf Klientenseite graphisch dargestellt werden und
Spielzüge sollen über Mausklicks eingegeben werden.
Der Server überwacht die Einhaltung der Regeln.
Computergesteuerte Spieler (KI) können abschließend eine interessante Erweiterung bilden.
© Franckh Kosmos Verlags-GmbH 1995
Wir verwenden die Java Standard Edition 6.0, die auch am CIP-Pool installiert ist.
Falls Sie zuhause arbeiten möchten, benötigen Sie das Java Development Kit (JDK 6), das Sie unter
http://java.sun.com/javase/downloads/index.jsp
frei herunterladen können.
Die Standardbibliothek, die mit der Standard-Edition zu Verfügung steht, ist vollständig dokumentiert unter
http://java.sun.com/javase/6/docs/api/.
Es gibt zahlreiche Bücher und Online-Materialien zu Java.
Wir empfehlen besonders:
Nützliche Links
Bei Problemen oder Vorschlägen wenden Sie sich bitte an:
wwwmaster@dbs.ifi.lmu.de
Last Modified: