Internal Preview! The data shown below is not valid for students! Please refer to the official Module Descriptions at the Examination Office.
Concurrent Programming CP

General

study semester
4-5
standard study semester
6
cycle
every summer semester
duration
1 semester
SWS
4
ECTS
6
teaching language
English / Deutsch

People

responsible
Prof. Dr.-Ing. Holger Hermanns
lectures
Prof. Dr.-Ing. Holger Hermanns
Prof. Dr. Bernd Finkbeiner
Prof. Dr. Verena Wolf

Assessment & Grades

entrance requirements

Programming 1 and 2, Software Engineering Lab, and Introduction to Theoretical Computer Science (recommended).

assessment / exams

Two exams (mid-term and end-term), practical project.

Re-exams take place within the last weeks before the start of lectures of the following semester.

grade

Is determined from performance in written examinations (following elements T and A), as well as the preparatory examinations (element P). The exact modalities will be announced by the person responsible for the module. All module elements must be successfully completed within one examination period.

Workload

course type /weekly hours

Element T - Theory (2 SWS):
8 lectures: 6 weeks
4 exercises: 6 weeks

Element A - Application (2 SWS):
9 lectures: 6 weeks
4 exercises: 6 weeks

Element P - Practice (private study):
8 written reflections during the semester (preparatory work for exams), followed by project work over approx. 2 weeks

= 4 SWS

total workload

Element T:
24 h of classes, 36 h private study

Element A:
26 h of classes, 34 h private study

Element P:
60 h private study

   50 h of classes
+ 130 h private study
= 180 h (= 6 ECTS)

Aims / Competences to be developed

The participants of this course get acquainted with concurrency in computation as a far-reaching and foundational principle with respect to both theory and application of modern computing sciences. By analysing and applying different formal models, the participants gain a deeper understanding of concurrency, and learn to apply formal computing concepts correctly. The theoretical knowledge acquired in the first half of the lecture is in the second half applied to practical programming. Therein, participants learn using the programming paradigms “shared memory” and “message passing” starting off with the programming language pseuCo before applying their skills to Java and (partially) to Go. In addition, participants learn to describe various phenomena of concurrent programming using formal models, and to derive concrete solutions for practical problems from them. Moreover, the participants examine existing practitioneer’s concepts with respect to their reliability. A specific aspect of this professional practice is the tactically adequate reaction to concurrency problems under tight time constraints.

Content

Concurrency as a Concept

  • potential parallelism
  • actual parallelism
  • conceptional parallelism

Concurrency in Practice

  • object orientation
  • operating systems
  • multi-core processors, coprocessors
  • programmed parallelism
  • distributed systems (client-server, peer-to-peer, databases, the Internet)

Problems of Concurrency

  • resource conflicts
  • fairness
  • mutual exclusion
  • deadlock
  • livelock
  • starvation

Foundations of Concurrency

  • sequential vs. concurrent processes
  • states, events and transitions
  • transition systems
  • observable behaviour
  • determinism vs. non-determinism
  • algebras and operators

CCS - The Calculus of Communicating Systems

  • constructing processes: sequence, choice, recursion
  • concurrency and interaction
  • structural operational semantics
  • equivalence of observations
  • implementation relations
  • CCS with message passing

Programming Concurrency

  • pseuCo
  • message passing in pseuCo and Go
  • shared memory in pseuCo and Java
  • shared objects and threads in Java
  • shared objects and threads as transition systems

Programming and Analysis Support

  • deadlock detection
  • verification of safety and liveness
  • model-based design supporting concurrency
  • software architectures supporting concurrency

Literature & Reading

Will be announced before the start of the course on the course page on the Internet.

Additional Information

This module is identical in content to the German-language module Nebenläufige Programmierung.

Curriculum

This module is part of the following study programmes:

Cybersecurity BSc (English): Komplementäre Themen der Cybersicherheit
study semester: 4-5 / standard study semester: 6
Computer Science BSc (English): Grundlagen der Informatik
study semester: 4 / standard study semester: 6