Kontakt
stefan.bente[at]th-koeln.de
+49 2261 8196 6367
Discord Server
Prof. Bente Personal Zoom
Adresse
Steinmüllerallee 4
51643 Gummersbach
Gebäude LC4
Raum 1708 (Wegbeschreibung)
Sprechstunde nach Vereinbarung
Terminanfrage: calendly.com Wenn Sie dieses Tool nicht nutzen wollen, schicken Sie eine Mail und ich weise Ihnen einen Termin zu.

Softwaretechnik 2 (ST2), SS24

Die Veranstaltung ST2 versucht Sie mit grundlegenden Überlegungen beim Design und der Implementierung von komplexen Softwaresystemen vertraut zu machen. Ein besonderer Fokus liegt dabei auf den Konzepten des Domain-Driven Designs (DDD) und deren beispielhafter Umsetzung im Backend mittels Spring Boot.

Studiengang und Modulbeschreibung
Informatik Bachelor (siehe auch Modulbeschreibung auf der Studiengangs-Seite)
Zeitraum und zeitliche Organisation der Veranstaltung
15.04.2024 - 15.07.2024. Organisiert als 6 Ganztages-Workshops (Montags 10:00 - 17:00). Genaue Daten und Inhalte stehen weiter unten.
Ort der Veranstaltung
Die Veranstaltung findet in Präsenz statt. In Ausnahmefällen (aber nur wenn explizit für den Tag kommuniziert) weichen wir auf eine Remote-Option (Videokonferenz) aus. Wenn mehrere Räume angegeben sind, dann schauen schauen Sie bitte bei dem jeweiligen Zeitschlitz oder Workshoptag nach (siehe unten auf dieser Seite), welcher Raum an welchem Tag genutzt wird. Falls auf dieser Seite keine Angaben sind, prüfen Sie bitte die sonstigen Kommunikationkanäle für diese Veranstaltung (z.B. Discord).
Raum: 0502 (Gebäude LC6, gegenüber dem Haupteingang der Schwalbe-Arena), siehe auch detaillierte Wegbeschreibung
Videokonferenz-Link: https://th-koeln.zoom-x.de/j/69604403461?pwd=SmFNNThINEg2aFI2REZQbEExVmJqdz09 (nur in Ausnahmefällen und wenn explizit vorher für den Tag kommuniziert)
ILIAS/ILU-Kurs zur Veranstaltung
https://ilu.th-koeln.de/goto.php?target=crs_276971&client_id=thkilu
Praktikum
Das Praktikum wird über eine Folge von personalisierten und individuell für Sie generierten Git-Repos durchgeführt. Für jeden Meilenstein erhalten Sie ein neues Repo von uns. Jede*r Teilnehmer*in muss eine eigenständige Bearbeitung der Praktikumsaufgabe durchführen. Wir ermutigen Sie ausdrücklich, Ihre Lösungen in Arbeitsgruppen zu diskutieren. Ein einfaches Copy-Paste von Lösungen (unter Anpassung der Personalisierung) werten wir aber als Täuschungsversuch. Studierende, bei denen wir dieses sehen (und wir haben automatisierte Möglichkeiten, dies zu sehen) werden ohne Vorwarnung vom Praktikum ausgeschlossen. Das gilt sowohl für die Person, die kopiert hat, wie auch für die-/denjenigen, die/der die Lösung zur Verfügung gestellt hat.
Anmeldung zum Praktikum
Bitte werden Sie Mitglied in dieser ILIAS/ILU-Gruppe . (liegt in diesem ILIAS/ILU-Kurs). Die Deadline ist 18.04.2024. Bitte denken Sie daran, dass Sie sich zusätzlich noch über PSSO zur Prüfung anmelden müssen. Die Anmeldefristen dafür finden Sie auf den F10-Informationsseiten der TH Köln.
Git-Repo für das Praktikum
https://git.archi-lab.io/. Bitte loggen Sie sich unbedingt vorab einmal mit Ihrer campusId dort ein. Sonst kann das Repo Ihnen nicht automatisch zugewiesen werden. (Achtung, wir sind auf einen neuen Gitlab-Server umgezogen. Wenn Sie die Veranstaltung vor einiger Zeit absolviert haben, müssen Sie sich erneut einloggen.)
KI-Hilfsmittel wie ChatGPT und Github Copilot
KI-Hilfsmittel wie z.B. ChatGPT und Github Copilot dürfen Sie verwenden, aber genau wie bei jedem anderen Werkzeug sind Sie sind am Ende für das Ergebnis verantwortlich. Wir werden das Thema "KI-Hilfsmittel" als dediziertes Thema in diesem Modul behandeln. (Siehe auch Learning Outcome und KI-Tools wie ChatGPT und Github Co-Pilot .) In der Klausur werden keine KI-Tools (weder ChatGPT noch Github Copilot oder ein anderes derartiges Tool) zur Verfügung stehen. Daher müssen Sie in jedem Fall in der Lage sein, die Aufgaben dieses Moduls auch selbstständig und ohne KI-Unterstützung zu lösen.
Discord-Server für schnelle Kommunikation
Discord hat sich als sehr effektive Plattform für den Informationsaustausch, Diskussionen und Fragen an Lehrende/Betreuer:innen erwiesen. Deshalb sollten Sie dem ArchiLab-Discord-Server beitreten unter https://discord.gg/YYNYb5whU8. Navigieren Sie zum Channel #rollenzuweisung und klicken Sie auf st2. Die entsprechenden Kanäle zur Veranstaltung werden anschließend für Sie freigeschaltet.
Youtube-Kanal
Für diese Veranstaltung sind Lehrvideos auf Youtube verfügbar. Abonnieren Sie dafür am besten den Kanal ArchiLab. Für die Videos zu dieser Veranstaltung gibt es eine Playlist. (Disclaimer - die Videos auf diesem Kanal sind nicht monetarisiert. Weder ich persönlich noch das Labor ArchiLab verdienen damit Geld. Wir nutzen YouTube vor allem deshalb, weil es für Studierende ein leicht zugänglicher Kanal ist. Außerdem bekommen wir als Labor an der TH Köln so auch Sichtbarkeit nach außen, was z.B. bei dem Einwerben von externen Gastvorträgen hilft.)
Script
Für diese Veranstaltung ist ein Script verfügbar (in den Videos verwendete Folien als PDF, mit abschnittsweisen Links auf das entsprechende Video).

Learning Outcome

Im ST2-Praktikum wird großer Wert darauf gelegt, das theoretische Wissen auch praktisch umzusetzen. Folgendes Learning Outcome liegt der Veranstaltung zugrunde - das sollten Sie am Ende können, wenn Sie für sich das Beste aus der Veranstaltung herausholen.

Als SW-Entwickler:in oder SW-Architekt:in kann ich ein Softwaresystem für eine gegebene Aufgabenstellung iterativ konzipieren und mit gängigen Tools implementieren,

indem ich ...

  • passende Prinzipien, Patterns und Architekturstile für mein IT-System auswähle, wie etwa die SOLID-Prinzipien und die Regeln des Clean Code, und dann eine gängige Schichtenarchitektur auswähle,
  • ein Rich Domain Model nach dem Ansatz des Domain-Driven-Design (DDD) in Building Blocks konzipiere und mit Hilfe von Spring JPA umsetze,
  • meine Domäne(n) in Aggregates strukturiere,
  • diese Aggregates als REST Level 2 API für die Kommunikation mit Umsystemen und Clients verfügbar mache, und dies mit Spring Web MVC umsetze,
  • KI-Tools wie ChatGPT und Github Co-Pilot in der Softwareentwicklung einsetze, und mir deren Potential und Grenzen bewusst mache,

damit ich eine nachhaltig wartbare Software mit passender, langlebige und änderungsfähiger Architektur erstellt habe.

Regeln für das Praktikum

Für das Praktikum gelten die nachfolgenden Regeln.

Zusammenarbeit ist gewollt, simples Copy-Paste ist ein Täuschungsversuch

Jede*r Teilnehmer*in muss eine eigenständige Bearbeitung der Praktikumsaufgabe durchführen. Wir ermutigen Sie ausdrücklich, Ihre Lösungen in Arbeitsgruppen zu diskutieren. Ein einfaches Copy-Paste von Lösungen (unter Anpassung der Personalisierung) werten wir aber als Täuschungsversuch.

Wir haben die Möglichkeit, die Lösungen automatisiert zu vergleichen und “merkwürdige” Ähnlichkeiten zu erkennen. Das Tooling vergleicht Repos paarweise und deckt Code-Ähnlichkeiten mit großer Zuverlässigkeit auf. Ein solches Kopieren von Lösungen ist ein Betrugsversuch und zieht einen sofortigen Ausschluss aus dem Praktikum nach sich - und zwar sowohl für “Kopierer:in” wie auch für “Urheber:in” einer solchen Lösung. Wer seine Lösung weitergibt, riskiert also ebenfalls den Ausschluss aus dem Praktikum.

Was geht?

Wir möchten ausdrücklich, dass Sie über Lösungen diskutieren und diese auch gern gemeinsam erarbeiten. Das Folgende ist also ok:

  • Das Modell, die Klassenstruktur und einen Algorithmus gemeinsam überlegen
  • Fragen diskutieren
  • Das Ergebnis dann jede/r für sich implementieren

In diesem Fall gibt unser Tooling keinen Match aus, weil Code schreiben so individuell wie Handschrift ist. Ähnliche Klassenstrukturen sind ok, die werden nicht als Match gewertet, wenn der Code erkennbar einzeln geschrieben wurde.

Was geht NICHT?

  • Arbeitsteilig arbeiten (ich mache Service A, und du machst Service B, und dann tauschen wir die Klassen aus und passen die Individualisierung an)
  • Gemeinsam im Pair Programming-Modus eine Lösung entwickeln und dann die Individualisierung anpassen (Pair Programming ist ein guter und in der beruflichen Praxis oft genutzter Weg, um Software zu entwickeln. Im Beruf machen das aber Entwickler:innen, die ihre Qualifikation schon praktisch bewiesen haben. Hier möchten wir das bewusst ausschließen, damit jede/r von Ihnen sich einmal daran gewöhnt, eigenständig komplexen Code zu schreiben.)
  • ganze Lösungen kopieren und die Individualisierung anpassen (oder Lösungen weitergeben).

So etwas findet unser Tooling.

Disclaimer zur Auswertung der Repo-Daten

Wir behalten uns vor, die Daten Ihrer Commits in dieses Repo zur Lernstandskontrolle sowie - in anonymisierter Form - für die Beforschung der eigenen Lehre (SoTL, Scholarship of Teaching and Learning) und bei der (Weiter-)Entwicklung von Lehrunterstützungs-Tools zu verwenden. Dasselbe gilt für die Auswertung die Videos, die Sie uns für die KI-Bonusaufgaben einreichen.

Bewertung (Klausur)

Die Bewertung von ST2 erfolgt über die ST2-Klausur in der Prüfungsphase in Juli. Die Klausur wird im PC-Pool der Hochschule geschrieben. Es handelt sich um eine digitale, eingeschränkte Open-Book-Klausur. Wie gewohnt erhalten Sie für die Klausur ein individualisiertes Repo, das nur Sie selbst und wir sehen können. Vorher müssen wir Ihre Identität sicherstellen. Im Hörsaal ist das einfach - Kontrolle von MultiCa und Personalausweis, plus Sichtkontrolle, ob Sie es selbst sind.

Erlaubte Hilfsmittel

Sie dürfen bestimmte Hilfsmittel zu nutzen. Dazu zählen:

  • Die eigenen Praktikums-Repos
  • Eigene Notizen auf Papier
  • Die Materialien aus https://www.archi-lab.io/, allerdings weder die Videos noch verlinkte Materialien, nur die auf der Seite direkt zugänglichen Materialien
  • Noch genauer festzulegende Resourcen zum Nachschauen technischer Details zu Spring (Kandidaten sind Stackoverflow, Baeldung und/oder die Spring-Dokumentation)

Nicht erlaubte Hilfsmittel

Blockiert und verboten sind:

  • Kommunikation mit anderen Personen, z.B. über Discord-Chat, Telefon, SMS, WhatsApp, etc.
  • Nutzung von KI-Tools wie z.B. ChatGPT oder Github Co-Pilot (siehe unten zu KI-Tools in der Klausur).

Sollte wir einen Verstoß gegen diese Regeln feststellen, so ist dies ein Täuschungsversuch im Sinne der Prüfungsordnung. Sie müssen dann mit den entsprechenden Konsequenzen rechnen.

Inhalte der Klausur

Inhalt und Form der Klausur werden den Meilensteinen M0 - M4 ähneln, allerdings natürlich - wegen der begrenzten Zeit - in deutlich komprimierter Form. Die Klausur wird aus mehreren Aufgaben bestehen, die Sie in beliebiger Reihenfolge bearbeiten können. Die Aufgaben werden in sich abgeschlossen sein und bauen nicht aufeinander auf.

Es wird Code in der Klausur zu schreiben sein. Anders als im Praktikum wird der Code aber nicht automatisiert getestet, sondern manuell von uns bewertet. Es wird vermutlich auch keine vordefinierten Tests in der Klausur geben. Sie können gern selbst Tests schreiben. Bonuspunkte gibt es dafür (und für andere Extraleistungen) nur, wenn in der Klausuraufgabe ausdrücklich vermerkt. Ihr Code muss nicht notwendig compilieren, allerdings kann nicht compilierender Code Abzüge geben. Auch hierfür stehen die Details noch nicht fest, und ich verweise auf die Aufgabenbeschreibungen in der Klausur.

Sie sollten davon ausgehen, dass alle Inhalte von M0 - M4 vorkommen können. Darüber hinaus werden die wesentlichen Elemente von ST1 als bekannt und beherrscht vorausgesetzt - es kann also sein, dass Sie z.B. mit Domain-Modellen (fachlich oder logisch) oder mit Status-Modellen umgehen müssen. Das kann z.B. folgende Aufgabenstellungen bedeuten (Liste hat keinen Anspruch auf Vollständigkeit):

  • Analyse eines Code-Fragments bezüglich Verstöße gegen Clean-Code-Regeln
  • Dito für Verstöße gegen SOLID-Prinzipien
  • Refactoring eines Code-Fragments, um solche Verstöße zu beheben
  • Aufstellen eines einfachen Statusmodells und Umsetzung in Code
  • Analyse eines Code-Fragments bezüglich sinnvoller Domain Primitives
  • Implementierung von Domain Primitives
  • Analyse von Aggregates anhand eines Domain Modells
  • Definition von REST-Endpoints
  • Festlegung von passenden REST-Returncodes für bestimmte Fehlersituationen
  • Implementierung von REST-Endpoints
  • Reflektion der Lösungsqualität von KI-Tools in der Softwareentwicklung

KI-Tools wie ChatGPT und Github Co-Pilot

KI-Tools wie ChatGPT und Github Co-Pilot stellen gerade eine Disruption der Arbeitsweise von Softwareentwickler*innen dar. Sie sind mächtige Werkzeuge, die es ermöglichen, Code wesentlich schneller zu schreiben, sich Code erklären zu lassen, Fehler zu finden, bislang unbekannte Frameworks und Sprachen schnell zu lernen, und vieles mehr.

Auf der anderen Seite ist aber nicht so, dass die KI einem alle Arbeit abnimmt. Je komplexer die Software, desto wichtiger wird es, die KI-Tools sinnvoll einzusetzen. Oder anders gesagt: Sehr einfache Aufgaben kann man in den ChatGPT-Prompt kopieren und bekommt oft eine sinnvolle Lösung. Je komplexer die Aufgabenstellung, desto mehr ist man als bedienender Mensch gefragt, die Lösung zu verstehen und zu verbessern.

KI-Tools im Praktikum

Bei ArchiLab haben wir uns intensiv mit dem Einsatz von KI-Tools in Software-Entwicklung allgemein, und in der Lehre im Besonderen, beschäftigt. Im Rahmen eines Guided Project im Master Digital Sciences sind drei Veröffentlichungen dazu entstanden (Randall et al. (2023-01), Geisel et al. (2024-02) und Bente et al. (2024-01)). Auf dieser Basis haben wir uns entschieden, den Einsatz von KI-Tools im Praktikum zu erlauben.

Das bedeutet, dass Sie im Praktikum die Möglichkeit haben, KI-Tools wie ChatGPT und Github Co-Pilot zu nutzen. Sie dürfen also Teile der Aufgabenstellung in den ChatGPT-Prompt kopieren und sich eine Lösung generieren lassen. Sie dürfen auch Teile Ihrer eigenen Lösung in den Prompt kopieren und sich Verbesserungsvorschläge generieren lassen. Genauso können Sie andere Tools wie etwa Github Co-Pilot nutzen. Die obigen Regeln zum Copy-Paste gelten aber natürlich weiterhin.

Klausur-Bonuspunkte für die Reflektion der KI-Tools

In den Meilensteinen des Praktikums (ab M1) werden wir spezielle Bonus-Aufgaben für die Reflektion Ihres Einsatzes von KI-Tools stellen. Diese Bonus-Aufgaben verlangen, dass Sie Ihren Weg zur Lösung dokumentieren, Ihre Prompts per Screen Capturing aufzeichnen, und Ihre Gedanken zur Bewertung der Lösungen reflektieren. Möglicherweise werden wir besondere Aufgabenstellungen damit verbinden.

Dokumentation als Video

Das Ergebnis müssen Sie als ein maximal 5-minütiges Video im Querformat abgeben. Dafür können Sie bis zu 6 Bonuspunkte in der Klausur erhalten (das entspricht etwa einer Teilnote in der Klausur, also z.B. dem Sprung von 2,3 auf 2,0). Die Anforderungen an das Video (um bis zu 6 Punkte zu erhalten) sind wie folgt:

  • Aus dem Video geht hervor, wie Sie KI-Tools eingesetzt haben, was gut funktioniert hat und was weniger gut, und wie Sie die Lösung weiter bearbeitet haben (sei es Veränderung des Prompts, selbstständige Änderung der Implementierung, etc.).
  • Wenn Sie eine Kombination von KI-Tools (z.B. ChatGPT und Github Copilot) und andere Tools (z.B. Stackoverflow) eingesetzt haben, dann sagen Sie im Video, aus welchem Grund Sie was wann genutzt haben.
  • Sie fassen Ihre Erfahrung zusammen, wie Sie zukünftig mit solchen Fragestellungen im Zusammenhang mit KI-Tools umgehen wollen.

Wir wählen aus jedem Meilenstein die besten 1-2 Videos aus und nehmen sie als Diskussionsgrundlage in unseren ST-Workshops.

Formale Anforderungen

  • Abgaben sind einzeln, d.h. jede:r Studierende (der/die sich beteiligen will), muss ein eigenes Video abgeben.
  • Sie müssen sich vor dem Meilenstein über ILU für die Bonuspunkte anmelden. Wir können aus Zeitgründen nur eine begrenzte Anzahl von Videos bewerten.
  • Sie brauchen Ihr Gesicht nicht im Video zu zeigen, aber es muss Ihre Stimme zu hören sein.
  • Verwackeltes Abfilmen des Bildschirms mit dem Handy ist nicht ausreichend. Nutzen Sie einen vernünftigen Screen Recorder, wie z.B. OBS oder ein anderes Screen-Capturing-Tool.
  • Erklären Sie Ihr Vorgehen und Ihre Gedanken laut im Video. Sagen Sie, welche ChatGPT-Version Sie nutzen, oder welche anderen Tools Sie gerade nutzen.
  • Beschreiben Sie vor allem, welche Schlüsse zu Stärken und Schwächen Sie aus der Nutzung von KI-Tools ziehen.
  • Interessant sind auch “Good Practices”, z.B. zu einer Kombination aus verschiedenen Werkzeugen (z.B. ChatGPT und Github Copilot), und wofür man wann welches Tool einsetzt.
  • Querformat, mindestens 720p, Prompt und Code gut lesbar, maximal 5 Minuten.

KI-Tools in der Klausur

In der Klausur können wir den Einsatz von KI-Tools nicht erlauben. Das hat mehrere Gründe.

Fairness

Wie wir in diesem Paper 2024-01 beschrieben haben, wäre es ideal, wenn die Hochschule einen Zugang zu aktuellster KI-Technologie (sprich: ChatGPT 4.0, was momentan ca. 23 € pro Monat kostet) für alle Studierenden bereitstellen würde. Dann könnten wir die Nutzung von KI-Tools in der Klausur erlauben und den Umfang der Klausuraufgaben entsprechend größer machen (weil man ja mit KI produktiver ist).

An diesem Punkt sind wir aber leider (noch) nicht. Die Hochschule bietet zwar mit https://ki.th-koeln.de/ einen ChatGPT-Zugang auch zu 4.0 an, der aber anonymisiert ist. D.h. diese Webseite ist ein Frontend für das ChatGPT-API, das über einen immer gleichen Account läuft. Damit ist es nicht sinnvoll möglich, Lösungen allmählich (in mehreren Prompts) zu erarbeiten und zu verfeinern.

Somit wäre es unfair gegenüber den Studierenden, die die Kosten für einen Zugang zu ChatGPT 4.0 nicht aufbringen können oder wollen, da ChatGPT 4.0 nachweislich deutlich leistungsfähiger bei der Unterstützung von Softwareentwicklungs-Aufgaben ist als ChatGPT 3.5.

Rechtssicherheit

Im Moment ist es nicht klar, ob die Nutzung von KI-Tools in einer Klausur uns in eine rechtliche Grauzone (oder sogar darüber hinaus) bringen würde. Wir möchten das Risiko nicht eingehen, dass eine Klausur wegen der Nutzung von KI-Tools angefochten wird.

Konsequenz: Keine KI-Tools in der Klausur zugelassen

Wir werden KI-Tools in der Klausur technisch blockieren. Sie müssen also weiterhin Code im Rahmen der Aufgabenstellung von ST2 selbst schreiben können. Ebenso müssen Sie Code verstehen, um ihn zu verbessern (Refactoring). Außerdem müssen Sie die Konzepte beherrschen, die dem Code zugrunde liegen. Oder, mit anderen Worten: Sie müssen die Aufgabenstellungen des Praktikums auch ohne solche Tools lösen können, sonst haben Sie keine Chance, die Klausur zu bestehen.

Die entsprechenden Kompetenzen kann man anhand der sogenannten Bloom’s Revised Taxonomy einordnen. Die Praktikumsaufgaben werden mit einer Markierung versehen, welcher Stufe der Taxonomie sie entsprechen. Damit Sie sich die “höheren” Kompetenzen wie etwa “Analyse” aneignen können, müssen Sie die entsprechenden Aktivitäten auch selbst und eigenständig durchgeführt haben. Auch wenn Sie im praktischen Berufsleben KI-Tools als Hilfe nutzen.

… aber es wird (wahrscheinlich) eine KI-Aufgabe in der Klausur geben

Auch wenn KI-Tools in der Klausur nicht erlaubt sind, möchten wir die Erfahrungen, die Sie im Praktikum mit KI-Tools gemacht haben, in der Klausur reflektieren. Das kann z.B. eine Aufgabe sein, in der wir vorab einen Prompt ausführen und die Antwort von ChatGPT in der Klausur abdrucken, und Sie sollen die Antwort der KI bewerten. Oder eine ähnlich geartete Aufgabe, die man ohne die direkte Nutzung von KI-Tools lösen kann.

Workshops

Mon 15.04.2024, 10:00 - 12:30: ST2-Kickoff

Ich stelle Ihnen den Inhalt von ST2 vor und des Praktikums vor. Darüber hinaus wird der erste Meilenstein M0 vorgestellt. Und wir sprechen über KI in der Software-Entwicklung.

Ort des Workshops

Raum: 0502 (Gebäude LC6, gegenüber dem Haupteingang der Schwalbe-Arena), siehe auch detaillierte Wegbeschreibung.

Ziel des Tages

Sie kennen die Rahmenbedingungen für ST2 und können mit dem ersten Meilenstein beginnen.

Schauen Sie bitte vorab nachfolgende Videos

Agenda

  • 10:00 - 11:00:  Organisatorisches
    • Zeitplan
    • Youtube-Channel
    • Discord als präferiertes Kommunikationsforum
    • Klausur
    • Inhalt der Praktikums-Meilensteine
    • Vorstellung Meilenstein M0
  • 11:00 - 12:30:  KI in der Software-Entwicklung
    • Neue Möglichkeiten in der Programmierung durch KI
    • Was muss ich selbst als Programmierer:in zukünftig können?
    • Bloom'sche Taxonomie zur Kennzeichnung von Praktikumsaufgaben
    • Regeln für Praktikum und Klausur
    • Live-Coding unter Mithilfe von ChatGPT und Github Copilot (Code and Tests)

Aufgabe bis zum nächsten Workshop

Nach dem Workshop bearbeiten Sie bitte Meilenstein M0.

Mon 06.05.2024, 10:00 - 17:00: Clean Code & SOLID

In diesem Workshop geht es darum, die Clean Code & SOLID Prinzipien anzuwenden und Verstöße zu erkennen, sowie diese zu beheben. Dazu nutzen Sie die aus Videos bekannte Vorgehensweise.

Ort des Workshops

Raum: 0502 (Gebäude LC6, gegenüber dem Haupteingang der Schwalbe-Arena), siehe auch detaillierte Wegbeschreibung.

Ziel des Tages

Sie können Clean Code und SOLID auf den eigenen Code anwenden.

Schauen Sie bitte vorab nachfolgende Videos

Agenda

  • 10:00 - 10:15:  Retrospektive zu M0
  • 10:15 - 10:30:  Vorstellung von M1
  • 10:45 - 11:00:  Wozu Refactoring?
    • Kurze Motivation zum Thema Refactoring - wozu brauchen wir das?
    • Hier liegen die Folien dazu
  • 11:00 - 11:30: Übung: Refactoring der "Bauzeichner 2.0"-Software aus dem Video nach SOLID und Clean Code
    • Das im Video zu den SOLID-Prinzipien vorgestellte Beispiel der "Bauzeichner 2.0"-Software wird in dieser Übung einmal gründlich gefactored - gemäß der Prinzipien von SOLID und Clean Code.
    • Teil 1 der Übung. Wir schauen erst einmal die Checkliste für Clean Code und SOLID an
    • Dann stelle ich Ihnen das "Bauzeichner 2.0"-Beispielrepo vor
    • Wir machen Schritt 1 der Übung, und ich mache ein Live-Refactoring des Beispiels
    • Wir schauen auch darauf, inwieweit uns KI-Tools wie ChatGPT und Github Co-Pilot bei der Aufgabe helfen können
  • 11:30 - 12:30:  Refactoring des eigenen Codes (1) - Clean-Code-Regeln
    • Sie setzen den Teil der Übung im eigenen Code um
    • Die Betreuer gehen herum und helfen bei Problemen
  • 12:30 - 13:30:  Mittagspause
  • 13:30 - 14:15:  Schichtenarchitektur und Package-Struktur in der Praxis
    • Ich gebe Ihnen einen Inhaltsimpuls zu dem Thema (da gibt es leider noch kein Video zu). Dies ist Motivation dazu, wo eigentlich die Schichtenarchitektur herkommt. Was gehört in welche Schicht? Worauf sollte man achten? Wie sieht eine sinnvolle Packagestruktur für Ihr Praktikumsbeispiel aus?
    • Hier gibt's die Folien zu dem Impuls.
  • 14:15 - 14:45: Übung: Refactoring der "Bauzeichner 2.0"-Software aus dem Video nach SOLID und Clean Code
    • Das im Video zu den SOLID-Prinzipien vorgestellte Beispiel der "Bauzeichner 2.0"-Software wird in dieser Übung einmal gründlich gefactored - gemäß der Prinzipien von SOLID und Clean Code.
    • Wir machen Teil 2 der Übung, mit dem Refactoring der Package-Struktur.
    • Ich code wieder live eine Lösung.
  • 14:45 - 15:15:  Refactoring des eigenen Codes (2) - DDD-konforme Modulstruktur
    • Sie setzen den Teil der Übung im eigenen Code um
    • Die Betreuer gehen herum und helfen bei Problemen
  • 15:15 - 16:00: Übung: Refactoring der "Bauzeichner 2.0"-Software aus dem Video nach SOLID und Clean Code
    • Das im Video zu den SOLID-Prinzipien vorgestellte Beispiel der "Bauzeichner 2.0"-Software wird in dieser Übung einmal gründlich gefactored - gemäß der Prinzipien von SOLID und Clean Code.
    • Jetzt kommt Teil der Übung (Schritte 3a ... 3c). Dort beschäftigen wir uns mit den SOLID-Prinzipien.
    • Hauptteil ist das Auflösen von zyklischen Abhängigkeiten durch das Dependency Inversion Principle.
    • Ich code live die Lösung für das Übungsbeispiel.
  • 16:00 - 17:00:  Refactoring des eigenen Codes (3) - SOLID-Prinzipien und Auflösen von Zykeln
    • Sie setzen den Teil der Übung im eigenen Code um
    • Die Betreuer gehen herum und helfen bei Problemen

Aufgabe bis zum nächsten Workshop

Nach dem Workshop bearbeiten Sie bitte Meilenstein M1.

Mon 27.05.2024, 10:00 - 17:00: Domain Primitives

Es gibt verschiedene Mittel, um seinen Code so aufzubauen, dass er gut wartbar und leicht verständlich ist. Dazu gehören Domain Primitives (auch "Rich Domain Model" genannt). Das sind domänenspezifische Basisklassen mit Funktionalität und Validierung. Sie refactorn Ihren eigenen Praktikumscode, um passende Domain Primitives zu definieren.

Ort des Workshops

Videokonferenz-Link: https://th-koeln.zoom-x.de/j/69604403461?pwd=SmFNNThINEg2aFI2REZQbEExVmJqdz09 .

Ziel des Tages

Sie wissen, wie sinnvoll gewählte Domain Primitives in Ihrem Code aussehen, und können das in Ihrem eigenen Code nutzen.

Schauen Sie bitte vorab nachfolgende Videos

Agenda

  • 10:00 - 10:15:  Retrospektive zu M1
  • 10:15 - 11:15:  Live-Coding zum Thema Domain Primitives
    • Ich mache ein Live-Coding
    • Offene Diskussion des Vorgehens
    • Wir schauen auch darauf, inwieweit uns KI-Tools wie ChatGPT und Github Co-Pilot bei der Aufgabe helfen können
  • 11:15 - 16:30:  Arbeit an Meilenstein M2
    • Sie arbeiten an der Umsetzung von Domain Primitives in Ihrem eigenen Code
    • Wir beraten dabei und helfen bei Problemen
    • Dazwischen gibt es eine Mittagspause
  • 16:30 - 17:00:  Retrospektive KI-Tools
    • Wir suchen vorab eins der "Bonus"-Videos heraus, in dem Sie KI-Tools im vorigen Meilenstein eingesetzt haben, und sehen es uns gemeinsam an.
    • Anschließend diskutieren wir kurz, wie gut uns die KI-Tools geholfen haben, und was im Umgang damit gut funktioniert hat.

Aufgabe bis zum nächsten Workshop

Nach dem Workshop bearbeiten Sie bitte Meilenstein M2.

Mon 17.06.2024, 10:00 - 16:30: Aggregates als REST Level 2 API

Wir beschäftigen uns mit der Frage, was Aggregates sind - Motivation, Definition und Checkliste. In der Folge werden Aggregates genutzt, um REST APIs zu definieren. Und wir schauen uns an, wie man eigentlich REST APIs nutzt, d.h. wie man sie richtig aufruft und ihre Response interpretiert.

Ort des Workshops

Raum: 0502 (Gebäude LC6, gegenüber dem Haupteingang der Schwalbe-Arena), siehe auch detaillierte Wegbeschreibung.

Ziel des Tages

Sie wissen, wie Sie Aggregates nutzen, um REST APIs zu definieren

Schauen Sie bitte vorab nachfolgende Videos

Agenda

  • 10:00 - 10:15:  Retrospektive zu M2
  • 10:15 - 11:00: Übung: Aggregates bestimmen (am Beispiel eines Campus-Management-Systems CAMS)
    • In dieser Übung geht es darum, Aggregates zu identifizieren. Dazu nutzen Sie die aus Videos bekannte Checkliste.
    • Gehen Sie in Kleingruppen irgendwohin, wo Sie Ruhe haben (im Raum oder in angrenzenden Räumen, es sollte genug frei sein)
    • Diskutieren Sie die Aufgabe miteinander
    • anschließend treffen wir uns wieder hier und vergleichen die Ergebnisse
  • 11:00 - 11:30: Übung: REST-API spezifizieren (am Beispiel eines Campus-Management-Systems CAMS)
    • In dieser Übung geht es darum, für die in einer vorangegangenen Übung gefundenen Aggregates jeweils ein REST-API zu spezifizieren.
    • Gehen Sie in Kleingruppen irgendwohin, wo Sie Ruhe haben
    • Diskutieren Sie die Aufgabe miteinander
    • anschließend treffen wir uns wieder hier und vergleichen die Ergebnisse
  • 11:30 - 14:00:  Bearbeitung des eigenen Praktikumsmeilensteins - Aggregates und REST-APIs
    • Sie bearbeiten den Teil des Praktikums, der sich mit Spezifikation von Aggregates und REST-APIs beschäftigt
    • Wir beraten dabei und helfen bei Problemen
    • Dazwischen gibt es eine Mittagspause
  • 14:00 - 14:45:  Aufruf von REST-APIs
    • Ich zeige an einem Live-Beispiel, wie man ein REST-API aufruft und die Response interpretiert
    • Diskussion dazu
  • 14:45 - 16:00:  Bearbeitung des eigenen Praktikumsmeilensteins - REST-Aufruf
    • Sie bearbeiten den Teil des Praktikums, der sich mit dem Aufruf von REST-APIs beschäftigt
    • Wir beraten dabei und helfen bei Problemen
  • 16:00 - 16:30:  Retrospektive KI-Tools
    • Wir suchen vorab eins der "Bonus"-Videos heraus, in dem Sie KI-Tools im vorigen Meilenstein eingesetzt haben, und sehen es uns gemeinsam an.
    • Anschließend diskutieren wir kurz, wie gut uns die KI-Tools geholfen haben, und was im Umgang damit gut funktioniert hat.

Aufgabe bis zum nächsten Workshop

Nach dem Workshop bearbeiten Sie bitte Meilenstein M3.

Mon 01.07.2024, 11:00 - 17:00: REST-APIs mit Spring implementieren

Welche Prinzipien sollte man bei der REST-Implementierung einhalten? Wie macht man das in einem Framework wie Spring Boot? Wir machen das anhand von Programmierübungen. Dazu schauen wir uns auch an, inwiefern KI-Tools bei der Implementierung helfen können. Achtung, dieser Workshop beginnt ausnahmsweise erst um 11:00.

Ort des Workshops

Raum: 0502 (Gebäude LC6, gegenüber dem Haupteingang der Schwalbe-Arena), siehe auch detaillierte Wegbeschreibung.

Ziel des Tages

Sie wissen, wie Sie REST APIs mit Spring Boot implementieren

Schauen Sie bitte vorab nachfolgende Videos

Agenda

  • 11:00 - 11:15:  Retrospektive zu M3
  • 11:15 - 12:00:  Live-Coding - Implementierung von REST-APIs mit Spring Boot
    • Ich implementiere live ein REST-API mit Spring Boot
    • Offene Fragen und Anmerkungen
    • Wir schauen auch darauf, inwieweit uns KI-Tools wie ChatGPT und Github Co-Pilot bei der Aufgabe helfen können
  • 12:00 - 14:30:  Arbeit am eigenen Code - Implementierung der REST-APIs
    • Sie arbeiten an der Umsetzung von Domain Primitives in Ihrem eigenen Code
    • Wir beraten dabei und helfen bei Problemen
    • Dazwischen gibt es eine Mittagspause
  • 14:30 - 15:15:  Testing von REST-APIs
    • Ich zeige an einem Live-Beispiel, wie man REST-APIs automatisiert testet
    • Wir schauen, inwieweit KI-Tools dabei helfen können
    • Diskussion dazu
  • 15:15 - 16:30:  Arbeit am eigenen Code - Schreiben von REST-API-Tests
    • Sie implementieren Tests im eigenen Code
    • Wir beraten dabei und helfen bei Problemen
  • 16:30 - 17:00:  Retrospektive KI-Tools
    • Wir suchen vorab eins der "Bonus"-Videos heraus, in dem Sie KI-Tools im vorigen Meilenstein eingesetzt haben, und sehen es uns gemeinsam an.
    • Anschließend diskutieren wir kurz, wie gut uns die KI-Tools geholfen haben, und was im Umgang damit gut funktioniert hat.

Aufgabe bis zum nächsten Workshop

Nach dem Workshop bearbeiten Sie bitte Meilenstein M4.

Mon 15.07.2024, 10:00 - 17:00: Fragen zum Stoff und Wiederholung

In Vorbereitung auf die Klausur wiederholen wir den Stoff, der noch unklar ist

Ort des Workshops

Raum: 0502 (Gebäude LC6, gegenüber dem Haupteingang der Schwalbe-Arena), siehe auch detaillierte Wegbeschreibung.

Ziel des Tages

Sie wissen, was in der Klausur auf Sie zukommt, und wie Sie sich darauf vorbereiten können

Agenda

  • 10:00 - 11:00:  Retrospektive ST2
    • In ST2 mussten Sie vermutlich deutlich mehr Code schreiben als in den meisten Lehrveranstaltungen vorher. Ich würde daher gern mit Ihnen eine kurze Retrospektive machen.
    • Wir nutzen dieses EasyRetro-Board für die Retro
  • 11:00 - 11:30:  Allgemeine Hinweise zur Klausur
    • Ich stelle kurz vor, was in der Klausur zu erwarten ist (siehe auch Inhalte der Klausur).
    • Sie können alle Fragen zur Klausur loswerden, die Sie noch haben.
  • 11:30 - 12:00:  Fragen zum Stoff
  • 12:00 - 13:00:  Mittagspause
  • 13:00 - 16:30:  Wiederholung
    • Wir werden vorher die noch offenen Fragen sammeln und auf noch nicht so gut verstandene Themen noch einmal mit Beispielen und Übungen eingehen
  • 16:30 - 17:00:  Retrospektive KI-Tools
    • Wir suchen vorab eins der "Bonus"-Videos heraus, in dem Sie KI-Tools im vorigen Meilenstein eingesetzt haben, und sehen es uns gemeinsam an.
    • Anschließend diskutieren wir kurz, wie gut uns die KI-Tools geholfen haben, und was im Umgang damit gut funktioniert hat.

Praktikums-Meilensteine

Das Praktikum gliedert sich in die folgenden Meilensteine. Alle Meilensteine müssen bestanden sein, um das Gesamtpraktikum zu bestehen. Die Tests eines Meilensteins müssen komplett 'grün' sein, um ihn zu bestehen. Eine Teilnahme an einem Meilenstein ist nur möglich, wenn alle vorigen Meilensteine bestanden wurden.

M0: Initiale Implementierung einer Aufgabe

In diesem Meilenstein implementieren wir (erstmal ohne weitere Vorgaben) eine Aufgabenstellung gegen vorgegebene Unit Tests. Zusätzlich schreiben wir eigene Unit Tests für den unseren Code.

Der Meilenstein wird komplett automatisch (per Unit-Tests) überprüft.

  • Ausgabe: Fri 19.04.2024, 18:00
  • Abgabe bis spätestens: Fri 03.05.2024, 09:00

Zugehörige Videos

M1: Refactoring nach Clean Code / SOLID-Prinzipien

Es kommen eine oder mehrere neue Anforderungen dazu, und wir entwickeln unsere Lösung aus M0 weiter. Dazu beschäftigen wir uns mit den Clean-Code-Regeln und den SOLID-Prinzipien, und machen ein Refactoring der eigenen Lösung, so dass unser Code diesen Regeln genügt. Als Bonusaufgabe reflektieren wir (optional), welches Potential und welche Grenzen KI-Tools wie ChatGPT und Github Co-Pilot bei diesem Refactoring haben.

Der Meilenstein wird teils automatisch (per Unit-Tests) überprüft, teils gibt es manuelles Feedback. Manuelles Feedback geben wir frühestens dann, wenn die automatisch überprüften Aufgaben davor alle grün sind. Bitte beachten Sie, dass wir nur ein (Zwischen-)Feedback vor der Abgabe garantieren können. Nutzen Sie also die Workshops, um Fragen zu stellen und Ihre Lösung(en) zu diskutieren.

  • Ausgabe: Mon 06.05.2024, 18:00
  • Abgabe bis spätestens: Fri 24.05.2024, 09:00

Zugehörige Videos

M2: Domain Primitives

Wir machen ein Refactoring unserer Lösung, indem wir Domain Primitives verwenden. Auch hier gibt es wieder eine Bonusaufgabe zur Reflektion der KI-Tools.

Der Meilenstein wird komplett automatisch (per Unit-Tests) überprüft.

  • Ausgabe: Mon 27.05.2024, 18:00
  • Abgabe bis spätestens: Fri 14.06.2024, 09:00

Zugehörige Videos

M3: REST API Design

Wir identifizieren Aggregates in unserer Implementation, und designen darauf aufbauend ein REST-API für wesentliche Funktionalitäten. Darüber hinaus beschäftigen wir uns damit, wie man eigentlich REST-APIs nutzt (d.h. wie man sie eigentlich richtig aufruft und ihre Response interpretiert). Auch das machen wir wieder mit eigenen Tests. Das Thema KI-Tools bleibt optional ebenfalls dabei.

Der Meilenstein wird komplett automatisch (per Unit-Tests) überprüft.

  • Ausgabe: Mon 17.06.2024, 18:00
  • Abgabe bis spätestens: Fri 28.06.2024, 09:00

Zugehörige Videos

M4: REST-API-Implementierung

Für eine Auswahl von REST-APIs machen wir eine Implementierung basierend auf Spring Data JPA und Spring Web MVC. Zusätzlich werden Tests für die REST APIs geschrieben. Und auch hier gibt es wieder eine Bonusaufgabe zur Reflektion der Nutzung von KI-Tools.

Der Meilenstein wird komplett automatisch (per Unit-Tests) überprüft.

  • Ausgabe: Mon 01.07.2024, 18:00
  • Abgabe bis spätestens: Fri 12.07.2024, 09:00

Zugehörige Videos

Bildquellen