Nebenläufige Programmierung Holger Hermanns

News

29.06.2020

Fahrplan Projekt

Liebe Studierende,

morgen beginnt die Projekt-Phase mit Veröffentlichung der Projektbeschreibung um 11:13 Uhr. Zusätzlich werden wir dann ein Video hochladen, in dem das Projekt genauer vorgestellt wird.

Weiterhin bieten wir am Mittwoch um 13:45 Uhr eine... Weiterlesen

Liebe Studierende,

morgen beginnt die Projekt-Phase mit Veröffentlichung der Projektbeschreibung um 11:13 Uhr. Zusätzlich werden wir dann ein Video hochladen, in dem das Projekt genauer vorgestellt wird.

Weiterhin bieten wir am Mittwoch um 13:45 Uhr eine “Assistance Hour” an. Dort können Sie Verständnisfragen zur Projektbeschreibung sowie organisatorische Fragen zum Projekt stellen.

Sie müssen sich bis spätestens Montag, 06.07.2020 um 23:59 Uhr für das Projekt anmelden. Details dazu finden Sie in der Projektbeschreibung.

Weitere Fragen zum Projekt können Sie jederzeit in der entsprechenden Kategorie im Forum stellen.

Viele Grüße
das Team der Nebenläufigen Programmierung

12.06.2020

Erinnerung an die Evaluation

Liebe Studierende,

vielen Dank für die zahlreichen bereits abgesendeten Evaluations-Fragebögen. Diese sind für uns eine wertvolle Hilfe bei der Verbesserung unserer Vorlesung.

Wir möchten alle, die die Vorlesung noch nicht evaluiert haben, bitten, dies noch... Weiterlesen

Liebe Studierende,

vielen Dank für die zahlreichen bereits abgesendeten Evaluations-Fragebögen. Diese sind für uns eine wertvolle Hilfe bei der Verbesserung unserer Vorlesung.

Wir möchten alle, die die Vorlesung noch nicht evaluiert haben, bitten, dies noch bis heute 23:59 nachzuholen.
Sie finden den personalisierten Link zur Umfrage in einer E-Mail, die Sie am Montag von uns erhalten haben. Sollte diese E-Mail verloren gegangen sein oder Sie nicht erreicht haben, wenden Sie sich bitte im Forum an uns.

Viele Grüße
das Team der Nebenläufigen Programmierung

02.06.2020

(Beispiel-)Klausur T

Liebe Studierende,

ursprünglich war für diesen Freitag die Klausur T geplant, um damit das erste Teilmodul abzuschließen.

Damit Sie dennoch die Möglichkeit haben, Ihre Kenntnisse der theoretischen Vorlesungsinhalte zu testen, haben wir uns entschlossen Ihnen... Weiterlesen

Liebe Studierende,

ursprünglich war für diesen Freitag die Klausur T geplant, um damit das erste Teilmodul abzuschließen.

Damit Sie dennoch die Möglichkeit haben, Ihre Kenntnisse der theoretischen Vorlesungsinhalte zu testen, haben wir uns entschlossen Ihnen an jenem Freitag ab 10:15 Uhr eine echte Klausur zur selbstständigen Lernkontrolle zur Verfügung zu stellen.

Die Bearbeitung ist freiwillig, wird von uns jedoch sehr empfohlen. Details dazu finden Sie hier im Forum.

Außerdem finden Sie am gewohnten Ort nun ein frisches Video, welches unsere Reise durch das Modulelement T kurz Revue passieren lässt.

Viele Grüße
das Team der Nebenläufigen Programmierung

20.05.2020

Termin der Klausur T

Liebe Studierende,

es steht nun definitiv fest, dass die aktuellen Regeln und Empfehlungen der Universität es unmöglich machen, die Klausur T im Juni stattfinden zu lassen. Wir gehen davon aus, dass diese Klausur zusammen mit der Klausur A am 6. August... Weiterlesen

Liebe Studierende,

es steht nun definitiv fest, dass die aktuellen Regeln und Empfehlungen der Universität es unmöglich machen, die Klausur T im Juni stattfinden zu lassen. Wir gehen davon aus, dass diese Klausur zusammen mit der Klausur A am 6. August stattfinden können wird.

Viele Grüße
das Team der Nebenläufigen Programmierung

 

Dies ist eine Pflichtvorlesung im Bachelor Informatik an der Universität des Saarlandes.

Sie wurde ausgezeichnet mit dem Preis des Fakultätentages Informatik 2013 sowie mehrfach mit dem Busy Beaver Award für exzellente Lehre in 2011, 2017 und 2019.


Nebenläufige Programmierung

Multi-Cores und andere parallele Architekturen (zum Beispiel Graphikprozessoren) finden sich auf jedem Schreibtisch. Solche Systeme effizient programmieren zu können, ist eine große Herausforderung.

Leider ist das Programmieren von solchen nebenläufigen Systemen extrem schwierig. Dies hat fundamentale und praktische Gründe.

Ziel dieser Vorlesung ist, die Studierenden mit der Theorie und Praxis des nebenläufigen Programmierens vertraut zu machen. Eine große Aufgabe, ohne Frage.


Publikum

Diese Vorlesung richtet sich in erster Linie an Studierende im Bachelor Informatik. Sie ist für diese ein Pflichtmodul, und ist laut Studienplan im 4. Fachsemester angesiedelt, kann jedoch bereits ab dem 2. Semester belegt werden. Einzige Vorraussetzung ist die erfolgreiche Teilnahme an der Vorlesung Programmierung 1.


Ablauf

Das Modul beginnt am 4. Mai 2020. Wir rechnen nicht damit, dass bis auf weiteres Präsenzveranstaltungen möglich sein werden. Daher setzen wir in diesem Jahr auf eine Mischung aus vorproduzierten Videos, schriftlichen Materialien und Online-Live-Veranstaltungen. Details dazu kündigen wir jeweils rechtzeitig per News an. Bitte registrieren Sie sich schnellstmöglich hier zur Vorlesung, damit Sie per E-Mail benachrichtigt werden können.

Im Regelfall behandeln wir in jeder Woche Inhalte, die in etwa dem Material zweier 90-minütiger Vorlesungen entsprechen. Falls wir es für sinnvoll erachten sollten, Inhalte des Moduls in einer Online-Live-Veranstaltung zu besprechen, werden wir diese zu den Zeiten Montags 14:15–16:00 bzw. Dienstags 10:15–12:00 planen (um Planungssicherheit zu geben und Kollisionen mit anderen Veranstaltungen zu minimieren.) Es werden allerdings alle Inhalte mindestens in Form eines Videos und eines Skriptes bereitgestellt, so dass Sie sich alle Inhalte des Moduls zeitlich unabhängig von Online-Live-Veranstaltungen werden erarbeiten können.

Die Tutoren werden Sie in diesem Jahr online betreuen. Details dazu geben wir mit Beginn der Veranstaltung bekannt. Bitte reservieren Sie, falls möglich, dafür Mittwoch einen der Blöcke 8:15–10:00 oder 10:15–12:00. Zu jeder Zeit erhalten Sie Hilfe in unserem Forum.

Alle festen Termine finden Sie auch jederzeit in unserem Kalender.


Vorab-Angebote

Im April bieten wir Ihnen vorab einige Online-Angebote an, um die Zeit bis Anfang Mai zu nutzen. Sie finden weitere Details in dieser News.


Präsenzprüfungen

Die Vorlesung Nebenläufige Programmierung ist in 2 inhaltliche Blöcke aufgeteilt, Theorie (𝓣) und Anwendung (𝓐), die im Regelfall jeweils vier Wochen umspannen. Daran schließt sich ein praktisches Programmierprojekt (𝓟) an, welches erfolgreich zu absolvieren ist. Für die Blöcke 𝓣 und 𝓐 ist jeweils eine einstündige Präsenzprüfung in Form einer schriftlichen Klausur vorgesehen. Im Regelfall wird die Präsenzprüfung 𝓣 abgelegt, nachdem in etwa die erste Hälfte des Inhaltes behandelt wurde, und die Präsenzprüfung 𝓐 nach Ende der Vorlesungszeit.

In der gegenwärtigen Situation können wir jedoch diese Präsenzprüfungen noch nicht terminieren. Dies geschieht, sobald eine sichere Planung möglich ist, jedoch mindestens 3 Wochen vor dem anzuberaumenden Termin. Wir werden Sie entsprechend informieren. Es ist aktuell nicht ausgeschlossen, dass beide Präsenzprüfungen erst nach Ende der Vorlesungszeit abgelegt werden können. Wir müssen uns auch die Möglichkeit offen lassen, beide Prüfungen an einem Tag stattfinden zu lassen.

Sofern dies uns möglich sein sollte, werden wir Ihnen auch eine Möglichkeit zur Verfügung stellen, noch im Sommersemester eine Wiederholung der obigen Präsenzprüfungen zu absolvieren. Details dazu erhalten Sie ebenfalls, sobald wir dies planen können.


Registrierung

Die Registrierung für den Kurs ist unter Anmeldung möglich. Bitte registrieren Sie sich dort schnellstmöglich, spätestens jedoch bis zum 4. Mai 2020.


Literatur

Zu den Vorlesungsmaterialien, die den Teilnehmern zur Verfügung gestellt werden, gehört ein Skript, welches den Inhalt der Vorlesung umfassend darstellt. Weiterführende Literatur findet sich hier.


Inhalt

  • 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 Ausschluss
    • Verklemmung (Deadlock)
    • gegenseitige Blockaden (Livelock)
    • Verhungern (Starvation)
  • Grundlagen der Nebenläufigkeit
    • Sequentielle 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
    • 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
  • Analyse und Programmierunterstützung
    • Erkennung von Verklemmungen
    • Zusicherung von Sicherheit und Lebendigkeit
    • Model-Basiertes Design von Nebenläufigkeit
    • Software-Architekturen für Nebenläufigkeit


Datenschutz | Impressum
Bei technischen Problemen wenden Sie sich bitte an die Administratoren.