Einführung in die Softwareentwicklung

Dozent:innen: Christian Heinrich Xhemal Ali Mehmeti-Göpel; 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

Übungsblätter und Vorlesungsfolien sind in LMS/Moodle verfügbar. Dort findet sich auch ein Link auf Vorlesungsvideos aus dem Vorjahr.

Inhalt

In dieser Veranstaltung bauen wir auf die erlenten Grundkenntnisse aus "Einführung in die Programmierung" auf und übertragen diese auf komplexere Softwaresysteme. Dabei steht die sinnvolle Zerlegung komplexer Software in Komponenten, Schnittstellen und Bibliotheken im Vordergrund. Dabei werden vor allem Ideen zum objektorientierten und funktionalen Entwurf von Systemen diskutiert und gegenübergestellt. Konkreter teilen sich die Themen ein in Programmiertechniken, die in "Einführung in die Progrmmierung" noch nicht oder nur am Rande angesprochen wurden, sowie Techniken für den Entwurf komplexerer Systeme, bei denen es stärker um die Organisation von Systemen geht.

Programmiertechniken

  1. Statische Typisierung
  2. Hardwarenahe Programmierung und Techniken für effiziente Abstraktionen,
  3. Funktionsvariablen und Funktionen höherer Ordnung,
  4. Bibliotheksfunktionen der Systemumgebung: Eingabe- / Ausgabe, Netzwerkzugriff
  5. Graphische Benutzerschnittstellen
  6. Programmiersprachen jenseits von Python (Scala, ggf. Beispiele von hardwarenahen Sprachen)


Softwareentwurf

  1. Modularisierung
  2. Objekte, Klassen und Schnittstellen
  3. Vererbung, abstrakte Klassen und dynamischer Dispatch
  4. Abstraktion und Geheimnisprinzip
  5. Generische Datentypen
  6. Visualisierung mit Hilfe von Diagrammen (z.B. Klassendiagramme)
  7. Einfache/grundlegende Entwurfs- und Architekturmuster


Die Konzepte werden dabei zunächst in der aus EIP bekannten Programmiersprache Python erklärt; zusätzlich wird Scala als Programmiersprache eingeführt, in der sich einige der Programmiertechniken eleganter umsetzen lassen. Hardwarenahe Programmiersprachen werden kurz am Rande diskutiert, wenn es um hardwarenahe Programmierung geht.

Zusätzliche Informationen

Weitere, aktualisierte Informationen finden Sie auf der WWW-Seite der Veranstaltung:

https://luna.informatik.uni-mainz.de/eis25/
 

Termine

Datum (Wochentag) Zeit Ort
15.04.2025 (Dienstag) 12:15 - 13:45 00 521 N 1
1342 - Naturwissenschaftliches Hörsaalgebäude
22.04.2025 (Dienstag) 12:15 - 13:45 00 521 N 1
1342 - Naturwissenschaftliches Hörsaalgebäude
29.04.2025 (Dienstag) 12:15 - 13:45 00 521 N 1
1342 - Naturwissenschaftliches Hörsaalgebäude
06.05.2025 (Dienstag) 12:15 - 13:45 00 521 N 1
1342 - Naturwissenschaftliches Hörsaalgebäude
13.05.2025 (Dienstag) 12:15 - 13:45 00 521 N 1
1342 - Naturwissenschaftliches Hörsaalgebäude
20.05.2025 (Dienstag) 12:15 - 13:45 00 521 N 1
1342 - Naturwissenschaftliches Hörsaalgebäude
27.05.2025 (Dienstag) 12:15 - 13:45 00 521 N 1
1342 - Naturwissenschaftliches Hörsaalgebäude
03.06.2025 (Dienstag) 12:15 - 13:45 00 521 N 1
1342 - Naturwissenschaftliches Hörsaalgebäude
10.06.2025 (Dienstag) 12:15 - 13:45 00 521 N 1
1342 - Naturwissenschaftliches Hörsaalgebäude
17.06.2025 (Dienstag) 12:15 - 13:45 00 521 N 1
1342 - Naturwissenschaftliches Hörsaalgebäude
24.06.2025 (Dienstag) 12:15 - 13:45 00 521 N 1
1342 - Naturwissenschaftliches Hörsaalgebäude
01.07.2025 (Dienstag) 12:15 - 13:45 00 521 N 1
1342 - Naturwissenschaftliches Hörsaalgebäude
08.07.2025 (Dienstag) 12:15 - 13:45 00 521 N 1
1342 - Naturwissenschaftliches Hörsaalgebäude
15.07.2025 (Dienstag) 12:15 - 13:45 00 521 N 1
1342 - Naturwissenschaftliches Hörsaalgebäude