Concurrency and Parallelism - CO890

Looking for a different module?

Module delivery information

This module is not currently running in 2020 to 2021.


Concurrent design and programming skills are of growing importance as multi-core processor technology advances. A sound understanding of fundamental concurrency concepts and obstacles is essential. This module introduces fundamental theories of concurrency. It discusses how designs can be made parallel and identifies the common faults in concurrent programs and how to avoid them. It introduces a range of widely used programming paradigms and techniques for writing concurrent programmes.


This module appears in the following module collections.

Contact hours

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

Method of assessment

13.1 Main assessment methods
Software-related task, 40 hours (40%)
Examination (60%)

13.2 Reassessment methods
Like for like

Indicative reading

Java Concurrency in Practice by Brian Goetz, Tim Peierls, Joshua Bloch and Joseph Bowbeer (2006)
Joseph JaJa, "An Introduction to Parallel Algorithms"
Mordechai Ben Ari, "Principles of Concurrent and Distributed Programming"
Maurice Herlihy and Nir Shavit, "The Art of Multiprocessor Programming", 2012
The Go programming language - Alan Donovan, Brian W. Kernighan, 2015
Measuring Computer Performance: A Practitioner's Guide - Lilja, David J. 2005

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 understand the concepts of concurrency and parallelism, and how they are useful when designing software;
8.2 be able to identify and exploit opportunities for concurrency and parallelisation within a software system;
8.3 be familiar with common concurrency problems, and how to mitigate or avoid them;
8.4 be able to predict and measure the performance characteristics of a parallel system;
8.5 be familiar with the general details of current multi-core architectures and programming paradigms, and evaluate their suitability for typical real-world applications

9. The intended generic learning outcomes.
On successfully completing the module students will be able to:
9.1 communicate with other professionals using appropriate technical vocabulary;
9.2 identify and evaluate possible solutions to common design problems;
9.3 understand and engage with relevant research;
9.4 plan, work and study independently and to use relevant resources in a manner that reflects good practice;
9.5 apply time management and organisational skills including the ability to manage their own learning and development;
9.6 appreciate the importance of continued professional development as part of lifelong learning;


  1. ECTS credits are recognised throughout the EU and allow you to transfer credit easily from one university to another.
  2. 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.