Lehrveranstaltung:IMS 2014:Nebenläufige Programmierung: Unterschied zwischen den Versionen
Kowa (Diskussion | Beiträge) Die Seite wurde neu angelegt: „{{Lehrveranstaltung |vererbung=IAM 2006:JavaScript |in_handbuch=Nein |studiengang=IMS 2014 |verwendbarkeit= |modul=Workshops und Seminare |name= |name_en= |alt…“ |
Kowa (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
||
Zeile 1: | Zeile 1: | ||
{{Lehrveranstaltung | {{Lehrveranstaltung | ||
|vererbung=IAM 2006: | |vererbung=IAM 2006:Nebenläufige Programmierung | ||
|in_handbuch=Nein | |in_handbuch=Nein | ||
|studiengang=IMS 2014 | |studiengang=IMS 2014 |
Aktuelle Version vom 4. November 2016, 14:36 Uhr
Diese Lehrveranstaltung wird nicht mehr angeboten.
Die nachfolgenden Informationen wurden teilweise von Lehrveranstaltung:IAM 2006:Nebenläufige Programmierung übernommen.
Studiengang | Interaktive Mediensysteme (IMS 2014) |
---|---|
Modul | Workshops und Seminare |
Name | Nebenläufige Programmierung |
Name (englisch) | Concurent Programming |
Kürzel | NBPRG.WP |
Voraussetzungen | Grundkenntnisse in einer objektorientierten Programmiersprache, bevorzugt Java. |
Wird gehalten: | veraltet |
Semester | IMS 1, IMS 2, IMS 3 |
Lehrformen | Vorlesung |
Credits | 5 |
SWS | 4 (Lehre: 4, Teaching Points: 4) |
Workload | Präsenzstudium: 60 h (durchschnittlich 4 h pro Woche) Eigenstudium: 90 h (durchschnittlich 6 h pro Woche) |
Notengebung | Kommanote (1,0; 1,3; 1,7; 2,0, 2,3; 2,7; 3,0; 3,3; 3,7; 4,0; 5,0) |
Gewichtung (Modulnote): | 50 % |
Verantwortliche(r) | Daniel Rothaug |
Lehrende(r) | |
Homepage |
Lernziele
- Vertieftes Verständnis für die Unterschiede von nebenläufigen/parallelen gegenüber rein sequentiellen Programmen, sowie für die mit (Quasi-)Parallelität verbundene Komplexität.
- Die Fähigkeit, effiziente, thread-sichere Programmeinheiten und gut skalierende Programme zu realisieren.
- Kenntnis und Einordnung verschiedener Möglichkeiten und Abstraktionsstufen zur Realisierung dieser Aufgabe.
- Einblick in aktuelle Entwicklungstendenzen.
Inhalte
Mit Multicore-Architekturen, insbesondere der für die nächsten Jahre absehbaren rasanten Zunahme der Zahl der auf einer CPU verfügbaren Kerne, rückt der Aspekt Parallelisierung auch für den Anwendungsentwickler in den Vordergrund. Dazu kommt, dass immer mehr die Ressourcen von Graphikkarten für allgemeinere Aufgaben benutzt werden können. Um die derart verfügbare Rechenleistung effizient ausnutzen zu können, ist eine entsprechende Strukturierung der Programme und die Verwendung von geeigneten Infrastrukturen notwendig. In der Vorlesung werden die damit verbundenen Aufgabenstellungen und Probleme besprochen, sowie Lösungsmöglichkeiten aufgezeigt. Der Inhalt gliedert sich auf in drei große Blöcke:
- Klassisches Threading am Beispiel JVM und Java
- Objektfunktionale Programmierung und Aktoren am Beispiel Scala
- Besonderheiten der GPU-Programmierung
Inhaltsverzeichnis
- Nebenläufigkeit auf der JVM in Java
- Threads, elementare Formen der Synchronisation und das Java-Memory-Model
- Konsistenz- und Fortschrittsbedingungen
- OOP und Nebenläufigkeit
- Thread-sichere Klassen und Programme
- Thread-Pools
- Lock-freie Synchronisation
- Nebenläufigkeit in einer objekt-funktionalen Sprache am Beispiel Scala
- Einführung in die grundlegenden Konzepte von Scala
- Funktionale Programmierung und Nebenläufigkeit
- Aktoren und Akka
- Software Transaction Memory
- GPU-Programmierung
- Architektur aktueller GPUs
- CUDA an Hand von Beispielen
- Java und GPU-Programmierung
Prüfungen
Nummer | Prüfer | Zweitprüfer | Prüfung | Prüfungsart | Prüfungsdetails | Hilfsmittel |
---|---|---|---|---|---|---|
1990137 | nicht mehr angeboten | Leistungsnachweis |