Parallel Computing and Concurrent Programming (E)
Degree programme | Computer Science |
Subject area | Engineering Technology |
Type of degree | Master full-time |
Type of course unit (compulsory, optional) | Elective |
Course unit code | 024913020202 |
Teaching units | 30 |
Year of study | 2026 |
Name of lecturer(s) | Andrea JANES |
Requirements and Prerequisites
Excellent knowledge of Java and Object-Oriented Programming
Course content
- Java Threading Model and Concurrency Features
- Actor Model using Java Akka
- Transactional Programming
- Mutexes and Semaphors
- Profiling and Performance Measurement of Parallel and Concurrent Applications
- Concurrent Datastructures
- Concurrent Patterns (e.g.. Consumer / Producer)
- Communicating Sequential Processes
Learning outcomes
The students get to know basics and concepts of parallel and concurrent programming in Java.
- know and understand the difference between parallelism and concurrency.
- know and understand the difference between shared memory and message-passing concurrency.
- know patterns of parallel programming.
- know Amdahls Law.
- are able to implement parallel and concurrent problems in Java.
- know concepts of concurrent programing such as Futures/Promises, Monitors, Software Transactional Memory , Mutexes, Semaphores.
- are able to differentiate between parallel and concurrent programs on implementation, as well as on type level.
- know the issues of concurrent programming: Data Races, Dead Locks, Live Locks and Starvation.
- know simple basics of process caluli.
Planned learning activities and teaching methods
Lectures
Assessment methods and criteria
Written exam (50%) and weekly exercises (50%)
For a positive grade, a minimum of 50% of the possible points must be achieved in each part of the examination.
Comment
None
Recommended or required reading
- Armstrong, Joe (2013): Programming Erlang: software for a concurrent world. Pragmatic Bookshelf.
- Herlihy, Maurice et al. (2020): The art of multiprocessor programming. Newnes.
- Marlow, Simon (2011): ‘Parallel and concurrent programming in Haskell.’ In: Central European Functional Programming School. Springer, p. 339–401.
- Mattson, Timothy G; Sanders, Beverly; Massingill, Berna (2004): Patterns for parallel programming. Pearson Education.
- Urma, Raoul-Gabriel; Mycroft, Alan; Fusco, Mario (2018): Modern Java in Action. Manning Publications.
- Vernon, Vaughn (2015): Reactive messaging patterns with the Actor model: applications and integration in Scala and Akka. Addison-Wesley Professional.
Mode of delivery (face-to-face, distance learning)
Face-to-face instruction with mandatory attendance