| has_license | true |
|---|---|
| no_beamer | true |
| title | IFM 2.1: Programmieren 2 (Sommer 2026) |
... And, lastly, there's the explosive growth in demand, which has led to many people doing it who aren't any good at it. Code is merely a means to an end. Programming is an art and code is merely its medium. Pointing a camera at a subject does not make one a proper photographer. There are a lot of self-described coders out there who couldn't program their way out of a paper bag.
\hfill{=tex} -- John Gruber auf daringfireball.net
Sie haben letztes Semester in Prog1 die wichtigsten Elemente und Konzepte der Programmiersprache Java kennen gelernt.
In diesem Modul geht es darum, diese Kenntnisse sowohl auf der Java- als auch auf der Methoden-Seite so zu erweitern, dass Sie gemeinsam größere Anwendungen erstellen und pflegen können. Sie werden fortgeschrittene Konzepte in Java kennenlernen und sich mit etablierten Methoden in der Softwareentwicklung wie Versionierung von Code, Einhaltung von Coding Conventions, Grundlagen des Softwaretests, Anwendung von Refactoring, Einsatz von Build-Tools und Logging auseinander setzen. Wenn uns dabei ein Entwurfsmuster "über den Weg läuft", werden wir die Gelegenheit nutzen und uns dieses genauer anschauen.
- Fortgeschrittene Konzepte in Java ("Classic Java")
- Reguläre Ausdrücke, Generics, Depencendy Injection
- Fremde APIs nutzen: ANTLR
- Graphische Oberflächen mit Swing
- Fehlerbehandlungskonzepte
- Fortgeschrittene Konzepte in Java ("FP")
- Default-Methoden, Funktionsinterfaces, Methodenreferenzen, Lambdas, Optional, Stream-API
- Records, Sealed Classes, Pattern Matching
- Versionierung mit Git
- Softwarequalität
- Testen mit JUnit und Mockito
- Coding Conventions & Smells, Refactoring
- Entwurfsmuster
- Observer, Visitor, Template-Method, Command
- Tooling und Bauen von Software
- Packages
- Logging, Debugging
- Gradle, Docker, Continuous Integration (GitHub Workflows)
- Carsten Gips (Sprechstunde nach Vereinbarung)
- Alesia Herbertz (Tutorin)
| Vorlesung (2 SWS) | Praktikum (2 SWS) |
|---|---|
| Mo, 08:00 - 09:30 Uhr | G1: Mo, 11:30 - 13:00 Uhr |
| (Flipped Classroom) | G2: Mo, 14:00 - 15:30 Uhr |
| G3: Mo, 09:45 - 11:15 Uhr | |
| G4: Mi, 08:00 - 09:30 Uhr |
Alle Sitzungen online per Zoom (Zugangsdaten siehe ILIAS).
Abgabe der Post Mortems jeweils Montag bis 08:00 Uhr im ILIAS. Vorstellung der Lösung im jeweiligen Praktikum in der Abgabewoche.
| Monat | Tag | Vorlesung (Mo) | Praktikum (Mo/Mi) |
|---|---|---|---|
| April | 20. | Orga | |
| 27. | Git1: Basics; Gradle, Packages | ||
| Mai | 04. | Git2: Branches, Git4: Worktree; JUnit1: Basics; CI | B01 |
| 11. | Lambdas, Methodenrefs; Observer, Swing Events | B02 | |
| 18. | Git3: Workflows; RegExp; Template-Method | B03 | |
| 25. | Feiertag | Feiertag | |
| Juni | 01. | ANTLR; Visitor; Debugging | B04 |
| 08. | JUnit2: Testfälle, JUnit3: Mocking; Dependency Injection, Defaultmethoden | Kein Praktikum (Parcoursprüfung BC) | |
| 15. | Records, Pattern Matching, Stream-API; JUnit4: Property Testing | B05 | |
| 22. | Generics1: Klassen/Methoden, Generics2: Bounds & Wildcards; Command; Logging | B06 | |
| 29. | Generics3: Type Erasure & Polymorphie, Exceptions, Optional & Result | B07 | |
| Juli | 06. | Bad Smells, Coding Rules, Refactoring; Docker | B08 |
| 13. | Rückblick, Prüfungsvorbereitung |
(Digitale) Klausur plus Studienleistung (Portfolio), 5 ECTS
-
Studienleistung: "Portfolio":
Mindestens 6 der Übungsblätter B01..B08 erfolgreich bearbeitet (inkl. Post Mortem).
-
Gesamtnote: (Digitale) Klausur im B40 (90 Minuten)
::: {.details title="Hinweise"}
- Die Bearbeitung der Übungsblätter erfolgt individuell.
- Ein Team umfasst 1 Person.
- Die Post Mortems sind individuell zu erstellen und fristgerecht abzugeben.
- "Aktive Beteiligung" umfasst Anwesenheit und sachbezogene Beiträge; Anwesenheit/Beteiligung werden dokumentiert.
- "Erfolgreiche Bearbeitung" eines Blattes umfasst die individuelle Bearbeitung aller Aufgaben des Blattes sowie die fristgerechte Abgabe des ausreichenden Post Mortems im ILIAS. Die intensive Beschäftigung mit den Aufgaben muss erkennbar sein.
\smallskip
-
Post Mortem: Jede Person beschreibt individuell(!) die Bearbeitung des jeweiligen Übungsblattes zurückblickend mit mind. 150 bis max. 400 Wörtern (Nutzlast; Überschriften und Links zählen nicht mit). Gehen Sie dabei aussagekräftig und nachvollziehbar auf folgende Punkte ein:
- Zusammenfassung: Was wurde gemacht?
- Details: Kurze Beschreibung besonders interessanter Aspekte.
- Reflexion: Was war der schwierigste Teil? Wie haben Sie dieses Problem gelöst?
- Reflexion: Was haben Sie gelernt oder (besser) verstanden?
- Link zu Ihrem Repo/Branch/PR mit den relevanten Artefakten.
Die Post Mortems geben Sie bitte pro Person bis spätestens zur jeweiligen Deadline im ILIAS ab.
Siehe auch Programmiermethoden-CampusMinden/Prog2-Lecture-S26#2. :::
- "Learn Java". Oracle Corporation, 2026.
- "Pro Git (Second Edition)". Chacon, S. und Straub, B., Apress, 2014. ISBN 978-1-4842-0077-3.
- "Java ist auch eine Insel". Ullenboom, C., Rheinwerk-Verlag, 2021. ISBN 978-3-8362-8745-6.
- "The Java Tutorials". Oracle Corporation, 2024.
- JDK: Java SE 25 (LTS) (Oracle oder Alternativen, bitte 64-bit Version nutzen)
- IDE: Eclipse IDE for Java Developers oder IntelliJ IDEA (Community Edition)
- Git
Die Überarbeitung dieser Lehrveranstaltung wurde vom Ministerium für Kultur und Wissenschaft (MKW) in NRW im Einvernehmen mit der Digitalen Hochschule NRW (DH.NRW) gefördert: "Fellowships für Innovationen in der digitalen Hochschulbildung" (Digi Fellowships).
Diese Vorlesung wurde vom Projekt "Digitalbaukasten für kompetenzorientiertes Selbststudium" (DigikoS) unterstützt. Ein vom DigikoS-Projekt ausgebildeter Digital Learning Scout hat insbesondere die Koordination der digitalen Gruppenarbeiten, des Peer-Feedbacks und der Postersessions in ILIAS technisch und inhaltlich begleitet. DigikoS wird als Verbundprojekt von der Stiftung Innovation in der Hochschullehre gefördert.
Unless otherwise noted, this work by Carsten Gips and contributors is licensed under CC BY-SA 4.0. See the credits for a detailed list of contributing projects.
