Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
48 changes: 39 additions & 9 deletions homework/b01.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,12 +9,16 @@ no_beamer: true

<!-- pandoc -s -f markdown -t markdown+smart-grid_tables-multiline_tables-simple_tables --columns=94 --reference-links=true b01.md -o xxx.md -->

*Dieses Blatt ist bewusst einfach gestaltet und dient der Wiederholung Ihrer Kenntnisse aus
der LV "Programmieren 1".*
# Zusammenfassung

Dieses Blatt ist bewusst einfach gestaltet und dient der Wiederholung Ihrer Kenntnisse aus der
LV "Programmieren 1".

Implementieren Sie in Java das Spiel [Hangman].

# Installation JDK und IDE, Deaktivierung AI-Support
# Aufgaben

## Installation JDK und IDE, Deaktivierung AI-Support

Sie benötigen für die Bearbeitung der Übungsaufgaben ein *Java Development Kit* (JDK). Wir
verwenden in der Lehrveranstaltung "Programmieren 2" aus verschiedenen Gründen die *Long-Term
Expand All @@ -35,7 +39,7 @@ sämtliche KI-Unterstützung wie beispielsweise Copilot, JetBrains AI Assistant,
CodeGPT, Codeium, Tabnine, Windsurf, ... (Liste nicht vollständig) für die Bearbeitung der
Übungsaufgaben in dieser Lehrveranstaltung ab.

# Anlegen eines Java-Projektes
## Anlegen eines Java-Projektes

Legen Sie für die Bearbeitung der Aufgabe ein neues Java-Projekt in Ihrer IDE an. Achten Sie
bitte darauf, dass im Projektpfad **keine Leerzeichen** und **keine Sonderzeichen** (Umlaute
Expand All @@ -57,7 +61,7 @@ Testen Sie bitte die genutzte Java-Version:

Korrigieren Sie Ihr Setup, wenn Sie andere Ausgaben erhalten.

# Übersetzen und Starten und Debuggen von Programmen
## Übersetzen und Starten und Debuggen von Programmen

Erstellen Sie in Ihrem neuen Projekt die folgende Klasse:

Expand All @@ -82,7 +86,7 @@ Starten Sie das obige Programm im Debug-Modus Ihrer IDE. Halten Sie die Ausführ
die nächste Anweisung (das `System.out.println`) aus. Wie beenden Sie das Programm?
Demonstrieren Sie das live im Praktikum.

# Swing und Java2D
## Swing und Java2D

Das Spiel soll vollständig über eine in Swing und Java2D realisierte GUI bedient werden:

Expand All @@ -92,7 +96,7 @@ Das Spiel soll vollständig über eine in Swing und Java2D realisierte GUI bedie
4. Die bisher eingegebenen Buchstaben sollen in der Reihenfolge der Eingabe angezeigt werden.
5. Das Spiel soll per Knopfdruck abgebrochen und neu gestartet werden können.

# Einlesen von Textdateien
## Einlesen von Textdateien

Es soll die Möglichkeit geben, eine Textdatei mit zu ratenden Wörtern einzulesen:

Expand All @@ -106,11 +110,11 @@ Es soll die Möglichkeit geben, eine Textdatei mit zu ratenden Wörtern einzules
6. Es soll für jedes neue Spiel ein zufälliges Wort aus der Menge der eingelesenen Wörter zum
Raten ausgewählt werden.

# Dokumentation
## Dokumentation

Erstellen Sie ein UML-Klassendiagramm für Ihre Lösung.

# Fortgeschrittenere Aufgaben
## Ausprobieren von fortgeschrittenen Widgets

1. Heben Sie in der Anzeige der eingegebenen Buchstaben die korrekt geratenen Buchstaben in
grüner Farbe hervor.
Expand All @@ -120,4 +124,30 @@ Erstellen Sie ein UML-Klassendiagramm für Ihre Lösung.
3. Lassen Sie den Nutzer per Slider die Schwierigkeit variieren: Steuerung der Länge des zu
ratenden Wortes und/oder Steuerung der Anzahl der erlaubten Fehlversuche.

# Bearbeitung und Abgabe

- Bearbeitung: Einzelbearbeitung oder bis zu 3er Teams
- Abgabe:
- Post Mortem [im ILIAS] eintragen:

Verfassen Sie im ILIAS pro Blatt und pro Team-Mitglied ein aussagekräftiges und
nachvollziehbares "*Post Mortem*". Gehen Sie dabei auf folgende Punkte ein:

1. Zusammenfassung: Was wurde gemacht?
2. Implementierungsdetails: Kurze Beschreibung besonders interessanter Aspekte der
Umsetzung.
3. Was war der schwierigste Teil bei der Bearbeitung? Wie haben Sie dieses Problem
gelöst?
4. Was haben Sie gelernt oder (besser) verstanden?
5. Team: Mit wem haben Sie zusammengearbeitet?

Das Post Mortem muss von **jeder Person** im Team **individuell** verfasst und abgegeben
werden. Der Umfang des Textes soll zwischen 200 und 400 Wörtern liegen.

Laden Sie hier bitte **nicht** Ihre Lösungen hoch!

- Deadline: 25. April, 08:00 Uhr
- Vorstellung im Praktikum: 25. April

[Hangman]: https://en.wikipedia.org/wiki/Hangman_(game)
[im ILIAS]: https://www.hsbi.de/elearning/goto.php?target=exc_1514856&client_id=FH-Bielefeld
45 changes: 39 additions & 6 deletions homework/b02.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,16 @@ no_beamer: true

<!-- pandoc -s -f markdown -t markdown+smart-grid_tables-multiline_tables-simple_tables --columns=94 --reference-links=true b02.md -o xxx.md -->

# Git
# Zusammenfassung

## Git Status erklären
Auf diesem Blatt üben Sie den Umgang mit Git (Repo und Commits - zunächst auf der Konsole)
sowie den Einsatz von Lambda-Ausdrücken und das Schreiben von Gradle-Build-Skripten.

# Aufgaben

## Git

### Git Status erklären

Betrachten Sie die folgende Ausgabe von `git status` in einer lokalen Workingcopy
(*Arbeitskopie*):
Expand All @@ -36,7 +43,7 @@ Erklären Sie die Ausgabe.
Geben Sie eine Befehlssequenz an, mit der Sie nur die Änderungen in `foo.java` committen
können.

## Git-Spiel
### Git-Spiel

Klonen Sie die [Vorgaben "Git-Quest"]. Sie finden die Geschichte des Helden Markus im
Dungeon.[^1]
Expand Down Expand Up @@ -72,7 +79,7 @@ Dungeon.[^1]

Demonstrieren Sie Ihr Vorgehen im Praktikum jeweils live.

## Commit-Meldungen
### Commit-Meldungen

Gute Commit-Meldungen schreiben erfordert Übung. Schauen Sie sich die beiden Commits
[Dungeon-CampusMinden/Dungeon/commit/46530b6] und
Expand All @@ -81,7 +88,7 @@ Gute Commit-Meldungen schreiben erfordert Übung. Schauen Sie sich die beiden Co
Diskutieren Sie jeweils, was Ihnen an den Commits auffällt: Was gefällt Ihnen, was stört Sie?
Schlagen Sie Verbesserungen vor.

# Gradle
## Gradle

Folgen Sie der Anleitung auf [gradle.org] und installieren Sie Gradle auf Ihrem Rechner. Legen
Sie in der Konsole ein neues Gradle-Projekt für eine Java-Applikation an (ohne IDE!). Das
Expand All @@ -99,7 +106,7 @@ Aufgaben diese Abschnitte jeweils erfüllen. Gehen Sie dabei im *Detail* auf das
Machen Sie sich Notizen, welche Sie im Praktikum nutzen dürfen, um dort das Buildskript zu
erklären.

# Calculator: Anonyme Klassen und Lambda-Ausdrücke
## Calculator: Anonyme Klassen und Lambda-Ausdrücke

Klonen Sie die [Vorgaben "Calculator"] und laden Sie das Projekt als Gradle-Projekt in Ihre
IDE.
Expand Down Expand Up @@ -127,6 +134,31 @@ Methode `setupOperationSelector`:
*anonymen Klasse* definiert. Konvertieren Sie dies in einen entsprechenden
**Lambda-Ausdruck**.

# Bearbeitung und Abgabe

- Bearbeitung: Einzelbearbeitung oder bis zu 3er Teams
- Abgabe:
- Post Mortem [im ILIAS] eintragen:

Verfassen Sie im ILIAS pro Blatt und pro Team-Mitglied ein aussagekräftiges und
nachvollziehbares "*Post Mortem*". Gehen Sie dabei auf folgende Punkte ein:

1. Zusammenfassung: Was wurde gemacht?
2. Implementierungsdetails: Kurze Beschreibung besonders interessanter Aspekte der
Umsetzung.
3. Was war der schwierigste Teil bei der Bearbeitung? Wie haben Sie dieses Problem
gelöst?
4. Was haben Sie gelernt oder (besser) verstanden?
5. Team: Mit wem haben Sie zusammengearbeitet?

Das Post Mortem muss von **jeder Person** im Team **individuell** verfasst und abgegeben
werden. Der Umfang des Textes soll zwischen 200 und 400 Wörtern liegen.

Laden Sie hier bitte **nicht** Ihre Lösungen hoch!

- Deadline: 02. Mai, 08:00 Uhr
- Vorstellung im Praktikum: 02. Mai

[^1]: Für alle, die schon mit Branches umgehen können: Betrachten Sie auf diesem Blatt bitte
nur den Branch `master`.

Expand All @@ -135,3 +167,4 @@ Methode `setupOperationSelector`:
[Dungeon-CampusMinden/Dungeon/commit/3e37472]: https://github.com/Dungeon-CampusMinden/Dungeon/commit/3e3747220ade538b4c974a520cc9104121789aa1
[gradle.org]: https://gradle.org/
[Vorgaben "Calculator"]: https://github.com/Programmiermethoden-CampusMinden/prog2_ybel_calculator
[im ILIAS]: https://www.hsbi.de/elearning/goto.php?target=exc_1514856&client_id=FH-Bielefeld
41 changes: 37 additions & 4 deletions homework/b03.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,14 @@ no_beamer: true

<!-- pandoc -s -f markdown -t markdown+smart-grid_tables-multiline_tables-simple_tables --columns=94 --reference-links=true b03.md -o xxx.md -->

# Git-Spiel
# Zusammenfassung

Auf diesem Blatt üben Sie den Umgang mit Git (Branches und Mergen - zunächst auf der Konsole)
sowie den Einsatz von Methoden-Referenzen und den Einsatz von Logging.

# Aufgaben

## Git-Spiel

Betrachten Sie erneut die [Vorgaben zur "Git-Quest"]. Die Geschichte des Helden Markus findet
im `master`-Branch kein Ende, sondern erst im Hilfsbranch `end`.
Expand All @@ -35,12 +42,12 @@ einem frischen Klon der Vorgaben.
Was beobachten Sie jeweils? Erklären Sie Ihre Beobachtungen. Wenn es Konflikte gibt: Wie lösen
Sie diese auf? Demonstrieren Sie das Vorgehen im Praktikum live.

# LSF-Contact
## LSF-Contact

Betrachten Sie die [Vorgaben "LSF-Contact"]. Klonen Sie das Repo und laden Sie das Projekt als
Gradle-Projekt in Ihre IDE.

## Methoden-Referenzen
### Methoden-Referenzen

Sie finden im Package `lsfcontact` eine Klasse `Student`. Jede Instanz dieser Klasse hat
mindestens einen Namen (`String`), und man kann verschiedene Konktaktmöglichkeiten per Setter
Expand Down Expand Up @@ -78,7 +85,7 @@ Schaffen Sie es, diese durch Methodenreferenzen zu ersetzen?
Achten Sie darauf, alle Schritte nachvollziehbar in Ihrer Arbeitskopie per Git Commit
festzuhalten. Demonstrieren Sie dies im Praktikum.

## Logging
### Logging

Bauen Sie für das `LsfContactUtil` ein Logging auf der Basis von `java.util.logging` ein: Jede
Benachrichtigung von Studierenden soll in ein gemeinsames CSV-File geloggt werden. Dabei soll
Expand All @@ -96,5 +103,31 @@ pro Logging-Vorgang eine neue Zeile mit den folgenden Informationen angehängt w
Demonstrieren Sie in der Abgabe, wie Sie im Test oder im Hauptprogramm den Logger steuern
können, beispielsweise Änderung der Log-Level oder Abschalten des Loggings.

# Bearbeitung und Abgabe

- Bearbeitung: Einzelbearbeitung oder bis zu 3er Teams
- Abgabe:
- Post Mortem [im ILIAS] eintragen:

Verfassen Sie im ILIAS pro Blatt und pro Team-Mitglied ein aussagekräftiges und
nachvollziehbares "*Post Mortem*". Gehen Sie dabei auf folgende Punkte ein:

1. Zusammenfassung: Was wurde gemacht?
2. Implementierungsdetails: Kurze Beschreibung besonders interessanter Aspekte der
Umsetzung.
3. Was war der schwierigste Teil bei der Bearbeitung? Wie haben Sie dieses Problem
gelöst?
4. Was haben Sie gelernt oder (besser) verstanden?
5. Team: Mit wem haben Sie zusammengearbeitet?

Das Post Mortem muss von **jeder Person** im Team **individuell** verfasst und abgegeben
werden. Der Umfang des Textes soll zwischen 200 und 400 Wörtern liegen.

Laden Sie hier bitte **nicht** Ihre Lösungen hoch!

- Deadline: 09. Mai, 08:00 Uhr
- Vorstellung im Praktikum: 09. Mai

[Vorgaben zur "Git-Quest"]: https://github.com/Programmiermethoden-CampusMinden/prog2_ybel_gitquest
[Vorgaben "LSF-Contact"]: https://github.com/Programmiermethoden-CampusMinden/prog2_ybel_lsfcontact
[im ILIAS]: https://www.hsbi.de/elearning/goto.php?target=exc_1514856&client_id=FH-Bielefeld
53 changes: 44 additions & 9 deletions homework/b04.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,15 +9,23 @@ no_beamer: true

<!-- pandoc -s -f markdown -t markdown+smart-grid_tables-multiline_tables-simple_tables --columns=94 --reference-links=true b04.md -o xxx.md -->

# Zusammenfassung

Auf diesem Blatt üben Sie den Umgang mit Git Remotes sowie die Erstellung von Pull-Requests
auf GitHub. Darüber hinaus üben wir den Umgang mit der Java-Stream-API und noch einmal mit
Lambda-Ausdrücken.

::: important
**Hinweis**: Bitte denken Sie daran, dass Sie spätestens ab diesem Blatt die Bearbeitung der
Aufgaben in einem öffentlich sichtbaren Git-Repo durchführen sollen. Den Link zu Ihrem
jeweiligen Lösungs-Repo geben Sie bitte in Ihrem *Post Mortem* mit an.
Aufgaben in Ihren öffentlich sichtbaren Git-Repos durchführen sollen. Die Links zu Ihren
Pull-Requests mit den Lösungen geben Sie bitte in Ihrem *Post Mortem* mit an.
:::

# Stream-API
# Aufgaben

## Git: Pull-Requests (und Code-Formatierung und -Dokumentation)
## Stream-API

### Git: Pull-Requests (und Code-Formatierung und -Dokumentation)

Forken Sie das ["Stream-API"]-Repo und erzeugen Sie eine lokale Arbeitskopie von Ihrem Fork.

Expand All @@ -31,7 +39,7 @@ einen Pull-Request auf **Ihren** eigenen `master`-Branch.
Achten Sie darauf, alle Schritte nachvollziehbar in Ihrer Arbeitskopie per Git-Commit
festzuhalten. Demonstrieren Sie im Praktikum, wie Sie mit den Pull-Requests arbeiten.

## Stream-API: Task I
### Stream-API: Task I

Betrachten Sie den Branch `task_i`. Sie finden im Package `streamapi` einige Hilfsklassen
sowie in der Datei [`Main.java`] einen Starter für diese erste Teilaufgabe.
Expand All @@ -43,7 +51,7 @@ Schreiben Sie den Body dieser Methode so um, dass die selbe Funktionalität unte
[Java-Stream-API] erreicht wird. Bevorzugen Sie dabei nach Möglichkeit Methoden-Referenzen vor
Lambda-Ausdrücken.

## Stream-API: Task II
### Stream-API: Task II

Betrachten Sie nun den Branch `task_ii`. Sie finden wieder im Package `streamapi` einige
Hilfsklassen sowie in der Datei [`Main.java`][1] einen Starter für diese zweite Teilaufgabe.
Expand All @@ -58,7 +66,7 @@ Schreiben Sie den Body dieser Methode so um, dass die selbe Funktionalität unte
[Java-Stream-API] erreicht wird. Bevorzugen Sie dabei nach Möglichkeit Methoden-Referenzen vor
Lambda-Ausdrücken.

## Stream-API: Task III
### Stream-API: Task III

Betrachten Sie nun den Branch `task_iii`. Sie finden wieder im Package `streamapi` einige
Hilfsklassen sowie in der Datei [`Main.java`][2] einen Starter für diese dritte Teilaufgabe.
Expand All @@ -71,7 +79,7 @@ Schreiben Sie den Body dieser Methode so um, dass die selbe Funktionalität unte
[Java-Stream-API] erreicht wird. Bevorzugen Sie dabei nach Möglichkeit Methoden-Referenzen vor
Lambda-Ausdrücken.

## Stream-API: Task IV+V
### Stream-API: Task IV+V

Betrachten Sie nun den Branch `task_iv_v`. Sie finden wieder im Package `streamapi` einige
Hilfsklassen sowie in der Datei [`Main.java`][3] einen Starter für diese vierte Teilaufgabe.
Expand Down Expand Up @@ -110,7 +118,7 @@ Hilfsklassen sowie in der Datei [`Main.java`][3] einen Starter für diese vierte

Machen Sie aus der Klasse `streamapi.Student` eine Record-Klasse.

# DevDungeon: Zerbrechende Tiles und Speed Potions (Lambda-Ausdrücke)
## DevDungeon: Zerbrechende Tiles und Speed Potions (Lambda-Ausdrücke)

Klonen Sie das Projekt [DevDungeon] und laden Sie es in Ihrer IDE als Gradle-Projekt.
Betrachten Sie das Sub-Projekt[^1] "devDungeon". Dies ist ein von einem Studierenden
Expand Down Expand Up @@ -149,6 +157,32 @@ Task `devDungeon:runDevDungeon` aus der IDE heraus) starten.
Sonderzeichen (Umlaute o.ä.) vorkommen! Dies kann zu seltsamen Fehler führen. Bitte auch
darauf achten, dass Sie als JDK ein **Java SE 21 (LTS)** verwenden.

# Bearbeitung und Abgabe

- Bearbeitung: Einzelbearbeitung oder bis zu 3er Teams
- Abgabe:
- Post Mortem [im ILIAS] eintragen:

Verfassen Sie im ILIAS pro Blatt und pro Team-Mitglied ein aussagekräftiges und
nachvollziehbares "*Post Mortem*". Gehen Sie dabei auf folgende Punkte ein:

1. Zusammenfassung: Was wurde gemacht?
2. Implementierungsdetails: Kurze Beschreibung besonders interessanter Aspekte der
Umsetzung.
3. Was war der schwierigste Teil bei der Bearbeitung? Wie haben Sie dieses Problem
gelöst?
4. Was haben Sie gelernt oder (besser) verstanden?
5. Team: Mit wem haben Sie zusammengearbeitet?
6. Links zu Ihren Pull-Requests mit der Lösung.

Das Post Mortem muss von **jeder Person** im Team **individuell** verfasst und abgegeben
werden. Der Umfang des Textes soll zwischen 200 und 400 Wörtern liegen.

Laden Sie hier bitte **nicht** Ihre Lösungen hoch!

- Deadline: 23. Mai, 08:00 Uhr
- Vorstellung im Praktikum: 23. Mai

[^1]: Gradle-Subprojekte sind im Prinzip mehrere Java-Projekte in einem gemeinsamen Repository
mit einer gemeinsamen Gradle-Basiskonfiguration. Jedes Sub-Projekt hat dann noch einmal
eine eigene, die Basiskonfiguration verfeinernde Gradle-Konfiguration. Da jedes
Expand All @@ -170,6 +204,7 @@ darauf achten, dass Sie als JDK ein **Java SE 21 (LTS)** verwenden.
[DevDungeon]: https://github.com/Dungeon-CampusMinden/dev-dungeon
[\@Flamtky]: https://github.com/Flamtky
[Intro Dungeon]: ../lecture/misc/dungeon.md
[im ILIAS]: https://www.hsbi.de/elearning/goto.php?target=exc_1514856&client_id=FH-Bielefeld
[Multi-Project Build Basics]: https://docs.gradle.org/current/userguide/intro_multi_project_builds.html
[Structuring Projects with Gradle]: https://docs.gradle.org/current/userguide/multi_project_builds.html
[Anleitung "How to play"]: https://github.com/Dungeon-CampusMinden/Dungeon/blob/master/dungeon/doc/how_to_play.md
Loading