Skip to content

Programmiermethoden-CampusMinden/Prog2-Lecture

Repository files navigation

has_license true
no_beamer true
title IFM 2.1: Programmieren 2 (Sommer 2026)

Syllabus

... 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

Kursbeschreibung

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.

Überblick Modulinhalte

  1. Fortgeschrittene Konzepte in Java ("Classic Java")
    • Reguläre Ausdrücke, Generics, Depencendy Injection
    • Fremde APIs nutzen: ANTLR
    • Graphische Oberflächen mit Swing
    • Fehlerbehandlungskonzepte
  2. Fortgeschrittene Konzepte in Java ("FP")
    • Default-Methoden, Funktionsinterfaces, Methodenreferenzen, Lambdas, Optional, Stream-API
    • Records, Sealed Classes, Pattern Matching
  3. Versionierung mit Git
  4. Softwarequalität
    • Testen mit JUnit und Mockito
    • Coding Conventions & Smells, Refactoring
  5. Entwurfsmuster
    • Observer, Visitor, Template-Method, Command
  6. Tooling und Bauen von Software
    • Packages
    • Logging, Debugging
    • Gradle, Docker, Continuous Integration (GitHub Workflows)

Team

  • Carsten Gips (Sprechstunde nach Vereinbarung)
  • Alesia Herbertz (Tutorin)

Kursformat

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).

Fahrplan

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

Prüfungsform, Note und Credits

(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:

    1. Zusammenfassung: Was wurde gemacht?
    2. Details: Kurze Beschreibung besonders interessanter Aspekte.
    3. Reflexion: Was war der schwierigste Teil? Wie haben Sie dieses Problem gelöst?
    4. Reflexion: Was haben Sie gelernt oder (besser) verstanden?
    5. 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. :::

Materialien

Literatur

  1. "Learn Java". Oracle Corporation, 2026.
  2. "Pro Git (Second Edition)". Chacon, S. und Straub, B., Apress, 2014. ISBN 978-1-4842-0077-3.
  3. "Java ist auch eine Insel". Ullenboom, C., Rheinwerk-Verlag, 2021. ISBN 978-3-8362-8745-6.
  4. "The Java Tutorials". Oracle Corporation, 2024.

Tools

Förderungen und Kooperationen

Förderung durch DH.NRW (Digi Fellowships)

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).

Kooperation mit dem DigikoS-Projekt

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.


LICENSE

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.