Information on individual educational components (ECTS-Course descriptions) per semester

Parallel Computing and Concurrent Programming

Degree programme Computer Science
Subject area Engineering Technology
Type of degree Master
Full-time
Summer Semester 2024
Course unit title Parallel Computing and Concurrent Programming
Course unit code 024913020202
Language of instruction English
Type of course unit (compulsory, optional) Compulsory
Teaching hours per week 2
Year of study 2024
Level of the course / module according to the curriculum
Number of ECTS credits allocated 4
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