Internal Preview! The data shown below is not valid for students! Please refer to the official Module Descriptions at the Examination Office.
Nebenläufige Programmierung NP

General

study semester
4
standard study semester
6
cycle
jedes Sommersemester
duration
1 Semester
SWS
4
ECTS
6
teaching language
Englisch

People

responsible
Prof. Dr.-Ing. Holger Hermanns
lectures
Prof. Dr.-Ing. Holger Hermanns
Prof. Bernd Finkbeiner, Ph.D
Prof. Dr. Verena Wolf

Assessment & Grades

entrance requirements

Programmierung 1 und 2, Softwarepraktikum, und Grundzüge der Theoretischen Informatik (empfohlen)

assessment / exams

Zwei Klausuren (Mitte und Ende der Vorlesungszeit), praktisches Projekt.

Nachklausuren finden innerhalb der letzten Wochen vor dem Vorlesungsbeginn des Folgesemesters statt.

grade

Wird aus Leistungen in Klausuren (im Anschluss an die Elemente T und A), sowie den Prüfungsvorleistungen (Element P) ermittelt. Die genauen Modalitäten werden vom Modulverantwortlichen bekannt gegeben. Alle Modulelemente sind innerhalb eines Prüfungszeitraumes erfolgreich zu absolvieren.

Workload

course type /weekly hours

Element T – Theorie (2 SWS):
8 Vorlesungen: 6 Wochen
4 Übungen: 6 Wochen

Element A – Anwendung (2 SWS):
9 Vorlesungen: 6 Wochen
4 Übungen: 6 Wochen

Element P – Praxis (Eigenstudium):
Semesterbegleitend 8 schriftliche Reflektionen (Prüfungsvorleistungen),
anschließend Projektarbeit über ca. 2 Wochen

= 4 SWS

total workload

Element T:
24 h Präsenz, 36 h Selbststudium

Element A:
26 h Präsenz, 34 h Selbststudium

Element P:
60 h Selbststudium

   50 h Präsenzstudium
+ 130 h Eigenstudum
= 180 h (= 6 ECTS)

Aims / Competences to be developed

Die Teilnehmer lernen die Nebenläufigkeit von Berechnungen als ein weitreichendes, grundlegendes Prinzip in der Theorie und Anwendung der modernen Informatik kennen. Durch die Untersuchung und Verwendung unterschiedlicher formaler Modelle gewinnen die Teilnehmer ein vertieftes Verständnis von Nebenläufigkeit. Dabei lernen die Teilnehmer wichtige formale Konzepte der Informatik korrekt anzuwenden. Das im ersten Teil der Veranstaltung erworbene theoretische Wissen wird in der zweiten Hälfte in der (Programmier-)Praxis angewendet. Dabei lernen die Teilnehmer Verwendung der Programmierparadigmen „Shared Memory“ und „Message Passing“ zuerst gemeinsam in der Programmiersprache pseuCo, bevor sie dann diese Fähigkeiten auf Java und teilweise Go übertragen. Außerdem lernen die Teilnehmer verschiedene Phänomene des nebenläufigen Programmierens in den formalen Modellen zu beschreiben und mit deren Hilfe konkrete Lösungen für die Praxis abzuleiten. Des Weiteren untersuchen die Teilnehmer in der Praxis existierende Konzepte auf ihre Verlässlichkeit hin. Ein spezifischer Aspekt dieser beruflichen Praxis ist das taktisch adäquate Reagieren auf Problemstellungen der Nebenläufigkeit unter engen Zeitvorgaben.

Content

Nebenläufigkeit als Konzept

  • Potentieller Parallelismus
  • Tatsächlicher Parallelismus
  • Konzeptioneller Parallelismus

Nebenläufigkeit in der Praxis

  • Objektorientierung
  • Betriebssysteme
  • Multi-core Prozessoren, Coprozessoren
  • Programmierte Parallelität
  • Verteilte Systeme (Client-Server, Peer-to-Peer, Datenbanken, Internet)

Die Schwierigkeit von Nebenläufigkeit

  • Ressourcenkonflikte
  • Fairness
  • Gegenseitiger Auschluss
  • Verklemmung (Deadlock)
  • gegenseitige Blockaden (Livelock)
  • Verhungern (Starvation)

Grundlagen der Nebenläufigkeit

  • Sequentielle vs. Nebenläufige Prozesse
  • Zustände, Ereignisse und Transitionen
  • Transitionssysteme
  • Beobachtbares Verhalten
  • Determinismus vs. Nicht-Determinismus
  • Algebren und Operatoren

CCS: Der Kalkül kommunizierender Prozesse

  • Konstruktion von Prozessen: Sequenz, Auswahl, Rekursion
  • Nebenläufigkeit und Interaktion
  • Strukturelle operationelle Semantik
  • Gleichheit von Beobachtungen
  • Implementierungsrelationen
  • CCS mit Datentransfer

Programmieren von Nebenläufigkeit

  • pseuCo
  • Message Passing in pseuCo und Go
  • Shared Memory in pseuCo und Java
  • Monitore und Semaphoren
  • Shared Objects und Threads in Java
  • Shared Objects und Threads als Transitionssysteme

Programmier- und Analyseunterstützung

  • Erkennung von Verklemmungen
  • Zusicherung von Sicherheit und Lebendigkeit
  • Model-Basiertes Design von Nebenläufigkeit
  • Software Architekturen für Nebenläufigkeit

Literature & Reading

Bekanntgabe jeweils vor Beginn der Vorlesung auf der Vorlesungsseite im Internet.

Additional Information

Dieses Modul ist inhaltsgleich mit dem englischsprachigen Modul Concurrent Programming.

Curriculum

This module is part of the following study programmes:

Cybersicherheit BSc: Grundlagen der Informatik
study semester: 4 / standard study semester: 6
Informatik BSc: Grundlagen der Informatik
study semester: 4 / standard study semester: 6
Medieninformatik BSc: Grundlagen der Informatik
study semester: 4 / standard study semester: 6
Lehramtsstudienfach Informatik: Wahlpflichtbereich 2
study semester: / standard study semester: 5-7
Eingebettete Systeme BSc: Wahlpflichtbereich Informatik
study semester: / standard study semester: