Parallele Programmierung
Die Veranstaltung wird in Deutsch mit englischsprachigen Unterlagen durchgeführt.
The rise of multi-core and many-core systems and clusters requires that software engineers develop software which is executed parallely. The course covers common problems, best-practices, general architectural concepts, frameworks and languages which target the development of parallel programs.
Specifically, we will cover:
- Definitions and foundational concepts
- Parallelism in multi-core single systems:
- Threads (Java)
- Futures (Java)
- ThreadPools / Executor (Java)
- Coroutines (Kotlin)
- Safe Concurrent Programming: Ownership, Moves, Borrowing, Type Safety, Channels (Rust)
- Automated Parallelism (Haskell)
- Parallel and Distributed CHR
- Actor-Modell (Akka)
- Distributed parallelism
- BSP
- MapReduce
- SparkX (Scala)
Lecture and Exercises:
The course will contain significant practical aspects. Small programming exercises will be part of the lecture accompanied by weekly assignments. The course finishes with a 3-week big exercise solving a real-live problem.
Learning objectives:
The learning objectives of the course are the following:
Knowledge and understanding:
- explain the common problems arising from parallelism and possible solutions
- explain different frameworks to exploit parallelism and how they can be used
- explain how language paradigms support the development of parallel applications
- explain the following concepts: threads, processes, interprocess-communication, multi-agent systems,
Skills and abilities:
- avoid common mistakes by applying best practicesuse frameworks to develop parallel
- applications on multi-core systems and clusters
- use different languages and frameworks by applying knowledge about general concepts
Judgement and approach:
- select appropriate concepts, languages and frameworks for developing parallel application
Dienstag, 12-14, O27-2203 (Übung)
Donnerstag, 16-18, O27-123 (Vorlesung)