Modulbeschreibung

Parallele Programmierung

Kurzzeichen:
M_ParProg
Unterrichtssprache:
Deutsch
ECTS-Credits:
4
Leitidee:

Programmierung von parallelen und nebenläufigen Systemen

  • Grundlagen der nebenläufigen und parallelen Programmierung (Threads, Synchronisation, Korrektheits- und Fairnessbedingungen, Thread Pools, asynchrone Programmierung, Speichermodelle) kennen und verstehen.
  • Entwurf und Implementation von nebenläufigen und parallelen Programmen in modernen verbreiteten Technologien (z.B. .NET C#, Java) umsetzen können.
  • Datenstrukturen, Algorithmen und Design Patterns zur effizienten Parallelisierung (Lock-Free/Wait-Free Data Structures, Recursive Parallel, Producer/Consumer u.a.) kennen und anwenden können.
  • Weitergehende Concurrency-Modelle und Technologien (Actors/CSP, Software Transactional Memory, Cluster-Parallelisierung mit MPI, GPU-Parallelisierung) kennen und einsetzen können.
Modulverantwortung:
Prof. Dr. Bläser Luc
Standort (angeboten):
Rapperswil-Jona
Zusätzliche Eingangskompetenzen:

Englisch und sicherer Umgang mit Eclipse und MS Visual Studio von Vorteil

Modultyp:
Wahlpflicht-Modul für Elektrotechnik STD_05(Keine Semesterempfehlung)Kategorie:Technik (E-et)
Wahlpflicht-Modul für Elektrotechnik STD_14(Keine Semesterempfehlung)Kategorie:Technik (E-et)
Wahlpflicht-Modul für Informatik Retro STD_14_UG(Empfohlenes Semester: 4)Kategorie:Grundlagen Informatik und Aufbau Informatik (I-gai)
Wahl-Modul für Generalist STD_14 (PF)
Wahlpflicht-Modul für Software Engineering STD_14 (PF)Kategorie:Kernmodule Informatik Profile (I-KMP)
Wahlpflicht-Modul für Informatik STD_05(Empfohlenes Semester: 4)Kategorie:Grundlagen Informatik (I-g)
Wahlpflicht-Modul für Informatik STD_11(Empfohlenes Semester: 4)Kategorie:Grundlagen Informatik (I-g)
Wahlpflicht-Modul für Informatik STD_14(Empfohlenes Semester: 4)Kategorien:Aufbau (I_Auf), Informatik (I_Inf)
Modulbewertung:
Note von 1 - 6

Leistungsnachweise und deren Gewichtung

Modulschlussprüfung:
Schriftliche Prüfung, 120 Minuten

Inhalte

Modul- und Lerninhalt:

Multi-Threading und Synchronisation

  • Einführung in die nebenläufige/parallele Programmierung und zugrundeliegenden Systemarchitekturen
  • Multi-Threading mit .NET und/oder Java
  • Kritische Abschnitte und Synchronisationsmechanismen
  • Monitor-Konzept und deren Umsetzung in gängigen Sprachen
  • Spezifische Synchronisationsprimitiven (Semaphore, Reader-Writer Locks, Latches, Barrieren u.a.)
  • Korrektheits- und Fairnessbedingungen; Problematik von Race Conditions, Deadlocks und Starvations

Thread Pools und effiziente Parallelisierung

  • Thread Pools: Mechanismus, Eignung und Limitationen
  • Task- und Daten-Parallelität
  • Parallele Algorithmen (Sortierung, Suchen etc.)
  • Asynchrone Programmierung
  • GUI und Nebenläufigkeit
  • Entwurfsmuster der Nebenläufigkeit (Producer/Consumer, Concurrent Pipelines, Reader/Writer, Recursive Parallel)
  • Speichermodelle: Atomarität, Sichtbarkeit und Optimierung
  • Lock-Free & Wait-Free Datenstrukturen

Fortgeschrittene Nebenläufigkeitsmodelle

  • Verteilte Parallelisierung mit Actors/CSP
  • Cluster Computing mit MPI
  • Software Transactional Memory
  • Vektorparallelisierung; GPU / Coprozessor-Parallelisierung