Parallel Programming (PP)
3. Semester
5 ECTS | 4 SWS
Written Exam 90 Minutes (K90)
Harness the Full Power of Modern Computers: Learn how multiple tasks can be processed simultaneously and how software efficiently utilizes multiple processors and threads. Explore synchronization, safe data access, and the development of high-performance parallel applications.
Contents
- Parallelism and concurrency, processes, threads, co-routines/fibers
- Thread concepts in Java
- critical regions becuase of concurrent access to data in Java, mutual exclusion with synchronized (intrinsic lock)
- Deadlocks, Signalling (wait/notify) and condition variables (await/signal), lifecycle of threads, interrupts
- Thread Pools, Callable, Future, and FutureTask
- Java memory model and concurrency, memory barriers
- Locks (ReentrantLock, ReadWriteLock, StampedLock), and Semaphores
- synchronised, unmodifiable, and concurrent Collections in Java
- using atomic variables
- further architectures and frameworks for concurrent and parallel programing in Java and other programing languages (if applicable): e.g. Actor Model, Communicating Sequential Processes, Fork-Join, Map-Reduce, Parallel Streams, Software Transactional Memory, RxJava, data parallelism: GPGPU (OpenCL or CUDA)
- performance considerations
- design patterns (for concurrent and parallel programs)
- practical exercises for the implementation of asynchronous, concurrent, and parallel algorithms with Java and other programming languages (if applicable)
Competencies
Students are able to
- of naming problems and opportunities of parallel development
- of seeing problems of Java code which result from concurrency
- of developing concurrent programs
- of assessing existing programs according to their concurrent behaviour
Literature
- J. Allen, Effective Akka. Patterns and Best Practices. Sebastopol, CA, USA: O’Reilly Media, 2013.
- P. Butcher, Seven Concurrency Models in Seven Weeks. When Threads Unravel. Dallas: The Pragmatic Programmers, 2014.
- J. Hettel and M. T. Tran, Nebenläufige Programmierung mit Java. Konzepte und Programmiermodelle für Multicore-Systeme. Heidelberg: dpunkt Verlag, 2016.
- A. S. Tanenbaum and H. Bos. Moderne Betriebssysteme. [4th ed.]. Pearson Studium, 2016.
- V. Vernon, Reactive Messaging Patterns with the Actor Model. Applications and Integration in Scala and Akka. New York: Addison-Wesley, 2016.
Lecturer
- Prof. Dr.-Ing. Sandro Leuchter
Recommended Previous Knowledge
Module Details
| Semester |
3 |
| Lecture Language |
German |
|
Frequency
|
Every Term
|
| Credit Points (ECTS)
|
5 |
| Course Coordinator |
Prof. Dr.-Ing. Sandro Leuchter |
| Duration |
1 Semester |
|
Course Achievement
|
None |
|
Prerequisite for exam
|
Compulsory Assignment (PU) |
|
Exam
|
Written Exam 90 Minutes (K90) |
Weekly Hours (SWS)
| Lecture |
2 SWS |
| Lab |
2 SWS |
| Sum |
4 SWS |
Work Load
| Lecture |
30 h |
| Lab |
30 h |
| Self Study |
50 h |
| Assignments |
40 h |
| Sum |
150 h |