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
42 changes: 21 additions & 21 deletions admin/exams.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
title: "Prüfungsvorbereitung"
author: "Carsten Gips (HSBI)"
tldr: |
### Durchführung: Präsenz oder Open-Book (je nach Corona-Lage)
**Durchführung: Präsenz oder Open-Book (je nach Corona-Lage)**

Die Klausur wird dieses Semester elektronisch stattfinden. Dazu werden wir den Prüfungs-ILIAS der
HSBI nutzen.
Expand All @@ -22,13 +22,13 @@ tldr: |
Die Entscheidung über die konkrete Durchführung wird spätestens zwei Wochen vor der Prüfung getroffen
und Ihnen per EMail über das LSF mitgeteilt.

### Ablauf der Klausur
**Ablauf der Klausur**

Die Prüfung (das ILIAS-Objekt) selbst schalte ich erst zum Start der Prüfung online. Bei der Durchführung
als Open-Book-Ausarbeitung wird parallel zur Prüfung eine Zoom-Sitzung laufen, in der Sie Fragen stellen
können.

### Hilfsmittel und Themen
**Hilfsmittel und Themen**

Bei der Durchführung in Präsenz am Campus Minden ist ein Spickzettel (DIN A4, beidseitig beschrieben)
als Hilfsmittel zugelassen.
Expand Down Expand Up @@ -56,9 +56,9 @@ attachments:
---


## Elektronische Klausur: Termin, Materialien
# Elektronische Klausur: Termin, Materialien

### Termin
## Termin

Die schriftliche Prüfung erfolgt durch eine Klausur, die als digitale Prüfung auf einem
Prüfungs-ILIAS durchgeführt wird.
Expand All @@ -75,7 +75,7 @@ Dauer jeweils 90 Minuten.
* Die konkrete Durchführungsform [(in Präsenz am Campus Minden oder im Home-Office)]{.notes}
wird Ihnen [spätestens]{.notes} zwei Wochen vor der Prüfung über das LSF bekanntgegeben

### Zugelassene Hilfsmittel
## Zugelassene Hilfsmittel

::: {.details title="Präsenz (in Minden)"}

Expand All @@ -102,12 +102,12 @@ Sie alle Unterlagen benutzen.

:::

### Einsicht
## Einsicht

* Prüfungseinsicht: Zeitnah; Bekanntgabe per Mail


## Technische Vorbereitungen
# Technische Vorbereitungen

::: {.details title="Präsenz (in Minden)"}

Expand Down Expand Up @@ -175,7 +175,7 @@ für Sie vorbereitet sein.
:::


## Bearbeitung des E-Assessment
# Bearbeitung des E-Assessment

1. Lesen Sie sich die Hinweise auf der Startseite durch

Expand Down Expand Up @@ -207,7 +207,7 @@ für Sie vorbereitet sein.
Täuschungsversuch gewertet werden, vgl. RPO §22a (4))]{.notes}


## Fragetypen-Demo
# Fragetypen-Demo

In Ihrem ILIAS-Kurs finden Sie eine
[**Fragetypen-Demo**](https://www.hsbi.de/elearning/goto.php?target=tst_1352273&client_id=FH-Bielefeld)
Expand All @@ -216,7 +216,7 @@ Sie sich die Kommentare bei den einzelnen Aufgaben an. Sie können die Demo bei
wiederholen.


## Hinweise zu den Inhalten
# Hinweise zu den Inhalten

* Klausurrelevant: Vorlesung und Praktikum
* Für Verständnis u.U. hilfreich: Studium der vertiefenden Literaturangaben
Expand All @@ -234,9 +234,9 @@ wiederholen.
:::


## Beispiele für mögliche Fragen
# Beispiele für mögliche Fragen

### Vererbung und Polymorphie
## Vererbung und Polymorphie

Betrachten Sie den folgenden Java-Code:

Expand All @@ -261,7 +261,7 @@ Geben Sie alle Ausgaben, die das obige Programm produziert, an.
Begründen Sie Ihre Antwort kurz und stichhaltig (für *jede* Ausgabe!).
Was geschieht, bzw. wieso kommt es zu der jeweiligen Ausgabe?

### Multithreading und Synchronisierung
## Multithreading und Synchronisierung

```java
public class StaffelKaputt extends Thread {
Expand Down Expand Up @@ -289,12 +289,12 @@ Welche Ausgabe erwarten Sie (angenommen, das Programm wäre fehlerfrei; eine
mögliche Variante reicht)? Welche Ausgabe erhalten Sie stattdessen? Korrigieren
Sie den Fehler.

### Reguläre Ausdrücke
## Reguläre Ausdrücke

Auf welche Strings passt (im Sinne von "match") der folgende reguläre
Ausdruck: `\s*([a-zA-Z0-9_.\-]+)\s*=\s*(-?\d+\.?\d*)\s;?\s*`

### Versionieren mit Git
## Versionieren mit Git

* Erklären Sie, wie man mit Git die Unterschiede zwischen zwei
bestimmten Versionsständen einer Datei herausfindet.
Expand All @@ -316,7 +316,7 @@ Ausdruck: `\s*([a-zA-Z0-9_.\-]+)\s*=\s*(-?\d+\.?\d*)\s;?\s*`

* Was würde `git diff` jeweils nach Schritt 2 anzeigen?

### Kommandozeilenparameter
## Kommandozeilenparameter

Schreiben Sie ein Programm, welches auf zwei Kommandozeilenparameter reagieren
kann. Die erkannten Parameter sollen auf der Konsole ausgegeben werden. Nutzen
Expand All @@ -330,7 +330,7 @@ Sie Apache Commons CLI (API siehe Anhang).
* Die Parameter können in unterschiedlicher Reihenfolge auftreten.
* Es kann auch nur ein Parameter angegeben werden.

### Build mit Ant
## Build mit Ant

* Was ist der Unterschied zwischen Ant-Targets und Ant-Tasks?
* Wie kann man Ant-Properties von außen (beim Aufruf) setzen?
Expand All @@ -342,7 +342,7 @@ Sie Apache Commons CLI (API siehe Anhang).
* Schreiben Sie Ant-Targets, mit denen Sie JUnit-Testfälle ausführen und
auswerten können.

### Generics
## Generics

Was kommt hier raus? Und warum?

Expand All @@ -363,7 +363,7 @@ public class X {
}
```

### Logging
## Logging

Erklären Sie den Code. Was passiert?

Expand Down Expand Up @@ -391,7 +391,7 @@ public class MoreLogging {
}
```

### Methodenreferenzen
## Methodenreferenzen

* Was bedeutet der folgende Code?

Expand Down
14 changes: 7 additions & 7 deletions homework/b01.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ der LV "Programmieren 1".*

Implementieren Sie in Java das Spiel [Hangman].

## A01.1: Installation JDK und IDE, Deaktivierung AI-Support
# A01.1: 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 @@ -34,7 +34,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.

## A01.2: Anlegen eines Java-Projektes
# A01.2: 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 @@ -56,7 +56,7 @@ Testen Sie bitte die genutzte Java-Version:

Korrigieren Sie Ihr Setup, wenn Sie andere Ausgaben erhalten.

## A01.3: Übersetzen und Starten und Debuggen von Programmen
# A01.3: Übersetzen und Starten und Debuggen von Programmen

Erstellen Sie in Ihrem neuen Projekt die folgende Klasse:

Expand All @@ -81,7 +81,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.

## A01.4: Swing und Java2D
# A01.4: Swing und Java2D

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

Expand All @@ -91,7 +91,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.

## A01.5: Einlesen von Textdateien
# A01.5: Einlesen von Textdateien

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

Expand All @@ -105,11 +105,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.

## A01.6: Dokumentation
# A01.6: Dokumentation

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

## A01.7: Fortgeschrittenere Aufgaben
# A01.7: Fortgeschrittenere Aufgaben

1. Heben Sie in der Anzeige der eingegebenen Buchstaben die korrekt geratenen Buchstaben in
grüner Farbe hervor.
Expand Down
12 changes: 6 additions & 6 deletions homework/b02.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,9 @@ attachments:

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

## Git
# Git

### A02.1: Git Status erklären
## A02.1: Git Status erklären

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

### A02.2: Git-Spiel
## A02.2: Git-Spiel

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

Demonstrieren Sie Ihr Vorgehen im Praktikum jeweils live.

### A02.3: Commit-Meldungen
## A02.3: Commit-Meldungen

Gute Commit-Meldungen schreiben erfordert Übung. Schauen Sie sich die beiden Commits
[Dungeon-CampusMinden/Dungeon/commit/46530b6] und
Expand All @@ -80,7 +80,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.

## A02.4: Gradle
# A02.4: 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 @@ -98,7 +98,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.

## A02.5: Calculator: Anonyme Klassen und Lambda-Ausdrücke
# A02.5: 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
8 changes: 4 additions & 4 deletions homework/b03.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ attachments:

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

## A03.1: Git-Spiel
# A03.1: 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 @@ -34,12 +34,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.

### A03.2: Methoden-Referenzen
## A03.2: 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 @@ -77,7 +77,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.

### A03.3: Logging
## A03.3: 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 Down
16 changes: 8 additions & 8 deletions homework/b04.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,9 @@ Aufgaben in einem öffentlich sichtbaren Git-Repo durchführen sollen. Den Link
jeweiligen Lösungs-Repo geben Sie bitte in Ihrem *Post Mortem* mit an.
:::

## Stream-API
# Stream-API

### A04.1: Git: Pull-Requests (und Code-Formatierung und -Dokumentation)
## A04.1: 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 @@ -30,7 +30,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.

### A04.2: Stream-API: Task I
## A04.2: 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 @@ -42,7 +42,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.

### A04.3: Stream-API: Task II
## A04.3: 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 @@ -57,7 +57,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.

### A04.4: Stream-API: Task III
## A04.4: 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 @@ -70,7 +70,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.

### A04.5: Stream-API: Task IV+V
## A04.5: 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 @@ -105,11 +105,11 @@ Hilfsklassen sowie in der Datei [`Main.java`][3] einen Starter für diese vierte
der [Java-Stream-API] erreicht wird. Bevorzugen Sie dabei nach Möglichkeit
Methoden-Referenzen vor Lambda-Ausdrücken.

### A04.6: Record-Klassen
## A04.6: Record-Klassen

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

## A04.7: DevDungeon: Zerbrechende Tiles und Speed Potions (Lambda-Ausdrücke)
# A04.7: 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
Loading