|
Modulbezeichnung (engl.):
Programming 3 |
|
Code: PIB-PR3 |
|
2V+2P (4 Semesterwochenstunden) |
5 |
Studiensemester: 3 |
Pflichtfach: ja |
Arbeitssprache:
Deutsch |
Studienleistungen (lt. Studienordnung/ASPO-Anlage):
Praktikum |
Prüfungsart:
Projektarbeit
[letzte Änderung 18.10.2016]
|
PIB-PR3 (P221-0033) Praktische Informatik, Bachelor, ASPO 01.10.2022
, 3. Semester, Pflichtfach
|
Die Präsenzzeit dieses Moduls umfasst bei 15 Semesterwochen 60 Veranstaltungsstunden (= 45 Zeitstunden). Der Gesamtumfang des Moduls beträgt bei 5 Creditpoints 150 Stunden (30 Std/ECTS). Daher stehen für die Vor- und Nachbereitung der Veranstaltung zusammen mit der Prüfungsvorbereitung 105 Stunden zur Verfügung.
|
Empfohlene Voraussetzungen (Module):
PIB-PR1 Programmierung 1 PIB-PR2 Programmierung 2
[letzte Änderung 13.10.2024]
|
Als Vorkenntnis empfohlen für Module:
PIB-ASE Automatisierte Softwareentwicklung PIB-SES Softwareentwicklung mit Spring PIB-WEB Grundlagen der Webentwicklung
[letzte Änderung 11.10.2024]
|
Modulverantwortung:
Prof. Dr.-Ing. Martin Burger |
Dozent/innen: Prof. Dr.-Ing. Martin Burger
[letzte Änderung 28.09.2016]
|
Lernziele:
- Die Studierenden implementieren moderne Programmierkonzepte, um die Effizienz und Lesbarkeit ihrer Software zu verbessern. - Die Studierenden wenden die Prinzipien des Clean Code an, um die Lesbarkeit und Wartbarkeit ihres Codes sicherzustellen. - Die Studierenden entwerfen objektorientierte Softwarelösungen unter Anwendung fortgeschrittener Techniken und Methoden, um skalierbare und wartbare Systeme zu realisieren. - Die Studierenden integrieren fortgeschrittene Bibliotheken und Frameworks in ihre Softwareprojekte, um deren Funktionalität zu erweitern. - Die Studierenden setzen Logging-Techniken ein, um Fehler in ihrer Software effizient zu identifizieren und zu beheben. - Die Studierenden implementieren Testautomatisierung und betten diese in Continuous Integration ein, um die Qualität und Stabilität ihrer Software kontinuierlich sicherzustellen. - Die Studierenden analysieren und refaktorisieren bestehende Software, um deren Struktur und Effizienz zu verbessern. - Die Studierenden bewerten die Qualität ihrer Software anhand vorgegebener Testmethoden und nehmen auf Basis der Ergebnisse Anpassungen vor. - Die Studierenden verwenden moderne Werkzeuge zur Codegenerierung und wenden KI-basierte Ansätze zur Programmierunterstützung an, um sich wiederholende Aufgaben zu automatisieren. - Die Studierenden lösen regelmäßig Programmieraufgaben, um ihre Fähigkeiten zur Problemlösung und zur effizienten Anwendung von Programmierkonzepten zu demonstrieren. - Die Studierenden planen und realisieren Projekte in Teams unter Anwendung agiler Praktiken, um komplexe Softwareprojekte zu managen.
[letzte Änderung 13.10.2024]
|
Inhalt:
Schwerpunkte sind die Anwendung fortgeschrittener Programmierkonzepte, die Verbesserung der Softwarequalität durch Refactoring sowie der Einsatz moderner Werkzeuge und Technologien in der Softwareentwicklung. Die folgenden Inhalte werden anhand der Programmiersprache Java und relevanter Werkzeuge vermittelt und durch praktische Übungen gefestigt: Fortgeschrittene objektorientierte Programmierung: - Java-Records und Pattern-Matching - Entwurfsmuster wie Singleton, Factory, Observer Clean Code und Softwarequalität: - Prinzipien von Clean Code, einschließlich Namenskonventionen, Kommentaren im Code, Methodenstruktur und einfachem Design Refactorings und Code-Verbesserungen: - Refactorings zur Verbesserung der Lesbarkeit und Wartbarkeit - Unterstützung durch IDEs (z.B. IntelliJ IDEA) Testautomatisierung und Continuous Integration: - Unit-Tests und Integrationstests mit JUnit - Continuous Integration mit Maven und GitLab/Github auf einem gemeinsamen Branch Bibliotheken und Frameworks: - Google Guava für erweiterte Funktionalitäten und Datenstrukturen - jOOQ für typsichere und fluent-style SQL-Abfragen Coding Katas und Programmierpuzzles: - Regelmäßige Coding Katas zur Vertiefung der Programmierkenntnisse - Java Challenges als Programmierrätsel Generierung des Programmcodes mit modernen Werkzeugen: - Codegenerierung zur Automatisierung wiederkehrender Aufgaben mit modernen IDEs - KI-gestützte Codegenerierung zur Erzeugung von Boilerplate Code (z.B. GitHub Copilot) Logging und Fehlerdiagnose: - Logging-Techniken und Frameworks zur Fehlerdiagnose (wie z.B. SLF4J und Logback) - Einsatz von Logging zur Diagnose und Überwachung in Produktivsystemen unter Berücksichtigung von Logging-Level und Performance-Aspekten Versionsverwaltung und kollaborative Entwicklung: - Git-Grundlagen: zentrale Konzepte, grundlegende Befehle, Workflow-Grundlagen - Gemeinsames Arbeiten an einem Branch in Verbindung mit Continuous Integration Projektarbeit: - Mehrwöchiges Teamprojekt, das die vermittelten Inhalte integriert und vertieft
[letzte Änderung 13.10.2024]
|
Weitere Lehrmethoden und Medien:
- Folien - Beamer - Tafel - vorlesungsspezifische Website
[letzte Änderung 13.10.2024]
|
Literatur:
- Bloch, J. (2017). Effective Java (3rd Edition). Addison-Wesley Professional - Farley, D. (2010). Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment Automation. Addison-Wesley Professional. - Farley, D. (2021). Modern Software Engineering: Doing What Works to Build Better Software Faster. Addison-Wesley Professional. - Freeman, E. (2021). Entwurfsmuster von Kopf bis Fuß. dpunkt. - Inden, M. (2020). Java Challenge. dpunkt. - Martin, R. C. (2008). Clean Code: A Handbook of Agile Software Craftsmanship. Pearson. - Siessegger, N. (2024). Git – kurz & gut. dpunkt. - Ullenboom, C. (2023). Java ist auch eine Insel: Einführung, Ausbildung, Praxis. Rheinwerk.
[letzte Änderung 13.10.2024]
|
Modul angeboten in Semester:
WS 2024/25,
WS 2023/24,
WS 2022/23,
WS 2021/22,
WS 2020/21,
...
|