Java-Praktikum
Kontakt
Java-Praktikum
Das "Java-Praktikum" ist eine Veranstaltung im Modul "Fortgeschrittene Java-Technologien" (inf021). Es wird seit vielen Jahren regelmäßig im Wintersemester angeboten. Dozent ist Dr.-Ing. Dietrich Boles. Details können der Modulbeschreibung entnommen werden.
Hinweis
Als Alternative zur Teilnahme am Java-Praktikum bieten wir den Studierenden die Teilnahme am informatiCup-Programmierwettbewerb der Gesellschaft für Informatik an.
Ziele
Ziel der Veranstaltung ist es, den Studierenden die Konzepte und Technologien der Java Platform Standard Edition (Java SE) zu vermitteln. Die Studierenden sollen die Technologien nach dem Praktikum selbstständig bei der Entwicklung eigener größerer Anwendungen einsetzen können.
Voraussetzungen
Die Teilnehmer sollten die Module PDA (Programmierung, Datenstrukturen und Algorithmen) und OMP (Objektorientierte Modellierung und Programmierung) erfolgreich absolviert haben. Es können maximal 12-14 Studierende am Java-Praktikum teilnehmen.
Zeit und Ort
Die Teilnehmer und der Dozent treffen sich während der Vorlesungszeit jeden Montag von 8.15 – max. 11.45 Uhr. Im Laufe jeder Woche müssen selbstständig bestimmte Aufgaben bearbeitet werden. Der reale Arbeitsaufwand für das Praktikum beläuft sich auf ca. 10 Stunden pro Woche (inkl. der 4 Stunden am Montag). Eine regelmäßige Teilnahme an den wöchentlichen Treffen wird ausdrücklich erwartet! Die im StudIP vorgenommene Trennung in Vorlesung und Übung/Projekt hat lediglich formale Gründe.
Ablauf
Jeden Montag stehen ein (oder mehrere) neue Themen auf dem Programm (siehe Inhalte). Der Dozent stellt die Grundlagen dieser Themen jeweils kurz vor bzw. bei den Themen, die aus OMP bereits bekannt sind, werden wir sie gemeinsam wiederholen. Nachfragen und Diskussionen sind dabei erwünscht.
Im Laufe des Java-Praktikums wird durchgängig eine größere Aufgabe bearbeitet (siehe Aufgabe). Mit Bezug zum jeweiligen Thema der Woche wird diese schrittweise weiterentwickelt. Dies geschieht während des Praktikums und auch noch danach. Der Dozent ist während des Praktikums verfügbar und hilft bei Nachfragen und Problemen gerne weiter. Er lässt sich von den Studierenden auch deren erarbeitete (Teil-)Lösungen erläutern und gibt Verbesserungshinweise.
Zu Beginn der Veranstaltung der darauffolgenden Woche stellen jeweils zwei oder drei Teilnehmer des Praktikums ihre erarbeiteten Lösungen den anderen vor und es wird über die Lösungen diskutiert.
Inhalte
Das Java-Praktikum umfasst folgende Themen bzw. Inhalte:
- GUI-Frameworks (JavaFX)
- Utilities, Collections-API
- Multimedia (Graphik, Images, Sound, Video, Animation)
- Events,
- MVC, MVP, MVVM
- IO, Tools (Compiler, Classloader)
- Threads
- Serialisierung
- Java und XML
- Reflection-API
- Java und Datenbanken (JDBC)
- Java Internationalization
- Weiteres:
- Verteilte Java-Anwendungen (Sockets, RMI)
- Java Security
- Kryptografie
- Kompression
- Printing
- …
Aufgabe
Jedes Jahr wird eine neue durchgängige Aufgabe gestellt, die alle Teilnehmer während des Semesters zu bearbeiten haben. Themen der vergangenen Jahre werden weiter unten vorgestellt.
Die einzelnen Teilaufgaben werden in wöchentlich herausgegebenen Aufgabenzetteln jeweils konkretisiert. Erwartet wird, dass die einzelnen Teilaufgaben durchgängig während des Praktikums bearbeitet werden. Anhand einer Musterlösung demonstriert der Dozent jeweils die einzelnen Aspekte. Die Bearbeitung der Aufgabe erfolgt in Einzelarbeit. Diskussionen unter den Teilnehmern sind jedoch erlaubt und erwünscht. Plumpes Abschreiben wird allerdings unmittelbar als Täuschungsversuch gewertet.
Prüfung und Bewertung
Prüfungsform des Java-Praktikums sind "fachpraktische Übungen" ("Eine fachpraktische Übung besteht aus einer Reihe von praktischen Versuchen, Übungsaufgaben oder Programmieraufgaben mit schriftlichen Ausarbeitungen (Versuchsprotokolle). Fachpraktische Übungen können eine mündliche Kurzprüfung oder eine Projektpräsentation beinhalten."). Daher ist wöchentlich bis jeweils sonntags abends der aktuelle Stand der entwickelten Anwendung als gezipptes Eclipse- oder IntelliJ-Projekt mit allen erstellten bzw. benötigten Ressourcen (java-Dateien, Bilder, Audios, Property-Dateien, …) abzugeben. Anfang Februar muss dann die endgültige Version abgegeben werden. Die Abgabe erfolgt jeweils durch Hochladen der Datei in einen entsprechenden Hausaufgabenordner in der zugehörigen StudIP-Veranstaltung.
In die Bewertung des Moduls fließen folgende Aspekte ein:
- Vollständige Bearbeitung aller Teilaufgaben
- Qualität der Implementierung
- Kontinuität der Teilaufgabenbearbeitung (Zeitmanagement)
- Mitarbeit in der Veranstaltung (Vorstellen eigener Lösungen und Diskussion)
- Abschließendes mündliches Einzelgespräch über die Lösung
Projekte der letzten Jahre
Im Folgenden werden einige Aufgaben bzw. Projekte vorgestellt, die in den letzten Jahren im Rahmen des Java-Praktikums bearbeitet wurden.
Programmierlernumgebungen für Mini-Programmierwelten
Mini-Programmierwelten sind didaktische Modelle für das Erlernen grundlegender Programmierkonzepte. In speziellen Programmierlernumgebungen für diese Modelle schreiben Programmieranfänger Programme, mit denen sie virtuelle Akteure durch virtuelle Landschaften steuern. Bekannte Beispiele sind das Hamster-Modell oder Kara der Marienkäfer. Im Rahmen des Java-Praktikums haben die Studierenden eigene Mini-Programmierwelten definiert und dafür entsprechende Programmierlernumgebungen entwickelt.
Simulatoren für zelluläre Automaten
Zelluläre Automaten dienen der Modellierung räumlich diskreter dynamischer Systeme. Populationen mit vielen Zellen entwickeln sich über die Zeit hinweg auf der Grundlage spezieller Übergangsfunktionen. Ein bekanntestes Beispiel ist das Game-of-Life. Aufgabe im Java-Praktikum war es, einen Simulator für beliebige zweidimensionale zelluläre Automaten zu entwickeln.
Bluefoot – Entwicklungsumgebung für Spiele und Simulationen
Greenfoot ist eine interaktive Java-Entwicklungsumgebung zum Erlernen der Basiskonzepte der objektorientierten Programmierung. Sie erlaubt insbesondere die einfache Entwicklung zweidimensionaler grafischer Anwendungen wie Simulationen und Spiele auf der Grundlage einer vorgegebenen einfachen Programmier-API. Die Teilnehmer des Java-Praktikum haben Greenfoot analysiert und dann mit einigen Anpassungen „nachimplementiert“.
Live-Coding-Tool für grafisch-interaktive Bücher
Live-Coding bedeutet, dass von einem Programmierer in einem Editor eingegebene Programme bei jedem Tastendruck unmittelbar compiliert und ausgeführt werden. Im Rahmen des Java-Praktikums haben die Studierenden ein Live-Coding-Tool entwickelt, mit dem grafisch-interaktive Bücher programmiert werden können.
Strategiespiele
Alle Teilnehmer des Praktikums konnten sich ein beliebiges Strategiespiel, wie Schach, Reversi oder Dame, aussuchen und dann ein Tool entwickeln, mit dem es möglich ist, dass Programme und/oder Menschen gegeneinander dieses Spiel am Computer spielen.