Intern
Chair of Computer Science II - Software Engineering

Allgemeine Informationen

Allgemeine Informationen

Homepage

Die zentrale Informationsseite zum Praktikum finden Sie unter:

https://se.informatik.uni-wuerzburg.de/lehre/sommer07/jpp/

Dort finden Sie alle aktuellen Informationen, Aufgaben, Antworten zu häufig gestellten Fragen, Verweise auf interessante/wichtige Ressourcen und mehr. Wenn Sie ein Problem (im Zusammenhang mit dem Praktikum) haben, sollten Sie immer zunächst dort nachsehen.

Kontakt

Lesen Sie Ihre Email und überprüfen Sie die Praktikums-Homepage regelmäßig. Wichtige Informationen werden dort, und nur dort bekanntgemacht. Achten Sie darauf, dass die in Praktomat eingetragene Adresse gültig ist!

Forum

Für Fragen und Diskussionen rund um das Praktikum und die Aufgaben steht für die Teilnehmer unter:

https://jpp.informatik.uni-wuerzburg.de/2007/ss/forum/

ein Online-Forum zur Verfügung. Dieses wird regelmäßig von den Tutoren besucht, die bei Problemen helfen werden. Bitte prüfen Sie daher zunächst immer (nach der Praktikums-Homepage) das Forum.

Natürlich können und sollen Sie sich auch gegenseitig über das Forum helfen. Das Austauschen von Code oder Codeteilen ist natürlich auch hier verboten. Siehe dazu auch: Gruppenarbeit

Unterlagen/Folien

Es wird ein HTML-basierter Foliensatz bereitgestellt. Dabei handelt es sich um eine Browser-basierte Einführung in die Programmiersprache Java mit interaktiven Beispielen, Aufgaben und mehr. Der Foliensatz wird (leicht abgewandelt) auch in der Vorlesung verwendet und kann von registrierten Teilnehmern hier heruntergeladen werden:

https://jpp.informatik.uni-wuerzburg.de/2007/ss/download/

Praktomat

Zur Aufgabenverwaltung verwenden wir Praktomat. Über diesen reichen Sie Ihre Lösungen ein. Die Abgabe der Lösungen ist ausschließlich über den Praktomaten möglich. Einreichungen per Email oder andere werden nicht akzeptiert!

Beim Einreichen wird Ihre Lösung automatisch einigen Tests unterzogen. Das Ergebnis dieser Tests wird Ihnen mitgeteilt. Dabei gibt es verpflichtende Tests, z.B. die Kompilierbarkeit des Programms, die bestanden werden müssen. Wenn Sie diese Tests nicht bestehen, können Sie die Lösung auch nicht einreichen.

Darüber hinaus gibt es zusätzlich nichtverpflichtende Tests. Sie können Ihr Programm auch einreichen, falls Sie diese nicht bestehen, jedoch deutet dies auf ein Problem in Ihrem Programm hin und wird in aller Regel zu einer schlechteren Bewertung des Programms führen.

Weiterhin gibt es auch noch geheime Tests, deren Ergebnis Ihnen nicht mitgeteilt wird, und natürlich wird Ihr Programm abschließend auch von einem (menschlichen) Korrektor überprüft.

Sie sollten sich beim Überprüfen Ihrer Programme also nicht ausschließlich auf die Tests des Praktomaten verlassen!

Sie finden den Praktomat unter:

https://jpp.informatik.uni-wuerzburg.de/2007/ss/praktomat/praktomat.cgi

Sie müssen Ihre Lösungen bis zu der in der Aufgabenstellung gesetzten Abgabefrist eingereicht haben. Später eingereichte Lösungen werden vom Praktomat und auch anderweitig nicht akzeptiert.

Hinweis: Da die Abgabe über das Internet erfolgt (d.h. Sie können auch von zuhause Ihre Lösungen einreichen), sollten Sie unbedingt berücksichtigen, dass das Internet kein 100% zuverlässiges Medium ist. Sie sollten Ihre Lösungen also nicht in der letzten Minute abgeben wollen. Verspätete Lösungen aufgrund von abgestürzten Rechnern, kaputten Modems, Problemen des Internetproviders oder ähnliches liegen in Ihrem Verantwortungsbereich, und werden nicht berücksichtigt!

Beachten Sie außerdem, dass der Praktomat nicht als Entwicklungsumgebung zu nutzen ist. Sie teilen sich dieses Abgabesystem mit Ihren Kommilitonen, und wenn einige wenige das System überlasten, so haben alle darunter zu leiden. Es wird daher protokolliert, wie oft Sie Code abgeben, und welche Probleme auftreten. Missbrauch kann zu Punktabzügen und/oder Ausschluss vom Praktikum führen.

Sollte das System doch überlastet sein, werden wir eine Abgabesperre aktivieren. Es werden dann nach einer Abgabe für einen variablen Zeitspanne keine weiteren Einreichungen mehr akzeptiert. Die Zeitspanne (z.B. 5 Minuten) wird an die Umstände angepasst.

Bitte vermeiden Sie für sich und andere Unannehmlichkeiten und reichen Sie nur Lösungen ein, die Sie vorher selbst getestet haben. Dazu gehört mindestens das Kompilieren und das lokale Ausführen der öffentlichen Tests.

Code Stil

Die eingereichten Lösungen werden vom Praktomat auch bezüglich Form und Kommentierung des Quelltextes geprüft. Dabei werden die gängigen Java-Konventionen eingefordert. Das Werkzeug mit dem dies geprüft wird ist Checkstyle (http://checkstyle.sf.net/). Die Konfiguration für Checkstyle wird über die Praktikums-Homepage zur Verfügung gestellt. Sie können (und sollen) Ihren Quelltext also bereits vor der Abgabe überprüfen.

System

Als Referenzsystem dient immer die Java Installation des Praktomaten (JDK 6.0 auf SuSE Linux). Hier muss das Programm funktionieren. Es ist nicht ausreichend, wenn Ihr Programm „bei Ihnen daheim“ oder „auf dem Laptop“ funktioniert.

Übungen

Zum Erstellen der Aufgaben steht Ihnen während der Praktikumszeit der CIP-Pool ganztägig zur Verfügung. Sie können die Aufgaben allerdings auch von zuhause lösen. Weiterhin gibt es auch betreute Übungen und ein Forum. Details hierzu finden Sie auf der Praktikums-Homepage.

Gruppenarbeit

Gruppenarbeit ist nicht erlaubt. Die nötige Selbstständigkeit gilt auch für Codefragmente! Bei Zuwiderhandlungen bekommen alle Beteiligten die jeweilige Aufgabe nicht anerkannt. Wenn jemand, selbst ohne Ihr Wissen, Ihre Lösung kopiert, riskieren Sie, dass Ihnen die Aufgabe nicht anerkannt wird! Es liegt in Ihrer Verantwortung Ihre Daten entsprechend zu sichern! Wir behalten uns auch vor, bereits testierte Aufgaben noch abzuerkennen. Bei mehrfachem Auftreten droht der Ausschluss aus dem Praktikum.

Aufgaben

Die Aufgaben werden in 5 Blöcken abgegeben. Der Block A dient als eine Art Einführung. Die Aufgaben der weiteren Blöcke teilen sich dann in zwei Themenbereiche, in denen jeweils eine einfache Applikation entwickelt werden soll.

Auch wenn die Aufgaben thematisch zusammengehören, so sind sie jedoch weitgehend so gestaltet, dass sie relativ unabhängig (d.h. mit möglichst wenig Abhängigkeiten zu vorhergehenden Aufgaben) voneinander gelöst werden können. Trotzdem empfiehlt es sich natürlich beim Lösen einer Aufgabe auch schon die Anforderungen der darauf aufbauenden Aufgaben zu berücksichtigen. Die Abhängigkeiten können den einzelnen Aufgabenstellungen entnommen werden.

Sollten Sie benötigte Programmteile aus vorherigen Aufgaben nicht oder nur mangelhaft implementiert haben, so müssen Sie diese Teile nachimplementieren bzw. nachbessern!

Es müssen nicht unbedingt alle Aufgaben implementiert werden. Sie sollten aber sorgfältig planen, damit Sie nicht gegen Ende in den Zwang kommen vorher ausgelassene Aufgaben nachzuimplementieren.

Wichtig: Es gelten immer die neuesten verfügbaren Aufgabenstellungen. Änderungen (insb. Korrekturen oder Klarstellungen) nach Bekanntgabe sind nicht ausgeschlossen! Änderungen werden über die Praktikums-Homepage bekanntgemacht.

Implementierung

Alle erstellten Klassen, Interfaces usw. einer Aufgabe sind im selben Paket abzulegen. Für die Aufgaben A.1 und A.2 wird das default-Paket verwendet, für die restlichen Aufgaben ist das Paket jeweils der Aufgabenstellung zu entnehmen.

Der erstellte Code ist nicht nur funktional korrekt, sondern insbesondere auch klar und verständlich zu implementieren. Verwenden Sie für sich sprechende Namen, und einfache Strukturen. Besondere Effizienz ist nicht notwendig, übermäßige Ineffiziez ist aber zu vermeiden.

Die Java-Code-Konventionen sind zu berücksichtigen. Diese sind (teilweise) auch Voraussetzung für die Einreichung von Lösungen!

Sie dürfen, und sollen sogar Nutzklassen aus der Java-Standard-API verwenden. Es sei an dieser Stelle insbesondere auf das Collections-Framework mit seinen Sammlungen und Listen aus dem Paket java.util hingewiesen.

Erstellen Sie zu jeder Aufgabe ein Hauptprogramm das den in der Aufgabe implementierten Code sinnvoll demonstriert. Geben Sie Ihr Hauptprogramm mit ab. Dies wird nicht unbedingt automatisch geprüft, Sie sollten jedoch trotzdem eine sinnvolle Demonstration implementieren, da das bei der manuellen Abschlusskorrektur berücksichtigt wird. Darüber hinaus dient es für Sie selbst zur Überprüfung Ihrer Klassen und Methoden.

Punkte

Für die Aufgaben gibt es unterschiedlich viele Punkte. Darüber hinaus werden verschieden Kategorien bewertet

1 2 3 4 Summe Bewertete Kategorien
Block A 12 8 20 Funktionalität
Block B 15 12 12 15 54 Funktionalität, Stil
Block C 15 20 15 20 70 Funktionalität, Stil, Verständichkeit
Block D 15 20 25 25 85 Funktionalität, Stil, Verständichkeit, Robustheit
Block E 25 25 15 20 85 Funktionalität, Stil, Verständichkeit, Robustheit

Weitere Details, sofern notwendig, sind den einzelnen Aufgabestellungen zu entnehmen.

Anforderungen

Es werden insgesamt 18 Aufgaben gestellt. Auf die Aufgaben gibt es insgesamt 314 Punkte.

Es wird erwartet, dass in Aufgabenblock A mindestens eine Aufgabe, in Aufgabenblock B bis E mindestens jeweils 2 Aufgaben erfolgreich (d.h. mit mindestens 50% der erreichbaren Punkte bewertet) gelöst werden.

Weiterhin sind insgesamt mindestens nötig

Informatiker (Hauptfach) 207 Punkte 66%
Hörer anderer Fachrichtungen 157 Punkte 50%

Mit diesen Voraussetzungen können Sie dann an der Abschlussprüfung teilnehmen.

Termine

Block Termin
A Mo, 05.03.2007, 12:00 Uhr
B Fr, 09.03.2007, 12:00 Uhr
C Fr, 16.03.2007, 12:00 Uhr
D Fr, 23.03.2007, 12:00 Uhr
E Fr, 30.03.2007, 12:00 Uhr
Abschlussprüfung Do, 12.04.2007

Viel Spaß und viel Erfolg !


Informationen zu den Aufgaben:

Chart

Im Laufe des Praktikums soll eine Applikation zum Darstellen von einfachen Diagrammen entwickelt werden.

Dazu wird zunächst ein Datenmodell einer einem Diagramm zugrundeliegenden Relation entworfen. Eine Relation ist allgemein eine Teilmenge des karthesischen Produkts von zwei oder mehreren Mengen. Für unsere Diagramme beschränken wir uns auf eine Relation über double x double x String.

Damit können z.B. Punkte im zweidimensionalen Raum zusammen mit einer Kategorie dargestellt werden. Es lässt sich dann z.B. ein Versuch mit mehreren Messreihen in einer Relation erfassen und später darstellen. Dabei wird z.B. ein Eingangswert (x) und ein Messwert (y) zusammen mit der Kategorie (z.B. Messreihe1, Messreihe2, ...) in die Relation eingetragen.

Basierend auf diesem Datenmodell werden Modifikationen und Analysen der Relation implementiert, die die spätere Darstellung vereinfachen bzw. anreichern werden.

Zusätzlich muss die Relation natürlich nicht nur als Datenmodell vorliegen, sondern auch gespeichert und geladen werden können. Dazu wird eine einfache Variante des CSV Dateiformats verwendet.

Letztendlich wird die Relation zunächst auf einer Konsole, später graphisch ausgegeben. Die Darstellung wird dabei mit weiteren Informationen aus der Analyse angereichert (z.B. Mittelwert, Varianz, ...), um die Informationen leichter erfassbar zu machen.

Warenwirtschaft

Als zweites “Projekt” soll eine einfache Warenwirtschaft implementiert werden.

Dazu werden zunächst Klassen für Kunden, Artikel, Aufträge und Rechnungen und deren Verwaltung entwickelt. Diese werden mit Hilfe von Property-Dateien gespeichert und wieder geladen.

Damit das System auch mit dem Benutzer interagieren kann, wird weiterhin ein einfaches Menü-System für die Konsole entworfen, und noch um einen Mechanismus erweitert, der die Selektion aus großen Datenmengen durch Filtern und Sortieren vereinfacht.

Bei der Zusammenführung der Module muss noch berücksichtig werden, dass ein solches System üblicherweise in einer Mehrbenutzerumgebung ausgeführt wird und entsprechende Vorkehrungen getroffen werden.