Parallele und Funktionale Programmierung - Vorlesung

Begleitmaterial zur Vorlesung:

Datum Kapitel/Themen Folien Sonstiges Material
Vergangene Vorlesung(en)
Teil I - Handwerkszeug des Parallelprogrammierers
26.04.2019
(Philippsen)
1. Einführung
  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. Erzeugung von Parallelität in Programmen
  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. Datensynchronisation
  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-Sicherheit
  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. Lebendigkeitsprobleme
  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-paralleles Vorgehen (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-paralleles Vorgehen (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. Datenparalleles Vorgehen (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. Datenparalleles Vorgehen (2)
  1. Verzeigerte Datenstrukturen
  2. - Zeigerverdopplung
  3. Deklarativer Ansatz: 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. Einführung und Grundlagen
  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. Hauptkonzepte funktionaler Programmierung
  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. Parallelisierung
  1. Datenstrukturen: Parallel Immutable Collection
  2. Kontrollfluss: Future
  3. Spezialkonzept: Actor
[PDF-Farbe] [PDF-SW]
19.07.2019
(Oster)
13. Funktionale Programmierung - veranschaulicht
  1. Vergleich: Scala vs. Java 8
  2. Anwendungsbeispiele zu MapReduce
    • Googles MapReduce / Apache Hadoop
    • Dijkstra mit MapReduce
[PDF-Farbe] [PDF-SW]
26.07.2019 (entfällt)

Hinweis zu den Quelltextbeispielen (sonstiges Material):

Die Quelltextbeispiele stehen Ihnen so zur Verfügung, wie in der Vorlesung verwendet. Es handelt sich um Beispiele mit "Ecken und Kanten", die sicherlich an einigen Stellen schöner, besser, schneller gemacht werden könnten. Einzelne Beispiele lassen sich sogar explizit nicht übersetzen, da sie zur Demonstration von Fehlerszenarios dienen. I. d. R. wird darauf allerdings per Kommentar in der jeweiligen Datei hingewiesen. Die Bereitstellung all dieser Beispiele dient dem Zweck, dass Sie mit diesen experimentieren können. Verändern, verbessern, verschönern, erweiteren Sie diese Beispiele nach individuellem Belieben. Gerade für Programmieranfänger/-innen ist es erfahrungsgemäß viel einfacher, bestehende Beispiele zu modifizieren und zu ergänzen, als etwas völlig neu zu programmieren.

watermark seal