MODULBESCHREIBUNG

Parallele Programmierung

Kurzzeichen:
M_ParProg
Durchführungszeitraum:
FS/15-FS/18
ECTS-Punkte:
4
Lernziele:

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.
Verantwortliche Person:
Bläser Luc
Empfohlene Module:
Zusätzlich vorausgesetzte Kenntnisse:

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

Skriptablage:
Modultyp:
Standard-Modul für Elektrotechnik STD_05(Keine Semester Empfehlung)
Standard-Modul für Elektrotechnik STD_14(Keine Semester Empfehlung)
Standard-Modul für Informatik STD_05(Empfohlenes Semester: 4)
Standard-Modul für Informatik STD_11(Empfohlenes Semester: 4)
Standard-Modul für Informatik STD_14(Keine Semester Empfehlung)
Standard-Modul für Generalist STD_14 (PF)

ECTS-Punkte pro Kategorie

Kategorie:
Technik / 4 Punkte
Technik / 4 Punkte
Aufbau Informatik / 4 Punkte
Aufbau Informatik / 4 Punkte
Grundlagen Informatik und Aufbau Informatik / 4 Punkte
Kernmodule Informatik Profile / 4 Punkte

Modulbewertung

Bewertungsart:
Note von 1 - 6

Leistungsbewertung

Während der Prüfungssession:
Schriftliche Prüfung, 120 Minuten
Zulassungsbedingungen zur Prüfung:

Erfolgreiche Teilnahme an den Übungen.

Kurse in diesem Modul

Parallele Programmierung

Kurzzeichen:
ParProg
Lernziele:
Plan 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
Kursart:

(Durchführung gemäss Stundenplan)

Uebung mit 2 Lektionen pro Woche
   - Max. Teilnehmer: 18
   - Harte Grenze: ja
Vorlesung mit 2 Lektionen pro Woche
   - Max. Teilnehmer: 126
   - Harte Grenze: ja

Übergangsregelungen:
Parallel- und Netzwerkprogrammierung (mUk_PnProg / I) (nicht durchgeführt)