Concepts for Concurrent, Parallel and Distributed Programming

Diese Vorlesung findet im Sommersemester 2021 online statt. Vorlesungen werden als Aufzeichnungen online bereitgestellt und können zu beliebigen Zeitpunkten abgerufen werden, sind aber mit den Übungen synchronisiert. Übungen sowie eine Fragestunde zu den Vorlesungsinhalten finden an festen Terminen online statt. Wenn Sie an der Veranstaltung teilnehmen wollen, schreiben Sie sich bitte in den dazugehörigen Moodle-Kurs ein, um über den genauen Ablauf informiert zu werden.

 
Titel: Konzepte für nebenläufige, parallele und verteilte Programmierung
Englischer Titel: Concepts for Concurrent, Parallel and Distributed Programming
Typ: Vorlesung mit Übung, Modul mit nur dieser Lehrveranstaltung
Kürzel / Nr. / Modulnr.: CCPDP / CS7310.000 / 75262
SWS / LP: 2V+2Ü / 6LP
Dozent: Dr. Alexander Raschke, Dr. Benjamin Erb
Betreuung: Thomas Witte
Termine: Lecture Q&A
online, live; every Tuesday 12:30 – 14:00 (starting on 2021-04-20)
Lecture Videos
online, pre-recorded (weekly)
Exercises:
online, live; every Thursday 16:15 – 17:15 (starting on 2021-04-22)
Lernplattform: For the course the e-learning system Moodle is used. Please register in the Moodle course.
Notenbonus: tbd.
Prüfungstermine: tbd.

Beschreibung und allgemeine Angaben

Einordnung in die Studiengänge: Informatik, M.Sc., FSPO 2017/Kernfach/Praktische und Angewandte Informatik
Informatik, M.Sc., FSPO 2017/Vertiefungsfach/Software-Engineering und Compilerbau
Informatik, M.Sc., FSPO 2017/Vertiefungsfach/Verteilte Systeme
Medieninformatik, M.Sc., FSPO 2017/Kernfach/Praktische und Angewandte Informatik
Medieninformatik, M.Sc., FSPO 2017/Vertiefungsfach Medieninformatik/Software-Engineering und Compilerbau
Medieninformatik, M.Sc., FSPO 2017/Vertiefungsfach Medieninformatik/Verteilte Systeme
Software Engineering, M.Sc., FSPO 2017/Kernfach/Software Engineering
Software Engineering, M.Sc., FSPO 2017/Vertiefungsfach Software Engineering/Advanced Software Engineering
Informationssystemtechnik, M.Sc., FSPO 2017/Vertiefungsmodule/Vertiefungsmodule Informatik
Master Computational Science and Engineering/Wahlpflichtmodule
Verantwortlich: Dr. Alexander Raschke
Unterrichtssprache: English/Deutsch
Turnus / Dauer: Every summer term / one semester
Voraussetzungen (inhaltlich): Knowledge in object-oriented and functional programming
Voraussetzungen (formal):
Grundlage für (inhaltlich):
Lernergebnisse: Knowledge and understanding:
  •  explain the common problems and challenges arising from concurrency, parallelism and distribution
  •  explain possible solutions for tackling concurrency, parallelism and distribution
  •  explain different frameworks for concurrent, parallel or distributed programming and how they can be applied
  •  explain how language concepts and paradigms support the development of concurrent, parallel and distributed applications
  •  explain the fundamental concepts related to concurrency, parallelism and distribution
Skills and abilities:
  •  identify and recognize general problems related to concurrency, parallelism and distribution in applications
  •   select appropriate solution approaches for applications on multi-core systems or in distributed setups
  •   avoid common mistakes by applying best practices
  •   use different languages and frameworks by applying knowledge about general concepts
Judgement and approach:
  •  select appropriate concepts, languages and frameworks for developing parallel applications
 
Inhalt: Due to the rise of multi-core and many-core systems as well as the increasing use of distributed execution environments, a thorough understanding of the concepts concurrency, parallelism and distribution has become essential to software engineers.
The course covers common problems, best-practices, general architectural concepts, language paradigms, and frameworks which target the development of concurrent, parallel and distributed programs.
Basic concepts covered in this lecture include shared-memory concurrency (e.g., thread-based and event-driven) and message-passing approaches (e.g., synchronous and asynchronous).
Furthermore, the lecture explores different multi-threading approaches on the JVM, and in particular, concurrency primitives and advanced concurrency concepts of the Java programming language. The course also includes frameworks that bring alternative concurrency models to the JVM, such as actor-based concurrency. In addition, the lecture addresses data-parallel processing paradigms, both as language primitive and on distributed platforms (e.g., MapReduce, Apache Flink).
Literatur: Lecture slides and selected literature referenced in the lecture.
Bewertungsmethode: The module examination consists of a graded written or oral examination, depending on the number of participants. If a specified academic work is achieved, a grade bonus is awarded in accordance with §17 (3a) of the General Examination Regulations at the immediately following examination. The examination grade is improved by one grade level, but not better than 1.0. An improvement from 5.0 to 4.0 is not possible. The examination form will be announced in good time before the examination is held - at least 4 weeks before the examination date.
Notenbildung: Grade of the module exam
Arbeitsaufwand: Active time: 60 h
Preparation and evaluation: 120 h
Sum: 180 h