Software wird immer komplexer. Programme arbeiten in einer nebenläufigen Umgebung.
Sicherzustellen, dass diese Programme ordnungsgemäß funktionieren, ist eine anspruchsvolle Aufgabe.
Dieser Kurs behandelt den Entwurf, die Implementierung und die Analyse nebeläufiger Programme.
Nach diesem Kurs sind die Studierenden in der Lage, die konzeptionellen Grundlagen der gleichzeitigen Programmierung zu verstehen.
wie man diese Konzepte in der Programmiersprache Go implementiert und verschiedene Methoden zur Vorhersage potenzieller Parallelitätsfehler.
In den Vorlesungen werden Konzepte mithilfe von Live-Programmierung vorgestellt, gefolgt von einigen Laborsitzungen, in denen die Studierenden an kleineren praktischen Übungen arbeiten. Mehrere (Online-)Quizzes ermöglichen den Studierenden, ihr Wissen zu testen.
Inhalt.
Einführung in Go.
* C-ähnliche Syntax
* Einfache Typinferenz
* Strukturelle Subtypisierung
Gleichzeitige Programmierung in Go.
* Multithreading
* Schlösser und Semaphore
* Kanalbasierte Kommunikation
* Weitere Parallelitätsabstraktionen (Barrieren, Async-Wait, Futures)
Methoden der Programmanalyse.
* Statische versus dynamische Analyse
* Dynamischer Datenwettlauf und Deadlock-Vorhersage
* Go-spezifische Analyseszenarien
Schriftliche Abschlussprüfung, ohne Hilfsmittel. Prüfungsfragen beziehen sich auf Algorithmen und praktische Übungen
die in der Vorlesung und im Labor behandelt werden.
Studierende in diesem Kurs
Im Einzelnen werden folgende Themen betrachtet:
Modellierung und Verifikation
Nebenläufigkeit und Synchronisation
Seminaristischer Unterricht mit theoretischen und praktischen Übungen.