Lehrveranstaltungen

Einführung in die Softwareentwicklung

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

Voraussetzungen / Organisatorisches

Benötigte Vorkenntnisse
Einführung in die Programmierung

Digitale Lehre

Die Veranstaltung wird voraussichtlich 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 auch eine Mischung von digitalen und Präsenzveranstaltungen denkbar.

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

https://luna.informatik.uni-mainz.de/eis-ws-20-21/

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.

Hinweis: In einer früheren Version dieser Beschreibung wurde der JGU-Reader als Einstiegspunkt benannt - dieser wird aber leider im WS20/21 nicht mehr zur Verfügung stehen. Daher wurde dieser Teil der Beschreibung am 16.07.2020 geändert.

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 Wintersemester 2020/21 nochmal ein weiteres mal im bisherigen Format (mit C++ als Übungssprache) statt.

Termine

Datum (Wochentag) Zeit Ort
02.11.2020 (Montag) 14:00 - 16:00
09.11.2020 (Montag) 14:00 - 16:00
16.11.2020 (Montag) 14:00 - 16:00
23.11.2020 (Montag) 14:00 - 16:00
30.11.2020 (Montag) 14:00 - 16:00
07.12.2020 (Montag) 14:00 - 16:00
14.12.2020 (Montag) 14:00 - 16:00
04.01.2021 (Montag) 14:00 - 16:00
11.01.2021 (Montag) 14:00 - 16:00
18.01.2021 (Montag) 14:00 - 16:00
25.01.2021 (Montag) 14:00 - 16:00
01.02.2021 (Montag) 14:00 - 16:00
08.02.2021 (Montag) 14:00 - 16:00