BIN304: Verteilte und parallele Programmierung

Lernpfad Informatisches Denken und Konzepte

BIN304: Verteilte und parallele Programmierung

Kurzporträt BIN304: Verteilte und parallele Programmierung
Worum geht es? Das Modul behandelt Programme, die mehrere Dinge gleichzeitig oder verteilt auf mehrere Systeme ausführen. Die Studierenden lernen Konzepte für Nebenläufigkeit, Parallelität, Synchronisation, Nachrichtenkommunikation und verteilte Ausführung kennen. Dabei werden sowohl technische Umsetzung als auch Laufzeit, Skalierbarkeit und typische Fehler betrachtet.
Wofür braucht man es? Moderne Software läuft häufig auf Mehrkernsystemen, Serverclustern oder verteilten Plattformen. Wer parallele und verteilte Programme entwerfen kann, versteht besser, wie leistungsfähige, robuste und skalierbare Systeme entstehen. Die Kompetenzen sind wichtig für Systementwicklung, Cloud-Anwendungen, datenintensive Verarbeitung und technische Architekturentscheidungen.
Wieso ist es interessant? Gleichzeitige Ausführung eröffnet große Leistungsgewinne, bringt aber auch schwer sichtbare Fehler wie Race Conditions und Deadlocks mit sich. Das Modul zeigt, warum verteilte und parallele Systeme anders gedacht werden müssen als einfache sequentielle Programme. Dadurch wird nachvollziehbar, wie anspruchsvoll moderne Softwarearchitekturen tatsächlich sind.
Modulverantwortung

Prof. Dr. Thomas Nitsche

Lehrperson(en)
  • Prof. Dr. Thomas Nitsche
  • Prof. Dr. Regina Pohle-Fröhlich
Verwendbarkeit

Bachelor Informatik

Fächergruppe

Informatik

Modultyp
Pflicht
Sprache

Deutsch

Angebot

Sommersemester

Dauer

1 Semester

Credits

5 ECTS

Benotung

Deutsche Notenskala 1-5

SWS

2 V | 1 Ü | 1 P | - S

Workload
Präsenzstudium: 45 Std. Selbststudium: 90 Std.
Engl. Titel

Distributed and Parallel Programming

Empfohlene Voraussetzungen
  • BIN004: Einführung in die Programmierung: Kontrollstrukturen, Funktionen, Fehleranalyse.
  • BIN005: Systemsoftware: Prozesse, Threads, Speicher, Betriebssystemgrundlagen.
  • BIN007: Datennetze: Protokolle, Schichtenmodelle, Socket-Grundlagen.
Lernergebnisse / Kompetenzen
WAS

Mit erfolgreichem Abschluss des Moduls sind die Studierenden in der Lage, Lösungen für nebenläufige, parallele und verteilte Probleme begründet zu entwickeln und hinsichtlich Synchronisation, Kommunikation, Laufzeit und Skalierbarkeit zu bewerten.

WOMIT

Die Studierenden erreichen dieses Lernergebnis, indem sie

  • Problemstellungen in nebenläufige, parallel ausführbare oder verteilbare Teilaufgaben zerlegen,
  • Abhängigkeiten, kritische Abschnitte und gemeinsame Ressourcen identifizieren,
  • geeignete Synchronisationsverfahren auswählen und einsetzen,
  • Kommunikations- und Koordinationsmechanismen für verteilte Programme verwenden,
  • einfache Programme oder Mini-Projekte für Shared-Memory-, Message-Passing- und verteilte Szenarien realisieren,
  • typische Effekte wie Race Conditions, Deadlocks, Latenz, Kommunikationsaufwand und Skalierbarkeit untersuchen,
  • Laufzeit, Speedup, Effizienz und Ressourcenbedarf von Programmen und Algorithmen analytisch abschätzen,
  • Architekturen und Programmiermodelle anhand fachlicher Anforderungen vergleichen.
WOZU

Die Studierenden nutzen diese Kompetenzen, um Architekturentscheidungen für leistungsfähige, skalierbare oder robuste Softwaresysteme fachlich begründen zu können. Dies ist besonders relevant für moderne Mehrkernsysteme, verteilte Anwendungen, Serverarchitekturen und datenintensive Verarbeitung.

Inhalte
  • Grundbegriffe von Nebenläufigkeit, Parallelität und Verteilung
  • Threads und Prozesse in Abgrenzung
  • Shared Memory, Message Passing, SISD, SIMD und MIMD
  • Laufzeit, Speedup, Effizienz und Ressourcenbedarf
  • Zerlegung von Problemstellungen und Datenaufteilung
  • Abhängigkeiten, Kommunikationsbedarf und Koordinationsbedarf
  • Thread-basierte Ausführung, kritische Abschnitte, Semaphore und Locks
  • Race Conditions und Deadlocks
  • Nachrichtenbasierte Kommunikation und typische MPI-Programmiermuster
  • Client-Server-Modell, Socket-Kommunikation, Peer-to-Peer und Protokollabläufe
  • Latenz, Ausfallszenarien, Skalierungsgrenzen und Kommunikationsaufwand
  • Vergleich paralleler und verteilter Architekturen anhand fachlicher Anforderungen
Prüfungsvorleistung

Bestehen des Praktikums.

Prüfungsleistung

Computergestützte Klausurarbeit (120 Minuten). Das Prüfungskonzept sieht die Bearbeitung am Rechner unter Aufsicht vor.

Literatur
  • Andrew S. Tanenbaum; Herbert Bos: Moderne Betriebssysteme. 5. Auflage, Pearson, 2025.
  • Christoph Braun: Betriebssysteme kompakt. Springer Vieweg, 2025.
  • Andrew S. Tanenbaum; Maarten van Steen: Distributed Systems. 4. Auflage, Pearson, 2023.
  • Peter S. Pacheco: An Introduction to Parallel Programming. 2. Auflage, Morgan Kaufmann, 2021.