Parallele und Funktionale Programmierung - Lecture

Lecture material:

Date Chapter/Topics Slides (in German) Other Material
Past lecture(s)
Teil I - Handwerkszeug des Parallelprogrammierers
26.04.2019
(Philippsen)
1. Introduction
  1. Steigender Appetit, aber die Zukunft ist Multi-Core
  2. Fach-Jargon
  3. Basiswissen über Petri-Netze
Vorlesungsfolien:
[PDF-Farbe] [PDF-SW]
03.05.2019
(Philippsen)
2. Generation of parallelism in programs
  1. Programmiersprachliche Konzepte (fork, join, cobegin, forall)
  2. Aktivitätsfäden in Java: Thread und Runnable, Zustände
  3. Arbeitspakete; ExecutorService
  4. Future-Objekte
Vorlesungsfolien:
[PDF-Farbe] [PDF-SW]
10.05.2019
(Philippsen)
3. data synchronisation
  1. Wettlaufsituationen
  2. Gemeinsamer Zustand
  3. Kritische Abschnitte
  4. synchronized
  5. Rechnen mit Petri-Netzen
Vorlesungsfolien: (nachträglich aktualisiert)
[PDF-Farbe] [PDF-SW]
17.05.2019
(Philippsen)
4. thread-save
  1. Zusammenhang von Sichtbarkeit und Speichermodell
  2. volatile und atomic
  3. Flüchtende Objekte
  4. Typische Fehler
Vorlesungsfolien:
[PDF-Farbe] [PDF-SW]
24.05.2019
(Philippsen)
5. liveness problems
  1. Verklemmung
  2. - Philosophen
  3. - Bedingungen
  4. - Gegenmaßnahmen
  5. Verhungern
Vorlesungsfolien:
[PDF-Farbe] [PDF-SW]
Teil II - Anwendungstypen und Effizienzfragen
31.05.2019
(Philippsen)
6. task-parallel approache (1)
  1. Einfache Task-Abhängigkeiten (Granularität)
  2. Klient & Dienstleister (Mindestproblemgröße)
  3. - Web-Server (Lastbalance)
  4. Chef & Arbeiter (Arbeitspaktgröße)
  5. - Seitenanzeige im Web-Browser (Speedup)
  6. - Monte-Carlo-Simulation (Amdahl)
Vorlesungsfolien:
[PDF-Farbe] [PDF-SW]
07.06.2019
(Philippsen)
7. task-parallel approache (2)
  1. Arbeitsdiebstahl (Parallelitätsbegrenzung)
  2. - Strahlverfolgung
  3. Fließband, Produzent & Konsument (Fließbandgewinne)
  4. - Dateisystemindizierung
  5. Paralleles teile-und-herrsche (Mindestnutzarbeit)
  6. - Fibonacci (Umstiegspunkte)
  7. - Sortieren durch Mischen
  8. - Suchraumdurchforstung
Vorlesungsfolien:
[PDF-Farbe] [PDF-SW]
14.06.2019
(Philippsen)
8. data-parallel approaches (1)
  1. Geometrische Dekomposition
  2. - Grafikfilter
  3. Synchronisationsbarriere
  4. Turnier-Ansatz zur Reduktion (Lemma von Brent)
  5. - Maximumssuche im Feld (Schneller trotz Mehrarbeit)
  6. - Summe aller Feldelemente
  7. Paralleler Algo. von Prim
  8. Paralleler Algo. von Dijkstra
Vorabfassung:
[PDF-Farbe] [PDF-SW]
21.06.2019
(Kamp)
9. data-parallel approaches (2)
  1. Verzeigerte Datenstrukturen
  2. - Zeigerverdopplung
  3. declarative approach: MapReduce
  4. Konzept
  5. Anwendungsbeispiele
  6. - Algo. von Dijkstra
  7. - Web-Seitenwichtigkeit
Vorlesungsfolien:
[PDF-Farbe] [PDF-SW]
Teil III - Funktionale Programmierung
28.06.2019
(Oster)
10. Introduction and Basics
  1. Einführung und Motivation
    • Nebenwirkung / Werttreue
    • Funktionale vs. imperative Programmierung
  2. Funktionale Programmierung (mit Scala)
    • Datentypen (Liste, Tupel, String, Funktion)
    • Currying und Sektionen
    • Bedingte Ausdrücke
    • Mustervergleich (Pattern Matching)
    • Mengenabstraktionen, Generatoren, Wächter (Guards)
[PDF-Farbe] [PDF-SW]
05.07.2019
(Oster)
11. Main Features of Functional Programming
  1. Funktionale Programmierung (mit Scala) - Fortsetzung
    • Funktionen höherer Ordnung
    • Bedarfsauswertung (Lazy Evaluation)
    • Ströme: „unendliche“ Datenstrukturen mit Stream
  2. Eigene Datentypen
    • Type Aliasing
    • Aufzählungsdatentypen
    • Algebraische Datentypen (case class / object)
[PDF-Farbe] [PDF-SW]
12.07.2019
(Oster)
12. Parallelization
  1. Datenstrukturen: Parallel Immutable Collection
  2. Kontrollfluss: Future
  3. Spezialkonzept: Actor
[PDF-Farbe] [PDF-SW]
19.07.2019
(Oster)
13. Functional programming - illustrated
  1. Vergleich: Scala vs. Java 8
  2. Anwendungsbeispiele zu MapReduce
    • Googles MapReduce / Apache Hadoop
    • Dijkstra mit MapReduce
[PDF-Farbe] [PDF-SW]
26.07.2019 (no lecture)

watermark seal