Letztes Semester

Einführung in die Softwareentwicklung

Dozent:innen: David Hartmann; Univ.-Prof. Dr. Michael Wand
Kurzname: Einf. Softwareentw.
Kurs-Nr.: 08.079.015
Kurstyp: Vorlesung/Übung

Voraussetzungen / Organisatorisches

Benötigte Vorkenntnisse: Einführung in die Programmierung

Digitale Lehre

Die Veranstaltung wird im Sommersemester 2020 digitalen Format angeboten. Geplant sind vorab aufgezeichnete Videos anstelle der Vorlesung, ein zentrales Tutorium zur Vor- und Nachbereitung der Übungsaufgaben sowie individuelle Unterstützung beim Lösen der Aufgaben.
Die genauen Details (Zugangsdaten zu den Videos, Übungsaufgaben, weitere Instruktionen) werden im "JGU-Reader" (https://reader.uni-mainz.de/) veröffentlicht. Die Informationen werden vor Semesterbeginn (spätestens am Freitag, den 17.04.2020) im Reader (im Abschnitt "Einführung in die Softwareentwicklung") veröffentlicht und es wird eine Reader-Rundmail gesendet. Aus dem Reader werden Links auf die weiteren Informationen in anderen Systemen gesetzt - nutzen Sie daher im Zweifelsfall stets die Readerseite als Einstiegpunkt, und achten Sie darauf, dass Sie Benachrichtigungen aus dem Reader auf Ihren Email-Account aktiviert haben und den Empfang dieser Nachrichten regelmäßig überprüfen.
 

Empfohlene Literatur

Heide Balzert Lehrbuch der Objektmodellierung, Analyse und Entwurf mit der UML 2, 2. Auflage, München 2005
Ulrich Breymann: C++: eine Einführung, Hanser, 2016.
Scott Meyesr: Effective C++: 55 Specific Ways to Improve Your Programs and Designs, Addison-Wesley 2005 (für Fortgeschrittene).
Bjarne Stroustrup: The C++ Programming Language, Pearson 2013 (sehr komplex; eher als Referenz).
Robert Sedgewick, Kevin Wayne, Robert Dondero: Introduction to Programming in Python: An Interdisciplinary Approach, Addison-Wesley, 2015.

Inhalt

Die Veranstaltung EiS hat zwei Schwerpunkte: Zum einen werden allgemeine Programmiertechniken vertieft, in Ergänzung zur vorherigen Veranstaltung EiP (Einführung in die Programmierung). Zum zweiten wird der Entwurf komplexerer Softwaresysteme behandelt.

In der Vertiefung wird vor allem die Programmierung mit statisch typisierten "low-level" Sprachen, hier am Beispiel von C++, behandelt (in EiP wurden mit Python eine dynamisch typisierte "high-level" Sprache eingeführt). Hinzu kommt die Diskussion von Modularisierung, I/O, Bibliotheken für Containertypen, graphische Benutzerschnittstellen und nebenläufiger Programmierung.

Zum zweiten Aspekt: Komplexe Softwaresysteme erfordern zusätzlich zur Implementationsarbeit auch eine tiefgreifendere Analyse der Anforderungen und aufwendigere Strukturierung der Softwaresysteme ("Architektur").
Diese Vorlesung führt in die Grundlagen der Entwicklung komplexerer Systeme ein mit Fokus auf dem Architektur-Aspekt: Wie kann ich "nicht-triviale" Systeme so strukturieren, dass man nicht die Übersicht verliert und damit Funktion, Erweiterbarkeit und Wartbarkeit gewährleistet werden können. Die Vorlesung betrachtet hier vor allem Methoden des objektorientierten Entwurfs. Hierzu wird sowohl die Programmiersprache Python wie auch C++ betrachtet, die beide objektorientierte Programmierung (mit leicht unterschiedlicher Philosophie) unterstützen. Darüber hinaus werden auch alternative Techniken, insbesondere (als Base-line) der rein prozedurale und funktionale Ansätze diskutiert und die Stärken und Schwächen für verschiedene Anwendungsszenarien illustriert. Die Veranstaltung ist dabei bewußt praxisorientiert konzipiert: Anstelle generischer Taxonomien werden Entwurfs- und Architekturmuster möglichst an konkreten Beispielen illustriert. Auch der Einsatz von Diagramsprachen zur Architekturvisualisierung (UML), Ideen für Entwicklungsprozessse und Tools zur Versionsverwaltung (SVN/GIT/HG) werden angesprochen. Ziel ist aber, die Teilnehmenden möglichst schnell zu einem eigenen Entwurf und Implementation größerer Systeme zu führen; entsprechend spielen umfangreiche praktische Übungen eine große Rolle.

Bemerkung: Die Veranstaltung findet auch im Sommersemester 2020 nochmals im bisherigen Format (mit C++ als Übungssprache) statt.

Termine

Datum (Wochentag) Zeit Ort
20.04.2020 (Montag) 14:00 - 16:00 01 422 HS 19
1321 - Naturwissenschaftlich-Medizinischer Bau
27.04.2020 (Montag) 14:00 - 16:00 01 422 HS 19
1321 - Naturwissenschaftlich-Medizinischer Bau
04.05.2020 (Montag) 14:00 - 16:00 01 422 HS 19
1321 - Naturwissenschaftlich-Medizinischer Bau
11.05.2020 (Montag) 14:00 - 16:00 01 422 HS 19
1321 - Naturwissenschaftlich-Medizinischer Bau
18.05.2020 (Montag) 14:00 - 16:00 01 422 HS 19
1321 - Naturwissenschaftlich-Medizinischer Bau
25.05.2020 (Montag) 14:00 - 16:00 01 422 HS 19
1321 - Naturwissenschaftlich-Medizinischer Bau
08.06.2020 (Montag) 14:00 - 16:00 01 422 HS 19
1321 - Naturwissenschaftlich-Medizinischer Bau
15.06.2020 (Montag) 14:00 - 16:00 01 422 HS 19
1321 - Naturwissenschaftlich-Medizinischer Bau
22.06.2020 (Montag) 14:00 - 16:00 01 422 HS 19
1321 - Naturwissenschaftlich-Medizinischer Bau
29.06.2020 (Montag) 14:00 - 16:00 01 422 HS 19
1321 - Naturwissenschaftlich-Medizinischer Bau
06.07.2020 (Montag) 14:00 - 16:00 01 422 HS 19
1321 - Naturwissenschaftlich-Medizinischer Bau