Lehr- und Forschungseinheit für Datenbanksysteme 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:


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:

Die neu zu erlernenden technischen Grundlagen werden in Seminarform (d.h. durch Gruppen-Referate der Teilnehmer) vermittelt.


Organisation:

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.


Zeitplan:

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)

Projekte:

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

Hilfsmittel:

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: