Modul Moderne Programmiermethoden, Informatik (Bachelor) (SPO 8)

Englische Sprache
Kompakte Schrift

Farbschema

Modulübersicht

Moderne Programmiermethoden

INFB620

Prof. Dr. Martin Sulzmann

/

6. Semester

Betriebssysteme, Technische Informatik 2

Modul Praxistätigkeit

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.

Einzelprüfungen
Lehrveranstaltung Moderne Programmiermethoden

INFB621

Vorlesung

Prof. Dr. Martin Sulzmann

deutsch

3/2

90 Stunden gesamt, davon 30 Stunden Kontaktstudium.

Klausur 90 Min. (benotet)

Studierende in diesem Kurs

  • bekommen einen Einblick in Methoden zur formalen Modellierung und Verifikation autonomer/reaktiver Systeme,
  • lernen Konzepte und Technologien zur Programmierung von nebenläufigen Systemen kennen.

Im Einzelnen werden folgende Themen betrachtet:

Modellierung und Verifikation

  • Modellierung mit Zustandsmaschinen
  • Mealy/Moore
  • Kommunizierende Automaten mit Zeit
  • Harel Statecharts
  • Spezifikation
  • Reguläre Sprachen
  • Temporale Logiken (CTL)
  • Modelchecking
  • Testfallgenerierung mittels Modelchecking
  • Run-Time Verifikation
  • Abdeckungskriterien
  • UPPAAL

Nebenläufigkeit und Synchronisation

  • Synchronisation via gemeinsamen Speicher
  • Programmieren mit Threads und Locks
  • Lock-freie Algorithmen
  • Software Transactional Memory
  • Nachrichten-basierte Synchronisation
  • Prozesskalküle (CSP, Join)
  • Programmiersprachen Haskell, Go

  • Foliensammlung
  • Tafelmitschrift
  • Ausgearbeitete Beispiele und Übungen
  • Bryan O'Sullivan, "Real World Haskell"
  •  Don Stewart, John Goerzen, "Real-Time Systems and Programming Languages (Fourth Edition)", Ada 2005
  • Alan Burns ,Andy Wellings, "Real-Time Java and C/Real-Time POSIX"
  • Christel Baier, Joost-Pieter Katoen, "Principles of Model Checking"
  • Bruce Powel Douglass, "Real-Time UML: Developing Efficient Objects for Embedded Systems (2nd Edition)"

Seminaristischer Unterricht mit theoretischen und praktischen Übungen.

Lehrveranstaltung Moderne Programmiermethoden Übung

INFB622

Übung

Prof. Dr. Martin Sulzmann

deutsch

2/2

60 Stunden gesamt, davon 30 Stunden Kontaktstudium.

Übung 1 Semester (nicht benotet)