BIN201: Weiterführende Programmentwicklung
Lernpfad: Software-Entwicklung
BIN201: Weiterführende Programmentwicklung
Prof. Dr. Michael Gref
Prof. Dr. Michael Gref
Bachelor Informatik
Informatik
Deutsch
Sommersemester
1 Semester
5 ECTS
Deutsche Notenskala 1-5
2 V | 1 Ü | 1 P | - S
Advanced Program Development
- BIN004: Einführung in die Programmierung: strukturierte Programmierung, Funktionen, elementare Datenstrukturen, Klassen, Versionsverwaltung.
- BIN006: Systemhardware: Speicherorganisation, Zeiger.
WAS
Mit erfolgreichem Abschluss des Moduls sind die Studierenden in der Lage, aus gegebenen, auch unvollständigen Problemstellungen nichttriviale Anwendungen in einer kompilierten und streng typisierten Programmiersprache qualitätsorientiert zu entwerfen, zu realisieren, zu testen und begründet weiterzuentwickeln.
WOMIT
Die Studierenden erreichen dieses Lernergebnis, indem sie
- funktionale und technische Anforderungen in umsetzbare Teilschritte und geeignete Klassen-, Objekt- und Schnittstellenstrukturen mit UML überführen,
- objektorientierte Konzepte wie Kapselung, Konstruktion und Zerstörung von Objekten, Klassenbeziehungen, Vererbung und Polymorphie problemangemessen anwenden,
- Datenstrukturen, generische Konzepte sowie Bibliothekskomponenten wie Container und Algorithmen auswählen und effizient einsetzen,
- Wert-, Referenz- und Zeigersemantik, Objektlebensdauer sowie Ressourcenverwaltung sicher handhaben und Ein- und Ausgaben, Fehler- und Ausnahmesituationen, Datenvalidierung und defensive Programmierung angemessen gestalten,
- Entwurfsmuster für wiederkehrende Entwurfsprobleme auswählen und begründen sowie eigene, gegebene oder automatisiert erzeugte Codeartefakte analysieren, testen, korrigieren und erweitern,
- Unit-Tests entwickeln, Qualitätsindikatoren auswerten, automatisierte Build- und Testabläufe nutzen und wesentliche Annahmen dokumentieren.
WOZU
Die Studierenden nutzen diese Kompetenzen, um in nachfolgenden Entwicklungsmodulen und in Softwareprojekten nachvollziehbare, qualitätsgesicherte und langfristig weiterentwickelbare Softwarebeiträge leisten zu können. Das Modul bildet damit eine Grundlage für DevOps, Web-Engineering, Software Engineering und größere teamorientierte Entwicklungsaufgaben.
- Anforderungen, Annahmen, Abgrenzungen und technische Entwurfsentscheidungen aus Problembeschreibungen ableiten
- Kompilierte, streng typisierte Programmiersprachen: Übersetzungsprozess, Typsystem, Namensräume sowie Wert- und Referenzsemantik
- Objektorientierte Programmierung mit Klassen und Objekten, Kapselung, Konstruktion und Zerstörung, Klassenbeziehungen, Delegation, Vererbung, Polymorphie und UML-Klassendiagrammen
- Ressourcen- und Speicherverwaltung, Objektlebensdauer, Ownership-Konzepte und sprachliche Abstraktionen
- Datei- und Konsolenein- und -ausgabe sowie Fehler-, Ausnahme- und defensive Behandlung von Eingaben und typischen Fehlerquellen
- Generische Programmierung und Bibliothekskomponenten, insbesondere Container, Iteratoren und Algorithmen
- Ausgewählte Entwurfsmuster aus den Kategorien Erzeugung, Struktur und Verhalten
- Testen, Testfallgestaltung, Testabdeckung und Qualitätsindikatoren; Lesen, Bewerten, Refactoring und Erweiterung von Code sowie automatisierte Build- und Testabläufe
Erfolgreiche Bearbeitung semesterbegleitender Übungs- und Praktikumsaufgaben. Die Prüfungsvorleistung kann Programmierabgaben, Tests, kurze Dokumentationen, Code-Walkthroughs oder die Erläuterung eigener beziehungsweise gegebener Lösungen beinhalten.
Computergestützte Klausurarbeit (120 Minuten). Das Prüfungskonzept umfasst Aufgaben zur Analyse, Fehlersuche, Bewertung, Erweiterung und Implementierung von Programmen.
- Stroustrup, B.: A Tour of C++. 3. Auflage, Addison-Wesley, 2022.
- Lippman, S. B.; Lajoie, J.; Moo, B. E.: C++ Primer. 5. Auflage, Addison-Wesley, 2012.
- Meyers, S.: Effective Modern C++. O’Reilly, 2014.
- Gamma, E.; Helm, R.; Johnson, R.; Vlissides, J.: Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley, 1994.
- Fowler, M.: Refactoring: Improving the Design of Existing Code. 2. Auflage, Addison-Wesley, 2018.
- C++ Core Guidelines: C++ Core Guidelines. https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines.