NEBENLÄUFIGE PROGRAMMIERUNG

Diese Vorlesung wurde ausgezeichnet mit dem Preis des Fakultätentages Informatik 2013.


Publikum

Diese Basisvorlesung richtet sich in erster Linie an Studierende im Bachelor Informatik (Pflicht ab SPO 2006).

 


Wöchentliche Termine

Mo   14:15 - 16:00   Vorlesung   HS002   Geb. E1 3 
Di   10:15 - 12:00   Vorlesung   HS002   Geb. E1 3 
Mi   08:15 - 08:30   Freiversuche   i.d.R. HS002   Geb. E1 3 
Mi   08:35 - 10:05   Tutorien   SR014, SR015, SR016   Geb. E1 3 
Mi   10:15 - 10:30   Freiversuche   i.d.R. HS002   Geb. E1 3 
Mi   10:35 - 12:05   Tutorien   SR014, SR015, SR016   Geb. E1 3 

Die erste Vorlesung findet am Montag, dem 18.04.2016 statt.

 

Die vorraussichtlichen Vorlesungs- und Übungstermine finden Sie hier!

Die Übungen finden in den Räumen SR 014, SR 015 und SR 016 in Geb. E1 3 statt.


Registrierung hier!

Die Registrierung wird bald geöffnet.

Die Anmeldung ist bis Samstag, den 23. April möglich!

Details zum Übungsbetrieb erfahren Sie in der ersten Vorlesung.

 

Video-Anleitung zur Anmeldung im CMS (benötigt den Adobe Flash Player)


NP-Café

Das NP-Café hat voraussichtlich jeweils am Montag, Dienstag, Donnerstag, und Freitag von 12:00 bis 13:00 Uhr in SR 015 in Geb. E1 3 geöffnet.


Dozenten

Prof. Dr.-Ing. Holger Hermanns

Organisation

Felix Freiberger, BSc
Alexander Graf-Brill, MSc

Literatur

Siehe:

infobib.cs.uni-sb.de/frames/vorlesungen/info-basic_nebenlaeufig.html


Inhalt

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.

 

Wir betrachten:


  • Nebenläufigkeit als Konzept
    • Potentieller Parallelismus
    • Tatsächlicher Parallelismus
    • Konzeptioneller Parallelismus
  • Nebenläufigkeit in der Praxis
    • Objektorientierung
    • Betriebssysteme
    • Multi-core Prozessoren, Coprozessoren
    • Programmierte Parallelitaet
    • Verteilte Systeme (client-server, peer-2-peer, Datenbanken, Internet)
    • Business Processes
  • Die Schwierigkeit von Nebenläufigkeit
    • Ressourcenkonflikte
    • Fairness
    • Gegenseitiger Auschluss
    • 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
  • Modelle echter Nebenläufigkeit
    • Petri-Netze
    • Partial-Ordnungen
    • Ereignisstrukturen
    • CCS und echte Nebenläufigkeit
    • Andere Formalismen: MSCs, Statecharts
  • Nebenläufige Hardware
    • Transaction Level Modelling
    • threads, locks, notify, wait
    • System C Realisation
  • Programmieren von Nebenläufigkeit
    • Java vs. C++
    • Objekte in Java
    • Sockets, Protokolle, Datenstroeme in Java
    • Shared Objects und Threads in Java
    • Shared Objects und Threads als Transitionssysteme
    • Monitore und Semaphoren
  • Analyse und Programmierunterstützung
    • Erkennung von Verklemmungen
    • Zusicherung von Sicherheit und Lebendigkeit
    • Model-Basiertes Design von Nebenläufigkeit
    • Software Architekturen für Nebenläufigkeit