NEBENLÄUFIGE PROGRAMMIERUNG

Vorlesungsplan (vorläufig)

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


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.

 


Vorlesungstermine

Mo   14:15 - 16:00   Vorlesung   HS 2 in E1 3   nur am 14.4./28.4./19.5./2.6./30.6. 
Di   10:15 - 12:00   Vorlesung   HS 2 in E1 3   wöchentlich bis inkl. 8.7. 

Termine der Freiversuche und Übungen

    nur am 23.4./7.5./14.5./28.5./11.6./18.6./25.6./9.7. 
Mi   10:10 - 10:25   Freiversuche   HS2 in E1 3 
Mi   10:30 - 12:00   Tutorien   SR014, SR015, SR016 in E1 3 
Mi   12:10 - 12:25   Freiversuche   HS1 in E2 5 
Mi   12:30 - 14:00   Tutorien   SR1 (U.37), SR3 (U.11), SR4 (U.16) in E2 5 

Die erste Vorlesung findet am Montag, dem 14.4.2014 statt.

 

Die voraussichtlichen Vorlesungs- und Übungstermine finden Sie hier!

 


Registrierung hier!

Die Registrierung ist geöffnet.

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

Details zum Übungsbetrieb erfahren Sie in der ersten Vorlesung.


Office Hours / Einsicht

Unsere Office Hours finden vorraussichtlich jeweils am Montag, Dienstag, und Freitag von 12:30 bis 14 Uhr in SR 015 in Geb. E1 3 statt. Donnerstags kann im selben Raum von 12:00 bis 14:00 Uhr Einsicht in die korrigierten Freiversuche und Aufgaben genommen werden.


Dozenten

Prof. Dr.-Ing. Holger Hermanns
Christian Eisentraut, M. Sc.

Organisation

Thilo Krüger

Literatur

Siehe:

www.infomath-bib.de/tmp/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 unter anderem:


1. Grundlagen der Nebenläufigkeit

  • Nebenläufige Systeme als Prozesse
    • Beschriftete Transitionssysteme
    • Nichtdeterminismus
  • CCS
    • Sequentielles CCS
    • Nebenläufigkeit, Interaktion und Synchronisation
    • Restriktion
    • Daten und Parameter
  • Beobachtbares Verhalten
    • Äquivalenzrelationen
    • Kongruenzrelationen
    • Bisimulationen
    • Beobachtungskongruenz

2. Konzepte des Nebenläufigen Programmierens

  • Nebenläufige Programmierung in der Praxis
    • pseuCo: Eine Programmiersprache für nebenläufige Agenten
    • pseuCo und CCS
  • Kooperation durch Nachrichten
    • Ungepufferte und gepufferte Kommunikation
    • Auswahl von Nachrichten (select/case)
    • Nachrichtenkommunikation in der Praxis
    • Go
  • Kooperation durch gemeinsame Ressourcen
    • Gegenseitiger Ausschluss - Mutexe
    • Monitore
    • Shared Memory vs. Message Passing
  • Nebenläufiges Programmieren in Java
    • Threads in Java
    • Signalisierung und Koordination