IFM 2.1: Programmieren 2 (PO23, Sommer 2024)

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

-- 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
    • Funktionale Programmierung: Default-Methoden, Funktionsinterfaces, Methodenreferenzen, Lambdas, Stream-API
    • Generische Programmierung: Generics
    • Parallele Programmierung: Threads
    • Reguläre Ausdrücke, Annotationen, Reflection
    • CLI, Konfiguration, fremde APIs nutzen
    • Graphische Oberflächen mit Swing
  2. Fortgeschrittenes OO-Design
    • Entwurfsmuster: Strategy, Template-Method, Factory-Method, Singleton, Observer, Visitor, Command, ...
  3. Programmiermethoden
    • Versionskontrolle: Git
    • Testen, Coding Conventions, Refactoring
    • Logging, Build-Tools, CI

(durchgestrichene Themen nicht im Sommersemester 2024)

Team

  • Carsten Gips (Sprechstunde nach Vereinbarung)
  • Tutoren (siehe ILIAS-Mitgliederliste)

Kursformat

Vorlesung (2 SWS)

Mi, 08:00 - 09:30 Uhr (online)

Durchführung als Flipped Classroom.

Praktikum (2 SWS)

Praktikumsgruppe Zeit Raum
Gruppe 1 Mi, 11:30 - 13:00 Uhr online
Gruppe 2 Mi, 09:45 - 11:15 Uhr D320
Gruppe 3 Mi, 09:45 - 11:15 Uhr online
Gruppe 4 Mi, 11:30 - 13:00 Uhr D320

Praktika Gruppen 2 und 4 in Präsenz.

Online-Sitzungen per Zoom (Zugangsdaten siehe ILIAS). Sie können hierzu den Raum J104 nutzen.

Prüfungsform, Note und Credits

Parcoursprüfung, 5 ECTS (PO23)

  • Stationen:
    • Praktikum: 10x Übungsblätter mit jeweils 1P (Einzelbearbeitung, mindestens 60% bearbeitet, fristgerechte Abgabe der Lösungen im ILIAS, Vorstellung der Lösungen im Praktikum => Punkte)
    • Schriftliche Prüfung (digitale Klausur) mit 100P; Prüfungsvorbereitung
  • Gesamtnote: 4.0: ab 50P, alle 5P nächste Teilnote, 1.0: ab 95P
  • Stationen:
  • Gesamtnote: 4.0: ab 50P, alle 5P nächste Teilnote, 1.0: ab 95P

Materialien

Literatur

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

Tools

Fahrplan

News

Die nächste Klausur für "Programmieren 2" (IFM 2.1, PO23) wird am Mittwoch, 02. Oktober 2024 angeboten. Die Klausur wird als digitale Klausur auf dem Prüfungs-ILIAS der HSBI in Präsenz vor Ort in Minden im Raum B40 durchgeführt. Die Prüfung beginnt um 08:00 Uhr und dauert 90 Minuten. Ein DIN-A4-Zettel ist als Hilfsmittel zugelassen. Der geprüfte Stoff bezieht sich auf den zuletzt durchgeführten Kurs (Sommer 2024). Weitere Informationen siehe Prüfungsvorbereitung.

Hier finden Sie einen abonnierbaren Google Kalender mit allen Terminen der Veranstaltung zum Einbinden in Ihre Kalender-App.

Bitte geben Sie uns Feedback: Nehmen Sie bitte an der anonymen Umfrage zu "Programmieren 2" teil.

Monat Tag Vorlesung Praktikum
April 17. Orga (Zoom), FAQ
24. Generics: Klassen und Methoden, Bounds und Wildcards, Type Erasure, Polymorphie; Gradle B01
Mai 01. Mai-Feiertag Mai-Feiertag
08. Einführung Versionierung, Git Basics; Lambda-Ausdrücke; Javadoc B02
15. Dienstbesprechung B03
22. Git-Branches, Branching-Strategien; Methodenreferenzen; Logging B04
29. Git-Remotes, Git-Workflows; Stream-API; Record-Klassen; Intro Dungeon B05
Juni 05. Einführung Testen, JUnit-Basics; Optional; Visitor-Pattern B06
12. Testfallermittlung, Mocking; Default-Methoden; Observer-Pattern; Serialisierung B07
19. Code-Smells, Coding-Rules, Refactoring; Continuous Integration (CI) B08
26. RegExp; Template-Method-Pattern, Command-Pattern; Enumerationen B09
Juli 03. Intro Threads, Synchronisierung, Highlevel Threadkonzepte; Konfiguration B10
10. Rückblick (Zoom), Prüfungsvorbereitung
tbd Klausur (Campus Minden, B40)

Abgabe der Übungsblätter jeweils bis 08:00 Uhr im ILIAS.

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