Thomas Witte
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 concurrently and parallely. The course covers common problems, best-practices, general architectural concepts, frameworks and languages which target the development of concurrent and parallel programs.
Specifically, we will cover:
- Definitions and foundational concepts
- Parallelism in multi-core single systems:
- Threads (Java)
- Futures (Java)
- ThreadPools / Executor (Java)
- Coroutines
- Safe Concurrent Programming: Ownership, Moves, Borrowing, Type Safety, Channels (Rust)
- Actor-Modell (Akka)
- MapReduce
Lecture and Exercises:
The course will contain significant practical aspects. Small programming exercises will be part of the lecture accompanied by weekly assignments.
Learning objectives:
The learning objectives of the course are the following:
Knowledge and understanding:
- explain the common problems arising from concurrency and parallelism and possible solutions
- explain different frameworks to exploit parallelism and how they can be used
- explain how language paradigms support the development of concurrent applications
- explain the following concepts: threads, processes, interprocess-communication, multi-agent systems,
Skills and abilities:
- avoid common mistakes by applying best practices
- use 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 concurrent and parallel applications
Kontakt
Termine
Dienstag, 12:00-13:30, O27-2203 (Vorlesung)
Donnerstag, 16-18, O27-123 (Übung)
Weitere Informationen