Concurrent Programming

    Nummer
    conpr
    ECTS
    3.0
    Anspruchsniveau
    advanced
    Inhaltsübersicht
    Um die Leistung moderner Multicore-Rechner voll auszuschöpfen und um auf asynchrone Ereignisse reagieren zu können, ist nebenläufige Programmierung (Concurrent Programming) nötig. Im Modul Concurrent Programming werden verschiedene Modelle eingeführt um die Probleme der Synchronisation und Koordination zu lösen: Locks & Conditions, Nichtblockierende Synchronisation (Lock-Free Programming), Message-Passing Modelle und Transactional Memory. Themen:
    • Einführung in Thema Concurrency
    • Locks: Race Conditions, Mutual Exclusion & Deadlocks
    • Condition Synchronization: Wait / Notify & Interrupts
    • Java Memory Model
    • Sharing Objects: Immutability
    • Lock-Free Programming
    • Synchronizers
    • Tasks: Fork-Join, Futures, parallele und reaktive Streams
    • Message Passing: Aktoren
    • Software Transactional Memory
    • Testen nebenläufiger Programme
    Lernziele
    Ziel dieses Moduls ist es, dass die Studierenden die Probleme der Synchronisation und Koordination beherrschen und korrekte nebenläufige Programme schreiben können. Die Studierenden
    • kennen die wichtigsten theoretischen Aspekte der nebenläufigen Programmierung und können Situationen bezüglich Deadlock-Gefahr und korrekter Synchronisation einschätzen,
    • kennen verschiedene Modelle um Concurrency-Probleme zu lösen,
    • kennen gebräuchliche Werkzeuge für die nebenläufige Programmierung und können diese erfolgreich einsetzen,
    • können korrekte nebenläufige Programme schreiben.
    Empfohlene Vorkenntnisse
    • Algorithmen & Datenstrukturen 2 (algd2)
    Leistungsbewertung
    Erfahrungsnote
    Zusatzinformationen
    Im Unterricht werden die Programmiersprachen Java und Scala verwendet (in Scala wird eingeführt).