Lehrveranstaltungen

Einführung in die Softwareentwicklung - Digitale Methodik

Dozent:innen: Univ.-Prof. Dr. Michael Wand
Kurzname: 08.079.015-DM
Kurs-Nr.: 08.079.015-DM
Kurstyp: Vorlesung/Übung
Format: online

Voraussetzungen / Organisatorisches

Voraussetzung: Einführung in die Programmierung
 

Digitale Lehre

Die Veranstaltung wird auch im Sommersemester 2021 vollständig in digitaler Form angeboten werden. Es liegen hierzu vorproduzierte Vorlesungsvideos bereit, die durch ein Tutorium und Übungen in Kleingruppen unterstützt werden, die mit Audio-/Videokonferenzwerkzeugen realisiert werden. Sollte sich die Situation deutlich verändern, ist eine Mischung von digitalen und Präsenzveranstaltungen im Übungsbereich denkbar.

Wichtig - Einstiegspunkt: Weitere Details (Zugang zu den Videos, Übungsaufgaben, Diskussionsforen, Video-/Audio-Konferenztools sowie weitere Instruktionen) werden über die Webseite

luna.informatik.uni-mainz.de/eis21

bekannt gegeben. Diese Webseite geht erst einige Tage vor Beginn der Veranstaltung online. Bei wichtigen Änderungen erfolgt eine Nachricht überJogustine-Mail (Message Center). Achten Sie daher darauf, dass Sie die entsprechenden Benachrichtigungen 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 2021 nochmal ein weiteres mal im bisherigen Format (mit C++ als Übungssprache) statt.
 

Termine

Datum (Wochentag) Zeit Ort
12.04.2021 (Montag) 14:00 - 16:00
19.04.2021 (Montag) 14:00 - 16:00
26.04.2021 (Montag) 14:00 - 16:00
03.05.2021 (Montag) 14:00 - 16:00
10.05.2021 (Montag) 14:00 - 16:00
17.05.2021 (Montag) 14:00 - 16:00
31.05.2021 (Montag) 14:00 - 16:00
07.06.2021 (Montag) 14:00 - 16:00
14.06.2021 (Montag) 14:00 - 16:00
21.06.2021 (Montag) 14:00 - 16:00
28.06.2021 (Montag) 14:00 - 16:00
05.07.2021 (Montag) 14:00 - 16:00
12.07.2021 (Montag) 14:00 - 16:00