Theory and Practice of Concurrency - CO661

Looking for a different module?

Module delivery information

Location Term Level1 Credits (ECTS)2 Current Convenor3 2020 to 2021
Autumn 6 15 (7.5) DR L Bocchi checkmark-circle


This module is aimed at introducing the principles of concurrency theory (1, 2, 3) and demonstrating how these can be applied to design and implement distributed applications (4). Advanced concepts of Web services will be studied and placed in the perspective of these principles (5, 6).
The following is an indicative list of topics:
• Message passing primitives for concurrency: synchronous versus asynchronous message passing, the actor model.
• Reasoning on processes: temporal logic, safety and liveness properties, bisimulation.
• Channel passing and mobility.
• Design and implementation of application–level protocols.
• Web services: from stateless services to distributed business processes (also known as service orchestrations).
• Transaction protocols on the Web: two-phase commit, long running transactions.


This module appears in the following module collections.

Contact hours

Total contact hours: 32 hours
Private study hours: 118 hours
Total study hours: 150 hours

Method of assessment

13. Assessment methods
13.1 Main assessment methods
Concurrent programming in Java Coding assignment (20%)
Concurrent programming in GO Coding assignment (20%)
Seminar (Presentation and oral discussion) 10%
2-hour unseen written examination (50%)

13.2 Reassessment methods
Like for like.

Indicative reading

Armstrong, J, Virding, R, Williams,W.M, Wilkstrom, (1996). C. Concurrent Programming in ERLANG. Prentice-Hall.
Lynch, N.A. (1996). Distributed Algorithms. Morgan Kaufmann Publishers In (Section 7)
Milner, R. (1989). Communication and Concurrency. Prentice-Hall,

See the library reading list for this module (Canterbury)

Learning outcomes

8. The intended subject specific learning outcomes.
On successfully completing the module students will be able to:
8.1 Have a critical understanding of the principles of concurrent programming, as well as its advantages and challenges;
8.2 Reason on the properties of a distributed process (e.g., safety and liveness), and compare the behaviour of different processes.
8.3 Design and implement processes satisfying given properties.
8.4 Apply the acquired knowledge to real scenarios e.g. application-level protocols, Web services.
8.5 Be familiar with advanced concepts of Web Services.

9. The intended generic learning outcomes.
On successfully completing the module students will be able to demonstrate:
9.1 Systematic and rigorous reasoning,
9.2 Application of abstract concepts to concrete scenarios,
9.3 Ability of presenting and discussing state of the art topics.


  1. Credit level 6. Higher level module usually taken in Stage 3 of an undergraduate degree.
  2. ECTS credits are recognised throughout the EU and allow you to transfer credit easily from one university to another.
  3. The named convenor is the convenor for the current academic session.
Back to top

University of Kent makes every effort to ensure that module information is accurate for the relevant academic session and to provide educational services as described. However, courses, services and other matters may be subject to change. Please read our full disclaimer.