Nebenläufige Programmierung Holger Hermanns

News

19.09.2017

Nachkorrektur Klausur A

Liebe Studierende,

wir haben die Nachkorrektur der aus der Einsichtnahme der Klausur A verbleibenden Fälle abgeschlossen und die entsprechenden Punktzahlen in manchen Fällen angepasst.

Sie können die aktualisierten Punktzahlen auf Ihrer persönlichen... Weiterlesen

Liebe Studierende,

wir haben die Nachkorrektur der aus der Einsichtnahme der Klausur A verbleibenden Fälle abgeschlossen und die entsprechenden Punktzahlen in manchen Fällen angepasst.

Sie können die aktualisierten Punktzahlen auf Ihrer persönlichen Statusseite finden.

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

26.06.2017

Termin für die Nachklausuren

Liebe Studierende,

wir haben den Termin für die Nachklausuren auf den 11. Oktober festgelegt.

Wir werden die beide Nachklausuren voraussichtlich hintereinander schreiben.

 

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.


Nebenläufige Programmierung

Multi-Cores und andere parallele Architekturen (zum Beispiel Graphikprozessoren) finden sich mittlerweile auf jedem Schreibtisch. Solche Systeme effizient programmieren zu können, ist eine große Herausforderung. Glaubt man den Vorhersagen der Hardware-Hersteller, wird dies schon bald zum Alltag eines jeden Informatikers gehören.

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

Ziel dieser Vorlesung ist, die Studenten 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.


Wöchentliche Termine (vorläufig)

Mo 14:15 - 16:00     Vorlesung Gebäude E1 3, Hörsaal 002
Di 10:15 - 12:00 Vorlesung Gebäude E1 3, Hörsaal 002
Mi 08:15 - 10:00 Tutorien Gebäude E1 3, SR014, SR015, SR016
Mi 10:15 - 12:00 Tutorien Gebäude E1 3, SR014, SR015, SR016, SR107

 

Achtung: Nicht in jeder Woche finden alle Termine statt. Nutzen Sie den Kalender für einen genauen Plan. Die Midterm-Klausur findet an einem Montag an Stelle einer Vorlesung statt.

Die erste Vorlesung findet am Montag, dem 24. April 2017 statt.


Registrierung

Die Registrierung für den Kurs ist nach der ersten Vorlesung unter Anmeldung möglich! Details zum Übungsbetrieb erfahren Sie in der ersten Vorlesung.


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


Bei technischen Problemen wenden Sie sich bitte an die Administratoren