iExpo Sommer 2021

Online-Messe der Informatik im Sommersemester 2021

Veranstaltung Programmierung 2, UIB

Dozent: Prof. Dr. Frank Dopatka

zurück zur Hauptseite…

Das Team

Unser Team A2 bestand aus erstmals fünf und anschließend aus sechs Mitgliedern, welche alle mit voller Konzentration und Freude dabei waren. Das Team bestand aus den Studenten Alihan Pinarbas, Burak Bingöl, Enes Can Sevim, Lars Stricker, Mika Richter und Sopithan Goneswaran. Im Laufe dieses Semesters wurde Mika Richter unserer Gruppe nachträglich zugeteilt. Dennoch haben wir als Gruppe toll harmoniert und konnten hervorragend miteinander auskommen.

Das Semesterspiel

Die Aufgabe an der wir die Inhalte dieses Semesters gelernt haben sah auf den ersten Blick simpel aus: das Programmieren eines UNO Spiels. Auf drei Blätter aufgeteilt mussten wir vom einfachen UNO Spiel das in der Konsole von eclips ablief bis zum voll funktionsfähigen Programm als Jar-Datei mit Grafischer Oberfläche ein UNO Spiel entwickeln. Das Szenario war wie folgt gestellt : während Prof. Dr. Dopatka als unser Berater fungierte und sich mit der Vermittlung des Theoriestoffes beschäftigte, bildeten Herr Köhler und Herr Arns die “Kunden”, welche unserem Team damit beauftragten ein UNO-Spiel zu entwickeln. Unklarheiten mussten stets mit dem Kunden in einem Kundenforum besprochen werden. Wöchentlich hatten wir die Möglichkeit bei einem “Kundentermin” unseren Fortschritt vorstellen. Nun konnte das Programmieren beginnen.

Das Konzept der Übungsblätter

Bevor wir zur unserer subjektiven Beschreibung der jeweiligen Übungsblätter kommen, möchten wir hier das Konzept der Übungsblätter erläutern. Die Übungsblätter wurden jeweils in einer bestimmten Anzahl von Aufgaben unterteilt. Die ersten Aufgaben beinhalteten immer die Aufgabe Videos zu den Vorlesungsvideos von Prof. Dr. Dopatka aufzunehmen. Dabei sollte man eigene Beispiele entwickeln und seine Kreativität unter Beweis stellen um so seinen Mehrwert zu zeigen. Eigeninitiative, Durchhaltevermögen und Geduld war hierbei gefragt. Die darauf folgenden Aufgaben waren jeweils ziemlich unterschiedlich, sodass alle möglichen Anforderungen zustande gekommen sind. Dabei waren diese selbstverständlich auf das Semesterspiel bezogen um dieses nach und nach zu verbessern und fertig zu stellen. Die einzelnen Aufgaben werden wir nun versuchen zu beschreiben.

Übungsblatt 1

Im ersten Übungsblatt ‘Videos & das Semesterspiel Uno - Basics’ wurde gefordert, den Grundbaustein für das Uno Programm zu setzen, sowie neue Programme bzw. Werkzeuge kennen zu lernen. Das war von großer Bedeutung, da man alle Mittel die uns vorgestellt wurden im Späteren Verlauf des Semesters gebraucht hat.

Einzelarbeit:

Aufgabe 1a)

Die Aufgabe 1a) bestand darin, ein Lehrvideo aufzunehmen. Als Einstieg und als Übung für das Gefühl der Einzelarbeit, gab es auf diese Aufgabe zuerst einmal eine Milde Anzahl an Punkten.

Hier die Bilder zu den Videos:

Objekt, Eigenschaften, getter setter, konstruktoren - Alihan Pinarbas Bildschirmfoto 2021-06-30 um 23 12 47

Objekt-Eigenschaften-Getter-Setter-Konstruktoren -Mika Richter PR2 01-05 Objekt-Eigenschaften-Getter-Setter-Konstruktoren

Objekt-Eigenschaften-Getter-Setter-Konstruktoren -Lars Stricker lars video 1

Methoden-Object-Override -Enes Can Sevim c80be71d-19fe-46a4-816e-f5dd1a43f291

Anweisungen-Datentypen-Operatoren-Konstanten sowie UML-Aktivitätsdiagramm-Verzweigungen-if-else-switch -Burak Bingöl Bildschirmfoto 2021-07-01 um 01 16 45

Sopithan Goneswaran Video ‘Arrays, Schleifen, Methoden und Rekursionen in Java

Aufgabe 1b)

In der Aufgabe 1b) bestand ebenfalls darin, ein Lehrvideo aufzunehmen. Hier gab es die doppelte Anzahl an Punkten, weil die Gewöhnungsphase nun vorbei war. Die Themen wurden anspruchsvoller. So musste zum Beispiel der Student Alihan Pinarbas das Thema ‘Komplexität-O-Notation-P-NP’ vorstellen.

Komplexität-O-Notation-P-NP -Mika Richter PR2 03-01 Komplexität-O-Notation-P-NP

Versionsverwaltung-zentral-verteilt-GIT -Lars Stricker lars video2

Kommentare-JavaDOC-guter-Code-Testen-JUnit -Enes Can Sevim 9e011ced-8a12-412d-974d-fb27effe2e46

Exception-Handling-Strukturierung -Burak Bingöl Bildschirmfoto 2021-07-01 um 01 15 29

Sopithan Goneswaran Video ‘Sortieren mit Quicksort und Bubblesort in Java

Alihan Pinarbas Video ‘Komplexität mit O-Notation, P und NP, Dijkstra und Traveling Salesman Problem

Teamarbeit:

Aufgabe 2)

In der zweiten Aufgabe wurde immer verlangt, die Vorlesungsvideos nach den Themen zu unterteilen. Dabei musste bei einem neuen Abschnitt die genaue Sekundenanzahl angegeben werden, wobei pro Übungsblatt eine bestimmte Menge an Videos strukturiert werden mussten. Im ersten Übungsblatt waren es die Videos ‘PR2 00‘ bis ‘PR2 02-02‘ die zu bearbeiten waren.

Aufgabe 3)

Wie schon in der Beschreibung ‘Übungsblatt 1‘ erwähnt wurden uns neue Tools/Programme vorgestellt, mit denen wir arbeiten sollten. In der Aufgabe 3 lag der Fokus auf den Umgang mit GitHub. Zu diesem Anlass musste sich jeder einen Account anlegen. Die elementaren Aktionen mussten angeeignet werden. Des Weiteren war es wichtig ein Repository anzulegen, auf das wir unseren Fortschritt vom UNO Programm ‘pushen’ konnten, sowie den Fortschritt der erzielt wurde ‘pullen’ konnten. Konfliktlösungen, und Merging waren ebenfalls wichtige Aspekte.

Aufgabe 4a)

In der ersten Teilaufgabe 4a) mussten zur jeder Klasse im UML-Klassendiagramm (Welches das UNO Programm skizzierte) testgetriebene JUnit-Tests erstellt werden.

UML-Diagramm UMl_blatt 1

Aufgabe 4b)

Die somit anspruchsvollste Aufgabe in diesem Übungsblatt war die Aufgabe 4b). Hier wurde erwartet die Funktionalität des Spiels anhand der Regeln, welche vom Kunden definiert wurden, zu Programmieren. Sowohl alle Bedingungen, als auch alle Sonderfälle und Zustände (Der Spieler, Kartenstock usw.) mussten beim Kunden nachgefragt und anschließend programmiert werden. Außerdem mussten dem Kunden Szenarien präsentiert werden, welche die Richtigkeit der Spiellogik aufzeigen sollten. Dabei musste sich jedes Szenario klar von dem vorherigen unterscheiden.

Aufgabe 5)

Das Kommentieren und Dokumentieren von unserem bisherigen Quellcode sollte per JavaDoc’s erfolgen. Die Vollständigkeit und die Ausführlichkeit lagen im Fokus.

Aufgabe 6)

Die letzte Aufgabe dieses Übungsblattes war die Aufgabe 6). Es sollte lediglich zu allen Fehlerfällen eine eigene ‘UnoException’ Klasse erstellt werden, welche jeweils eine eigene ID besitzen.

Übungsblatt 2

Im zweiten Blatt lag der Fokus darin die innere Struktur des Spiels zu erweitern.

Einzelarbeit:

Aufgabe 1)

Die erste Aufgabe 1) bestand nochmals darin, ein Lehrvideo aufzunehmen. Die Themen wurden Anspruchsvoller, da es nun keine Wiederholung der Themen aus ‘Pr1’ mehr waren. Der Student Enes Can Sevim musste zum Beispiel das Thema ‘Aggregation, Komposition, Enum, Annotation’ in einem Video verpacken. Wohingegen Sopithan Goneswaran Das Thema ‘Steuerelemente und Ereignisse in Swing’ behandelt hat. Nach einer kurzen Befragung äußerte sich Enes Can Sevim wie folgt: ‘Das Video war viel anstrengender und nervenaufreibender als die ersten zwei. Zum Glück hatte ich mich frühzeitig damit beschäftigt, sonst wäre es echt knapp geworden. ‘ Hier ein Bild zu den beiden Videos:

Wrapper, String, RegEx, Garbage-Collector -Mika Richter PR2 03-06 Wrapper, String, RegEx, Garbage-Collector

Wrapper, String, RegEx, Garbage-Collector -Lars Stricker Lars pr video 3

Aggregation, Komposition, Enum, Annotation 8dd81d75-c0f6-4b71-930b-422c1b27737e

Steuerelemente und Ereignisse in Swing -Burak Bingöl Bildschirmfoto 2021-07-01 um 01 39 59

Sopithan Goneswaran Video ‘Java Swing: Steuerelemente, Ereignisse und Eventhandling

Alihan Pinarbas Video ‘Assoziation, Navigierbarkeit, Vererbung und Polymorphie in Java

Teamarbeit:

Aufgabe 2)

Hier wurden wieder Zeitstempel verlangt. Dieses mal von den Videos ‘PR2 03-01‘ bis ‘PR2 04-02‘. Hier die Links zu den Videos:

Aufgabe 3a)

Nur eine kleine Aufgabe in der man eine Komposition über den Konstruktor des Teils vom Spieler und dem Spiel realisieren sollte.

Aufgabe 3b)

Hier musste man ein Interface für den Bediener implementieren, über welches der Spieler mit dem Spiel interagieren konnte.

Aufgabe 4a)

Schnell wurden vom Kunden erweitere Funktionalitäten erfragt und so mussten wir zusätzlich neben dem vorhandenen Interface für das Spiel auch noch ein weiteres Interface für das Speichern des gesamten Spiel- Status.

Aufgabe 4b)

Eine weitere Aufgabe war die Spielgeschehnisse in Form des CSV Formats oder serialisiert zu speichern und zu Laden. Dazu mussten die Interfaces gezielt implementiert werden und Teile des Codes mussten umstrukturiert werden. Diese Aufgabe sollte unserem Team noch große Schwierigkeiten bereiten.

Aufgabe 5a)

Um im späteren fertigen Spiel auch eine Einzelspielerfunktion präsentieren zu können, durfte natürlich die Implementierung einer KI nicht fehlen. Hierfür musste für unser Programmierniveau im zweiten Semester ein einfacher Algorithmus herhalten. Die KI sollte zwei Spielweisen bekommen einmal in Form einer defensiven KI die ihre sonderkarten für die Verteidigung aufbewahrt und einer Offensiven KI die diese für den Angriff nutzt.

Aufgabe 5b)

Die Logik für die Entscheidung beider KI´s musste zudem noch in einem UML Aktivitätsdiagramm dargestellt werden.

UML-Diagramm Defensive KI Ki-IExpo

Übungsblatt 3

Die Aufgabe in Blatt drei bestand darin das UNO-Spiel als “Produkt” fertigzustellen, dazu waren noch einige Schritte gefordert.

Einzelarbeit:

Aufgabe 1)

Die erste Aufgabe 1) des letzten Übungsblatts war ebenfalls ein Lehrvideo aufzunehmen. Hier wurden die schwersten Themen behandelt, wobei es auch die meisten Punkte gab. Wir haben empfunden, dass sich die Themen von ‘PR2’ langsam distanziert haben. Dafür wurden aber Interessante und auch weiterführende Themen ausgewählt. Burak Bingöl nahm ein Lehrvideo zum Thema ‘Datenstrukturen: Binärbaum, Tree, Trie’ auf. Das neue Teammitglied, Mika Richter hat das Thema ‘Collections: Comparator, Iterator, Map, Properties, Wildcards’ behandelt. Hier ein Bild zu den beiden Videos:

Collections, Container, Generics -Alihan Pinarbas Bildschirmfoto 2021-06-30 um 23 07 56

Collections: Comparator, Iterator, Map, Properties, Wildcards -Mika Richter PR2 05-05Comparator, Iterator, Map, Properties, Wildcards

Paradigmen, Funktional, Lambda, Closure -Lars Stricker lars pr video 4

Dijkstra, Graphenfärbung und Graph -Shopithan Goneswaran e90ff272-69e0-4c05-a2cf-19b411125f66

Nebenläufigkeit: Threads, Races, Deadlocks -Enes Can Sevim 1fc7f9d8-0e11-4872-b0f1-5ab457df3cc7

Binärbaum, Tree, Trie -Burak Bingöl Bildschirmfoto 2021-07-01 um 01 12 12

Teamarbeit:

Aufgabe 2)

Hier wurden wieder Zeitstempel verlangt. Dieses mal von den Videos ‘PR2 05-01‘ bis ‘PR2 06-02‘.Hier die Links zu den Videos:

Aufgabe 3a)

Der erste Teil bestand darin die Karten des UNO Spiels nun mithilfe eines LiFo-Speichers, also einer einfachen verketteten Liste zu verwalten, die von Java vorgefertigten Klassen durften natürlich nicht verwendet werden.

Aufgabe 3b)

Hier sollte die, KI die wir zuvor erstellt haben, nun über das Interface Runnable implementiert werden, sodass das Ganze über Threads realisiert wird. Natürlich musste das Speichern und Laden berücksichtigt werden.

Aufgabe 3c)

Das Ziel dieser Aufgabe war es jede Spielaktion in eine Log-Datei geschrieben wird. Undzwar mit Datum und Uhrzeit.

Aufgabe 4a)

Die erste Vorkehrung, die im Rahmen der GUI-Entwicklung war einen Entwurf zu erstellen. Nachdem der Kunde unseren Entwurf abgesegnet hatte konnten wir bereits loslegen.

Aufgabe 4b)

Hier gab es in der Teamarbeit die meisten Punkte. Das ganze Spiel als funktionierendes Programm sollte über die SWING-GUI zur Verfügung gestellt werden. Dabei mussten noch viele Nebenaspekte beachtet werden.

Aufgabe 4c)

Die Kernaufgabe war es das Laden und Speichern per FileChooser möglich zu machen, nach anfänglichen Schwierigkeiten konnte das Problem jedoch mit ein bisschen Recherche gelöst werden.

Bilder der GUI:

GUI-Menü

Uno gui 1

GUI-Spielerauswahl

Uno gui2

Uno gui 3

GUI-Spielfeld

Uno gui 4

Aufgabe 4c)

Über eine JAR-Datei sollte hier das Spiel ausgeführt werden können.

Aufgabe 5) (Zusatzaufgabe)

Durch die aktuelle Situation, welche durch die Pandemie ausgelöst wurde, erhielten wir die Chance Zusatzaufgaben in Anspruch zu nehmen. Eine davon war diese IExpo-Präsentation zu schreiben und in diesem Schema die gesamte Veranstaltung zu reflektieren und zu beschreiben. Natürlich war auch hier das ganze Team daran beteiligt!

Aufgabe 6) (Zusatzaufgabe)

Als letzte Zusatzaufgabe gibt es nochmal ein Lehrvideo, welches innerhalb einer Woche abzugeben ist. Die Videothemen sind sehr viel komplexer als die vorherigen Themen. Dem entsprechend muss man diese auch behandeln und vortragen. Dennoch eine tolle Chance, um die Studienleistung ergattern zu können!

Unser Fazit

Als Zusammenfassung können wir alle als Team mit Überzeugung sagen, dass wir in diesem Studiengang immer wieder an unsere Grenzen gestoßen sind. Daran sind wir auch gewachsen. Die Idee die Inhalte der ‘PR2’ Vorlesung in einem Spiel als Projekt zu verpacken empfanden wir als eine gute. Dadurch war es möglich, das gelernte aktiv anzuwenden und mit Problemen die dabei entstanden sind umzugehen. Das Präsentieren der Ergebnisse verstärkte das Gemeinschaftsgefühl der Gruppe und das Selbstbewusstsein für das zukünftige Arbeitsleben als Programmierer. Die Kompetenzen und Ideen waren nicht nur Innerhalb der Gruppe, sondern auch in der Einzelarbeit in Form von Lehrvideos einzubringen. Somit konnte man sich gut einen Überblick über seine Fähigkeiten als Student verschaffen. Es war rückblickend ausschlaggebend eine Struktur zur Aufgabenverteilung zu gestalten. Nur so konnte man die Aufgaben gerecht und fair verteilen. Das Format der Vorlesung war unsrer Meinung nach sehr gelungen. Durch das Hochladen der Vorlesungsmaterialien in Videoform Konnte man jederzeit die Vorlesung in seinem eigenen Tempo lernen und verstehen. Insgesamt also eine durchaus Interessante Veranstaltung.


zurück zur Hauptseite…