Programmierpraktikum
Java Programmierpraktikum (SS14)
08 10410: Programmierpraktikum (Java) [HaF]
J. Wolff v. Gudenberg, J. v. Kistowski
Lernziel
Nach erfolgreichem Absolvieren des Praktikums soll jeder Teilnehmer selbstständig in der Lage sein Java-Programme zu entwerfen und zu implementieren. Hierbei beschränken wir uns auf die wichtigsten Konzepte, mit deren Hilfe eine leichte Einarbeitung in weiterführende Techniken gegeben ist.
Teilnehmer
Grundsätzlich kann jeder ordentliche Student der Universität Würzburg teilnehmen. Teilnehmer des Kurses sollten grundlegende Kenntnisse in Informatik und einer Programmiersprache besitzen, wie sie in den Vorlesungen Algorithmen und Datenstrukturen und Softwaretechnik vermittelt werden. Der Kurs ist für folgende Studiengänge verpflichtend:
- Informatik,
- Technische Informatik
- Luft- und Raumfahrtinformatik
- Lehramt Informatik
Studenten die das Studium im Wintersemester beginnen, sollten zunächst die obigen Vorlesungen besuchen und das Praktikum anschließend absolvieren.
Alternative Praktika
Für die Studiengänge
- Wirtschaftsinformatik
- Mensch-Computer-Systeme
ist die Teilnahme am Programmierpraktikum für Wirtschaftsinformatiker verpflichtend.
Für die Studiengänge der Wirtschaftsmathematik besteht die Wahl zwischen diesen beiden Praktika.
Studierenden mit Nebenfach Informatik (z.B. Physikern) wird empfohlen das die Vorlesung Einführung in die Informatik ergänzende Praktikum zu besuchen, falls das die jeweilige Studienordnung zulässt.
Anmeldung
Die Anmeldung erfolgt über SB@Home ist bis zum 27.07.2014 möglich. Sie werden innerhalb von 24-Stunden nach der Anmeldung automatisch in den Wuecampus2-Kursraum eingetragen.
Links zum Kurs:
Ablauf des Praktikums
Das Praktikum gliedert sich in drei Phasen:
Phase 1: Einarbeitung
Zeitraum: bis 29.07.2014
Die erste Phase des Praktikums ist eine selbstständige Einarbeitung in Java (Version 1.8). Als Literatur empfehlen wir das Buch Java ist auch eine Insel, 10. aktualisierte Auflage von Christian Ullenboom erschienen bei Galileo Computing. Dieses Buch steht auch kostenlos als Online-Version zur Verfügung. Die Themen der Einarbeitungsphase sowie die Aufgaben aus Phase 2 verweisen auch auf entsprechende Kapitel dieses Buchs. Weiter wird empfohlen sich mit der Java API vertraut zu machen. Vor allem im Hinblick auf die Abschlussprüfung, in welcher kein Internet zur Verfügung steht.
In dieser Phase sollten Sie die folgenden Java-Grundkenntnisse aus den Vorlesungen Algorithmen und Datenstrukturen und Softwaretechnik noch einmal vertiefen:
- Datentypen (Kapitel 2.3)
- primitive Datentypen
- String (Kapitel 4.1, Kapitel 4.2, Kapitel 4.3 und Kapitel 4.4)
- Array (Kapitel 3.10)
- Kontrollstrukturen (Kapitel 2.5 und Kapitel 2.6)
- if
- switch
- do
- while
- for
- ...
- Klassenrumpf (Kapitel 2.2.2)
- Main-Methode (Kapitel 2.2.3)
- Methoden und Funktionen (Kapitel 2.8)
- Ausgabe auf der Konsole mit System.out (Kapitel 2.2.6)
- Standardoperatoren (Kapitel 2.4)
- +, -, *, /, ...
- ==, <, >, ...
- &, &&, |, ||, ...
- java.lang.Math (Kapitel 18.3)
Bei dieser Einarbeitung empfehlen wir sich mit der Entwicklungsumgebung Eclipse vertraut zu machen. Natürlich kann auch jede andere Entwicklungsumgebung oder auch ein normaler Texteditor für Java verwendet werden. Jedoch bietet Eclipse viele Funktionen und PlugIns für verschiedene Bereiche wie etwa
- JUnit
- SVN
- Checkstyle
welche im Praktikum Verwendung finden. Zusätzlich wird bei der Abschlussprüfung ein vorkonfiguriertes Eclipse verwendet.
Phase 2: Konzepte und Übungsaufgaben
Zeitraum: bis 18.08.2014
In der zweiten Phase des Praktikums stehen die folgenden Konzepte und Technologien im Mittelpunkt:
- Objektorientierung (Kapitel 3 und Kapitel 5)
- Klassen
- Interfaces
- Vererbung
- Methoden
- Sichtbarkeit
- Pakete
- Autoboxing
- ...
- Object (Kapitel 8.3)
- equals
- hashCode
- toString
- Generics (Kapitel 9)
- Exceptions (Kapitel 6)
- try
- catch
- finally
- try
- Collections (Kapitel 13.1)
- List
- Map
- Set
- Iterator (Kapitel 13.5)
- Comparator und Comparable (Kapitel 8.1)
- Utility-Klassen (Kapitel 13.1.3)
- java.util.Arrays
- java.util.Collections
- Enums (Kapitel 5.4.3)
- Date (Kapitel 11.3)
- Calendar (Kapitel 11.4)
- DateFormat
- StringBuffer (Kapitel 4.6)
- IO (Kapitel 15)
- Swing-Grundlagen (Kapitel 14)
- JavaFX 2 - Grundlagen (Link)
Hierbei ist es das Ziel sich mit den Konzepten und Technologien vertraut zu machen und einen Überblick zu bekommen. Es ist ganz sicher der falsche Weg etwas auswendig zu lernen oder jedes Kapitel bis ins kleinste Detail zu studieren. Vielmehr sind folgende Punkte relevant:
- Man muss wissen, dass Java bestimmte Konzepte und Technologien bereitstellt.
- Man muss die Grundlagen dieser Konzepte und deren Anwendung verstehen.
- Man muss wissen, wo man die Details nachlesen kann (Java API).
- Man muss mit Hilfe dieses Wissens und der Dokumentation (Java API) diese Konzepte und Technologien anwenden können.
Arbeiten Sie sich anhand der angegebenen Literatur in aufgeführten Konzepte ein und lösen Sie die drei Übungsaufgaben (Veröffentlichung am 29.07.2014). Diese Aufgaben müssen bis zum 18.08.2014 12:00 Uhr über das PABS-System abgegeben und getestet werden.
Diese Aufgaben werden nicht korrigiert! Aber auf Korrektheit überprüft! Es ist zwingend notwendig, dass alle drei Aufgaben alle Tests auf dem PABS-System erfolgreich bestehen.
Bei der Bearbeitung dieser Aufgaben stehen Ihnen Betreuer beratend zur Seite. Termine werden über WueCampus bekanntgegeben.
Übungen werden in den CIP-Pools A001/A002 angeboten. Weiter wird in WueCampus ein betreutes Forum für Fragen bereitgestellt.
Phase 3: Bewertete Aufgabe
Zeitraum: 26.08.2014 bis 01.09.2014
Haben Sie alle Übungsaufgaben aus Phase 2 erfolgreich abgegeben, so sind Sie berechtigt eine weitere Aufgabe zu bearbeiten. Diese Aufgabe muss bis zum Abgabetermin* über das PABS-System abgegeben und getestet werden. Zusätzlich zur Voraussetzung der erfolgreichen Tests auf dem PABS-System wird diese Aufgabe nach Abgabeschluss durch einen Betreuer korrigiert und entscheidet über die Zulassung zur Abschlussprüfung.
Wie auch schon in Phase 2 finden betreute Übungen in den CIP-Pools A001/A002 statt und für Fragen steht ein Forum in WueCampus bereit.
Abgabefristen
Sie müssen Ihre Lösungen vor der in der Aufgabenstellung gesetzten Abgabefrist eingereicht haben. Später eingereichte Lösungen werden nicht akzeptiert.
Reichen Sie nur Lösungen ein, die Sie vorher selbst ausreichend getestet haben.
PABS führt beim Einreichen der Abgabe verschiedene Tests durch (Formatierung, Funktionalität ...) und zeigt den Status der Abgabe über folgende Farbcodierung an:
- Grün alle Tests wurden fehlerfrei durchgeführt, die Abgabe wird akzeptiert
- Gelb es gibt leichte Mängel bei der Abgabe, die Abgabe wird akzeptiert
- Rot es gibt grobe Mängel bei der Abgabe, die Abgabe wird abgelehnt
In Phase 3 findet eine Bewertung der Aufgaben nur statt, wenn die Abgabe Gelb oder Grün ist. Rote Abgaben werden nicht bewertet. Weiter bedeutet eine grüne Abgabe nicht, dass die Abgabe die volle Punktzahl erhält. Eine Grüne Abgabe bedeutet lediglich, dass die durchgeführten Tests, welche im Prinzip nur "Stichproben" darstellen, fehlerfrei durchgeführt wurden. Die Punktevergabe wird dann bei der Korrektur durchgeführt.
Gruppenarbeit
Die Erstellung von Abgabelösungen (Phase 2 und Phase 3) in Gruppenarbeit ist nicht erlaubt. Die nötige Selbstständigkeit gilt auch für alle Codefragmente! Bei Zuwiderhandlungen kann es passieren, dass allen Beteiligten die jeweilige Aufgabe nicht anerkannt wird. Sie sind selbst dafür verantwortlich, Ihre eigenen Lösungen vor fremdem Zugriff zu schützen. Also sollte jemand, selbst ohne Ihr Wissen, Ihre Lösung kopieren, riskieren Sie, dass Ihnen die Aufgabe nicht anerkannt wird! Wir behalten uns für solche Fälle auch vor, bereits testierte Aufgaben noch abzuerkennen.
Zulassung zur Abschlussprüfung
Für die Zulassung zur Abschlussprüfung am 16.09.2014 sind mindestens 75% der Punkte in Phase 3 und somit auch eine erfolgreiche Abgabe der drei Aufgaben aus Phase 2 notwendig.
Ablauf und Bewertung der Abschlussprüfung
Die Abschlussprüfung besteht aus einer Aufgabe, die in mehrere, aufeinander aufbauende, Teilaufgaben untergliedert wird. Die maximal erreichbare Punktzahl pro Teilaufgabe wird in der Aufgabenbeschreibung bekannt gegeben. Die Bearbeitung der Aufgabe erfolgt unter Aufsicht in einer speziellen Programmierumgebung in den CIP-Pools der Informatik. Jedem Studenten stehen dazu die Entwicklungsumgebung Eclipse, sowie die Java-API Dokumentation und die Aufgabenstellung zur Verfügung. Ein Zugang zum Internet besteht nicht. Zusätzlich werden einfache Testfälle zur Verfügung gestellt, mit denen die zu implementierenden Klassen selbständig getestet werden können.
Bei der Korrektur wird nur bis zu der Teilaufgabe gewertet, bei der die ersten Fehler in den Testfällen aufgetreten sind. Sie müssen die Teilaufgaben also in korrekter Reihenfolge bearbeiten.
Beispiel:
Es gibt 5 Teilaufgaben. Sie haben die Aufgaben 1-3 bearbeitet. Ihre Klassen der Teilaufgaben 1 & 2 bestehen alle zur Verfügung gestellten Tests, in der 3. Teilaufgabe treten Fehler auf.
=> Es werden die Teilaufgaben 1-3 gewertet. 4 & 5 fließen nicht mehr in die Wertung ein.
Das Bestehen, der zur Verfügung gestellten Tests bedeutet nicht, dass die volle Punktzahl erreicht wird. Bei der händischen Korrektur können Fehler auffallen, die von den einfachen Tests nicht abgedeckt werden.
Kommentare sind nicht notwendig.
Implementierung und Codierungsstil
Der erstellte Code ist nicht nur funktional korrekt und der Aufgabenstellung entsprechend, sondern auch klar und verständlich zu implementieren. Verwenden Sie sprechende Bezeichner und einfache Strukturen und kommentieren Sie Ihren Code ausreichend. Folgen Sie den in der Aufgabenstellung geforderten Entwurfsmustern und Programmiermethodiken.
Die eingereichten Lösungen werden vom PABS-System 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 (checkstyle.sourceforge.net). Die Konfiguration für Checkstyle wird im Downloadbereich zur Verfügung gestellt.
Schlechter Codierungsstil, insbesondere schlechte Bezeichner und mangelhafte Kommentierung, können in Phase 3 zu Punktabzug führen.
Terminübersicht
29.07.2014 12:00 Uhr Informationsveranstaltung zum Praktikum im Turing-HS
29.07.2014 12:00 Uhr Veröffentlichung der Übungsaufgaben für Phase 2
18.08.2014 12:00 Uhr Abgabe der Übungsaufgaben
Veröffentlichung der bewerteten Aufgabe für Phase 3
01.09.2014 12:00 Uhr Abgabe der bewerteten Aufgabe
16.09.2014 Abschlussaufgabe