Concurrency and Parallelism - CO890

Location Term Level Credits (ECTS) Current Convenor 2018-19 2019-20
(version 2)
View Timetable
7 15 (7.5)
(version 2)
View Timetable
7 15 (7.5) PROF RE Jones


CO871 Advanced Java for Programmers


Cannot be taken with CO538 Concurrency Design and Practice



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.

Concurrency and parallelism, and their applications to software design.
Identifying parallelisable problems and parallelisation techniques.
Parallel algorithms and how to design them.
Common faults in concurrent and parallel programs.
Complexity, performance measurement and scheduling techniques.
Multi-core and emerging architectures.
Multi-core programming paradigms:
Data-parallel techniques: SIMD, MIMD, vector processing and GPGPUs.
Shared-memory techniques: conventional threads-and-locks, structured parallelism, transactional memory.
Message-passing techniques: process-oriented programming, mailboxes, tuplespaces.


This module appears in:

Contact hours

22 hours of lectures, 10 hours of classes

Preliminary reading


See the library reading list for this module (Canterbury)

See the library reading list for this module (Medway)

Learning outcomes

Understand the concepts of concurrency and parallelism, and how they are useful when designing software
Be able to identify and exploit opportunities for concurrency and parallelisation within a software system
Be familiar with common concurrency problems, and how to mitigate or avoid them
Be able to predict and measure the performance characteristics of a parallel system
Be familiar with the general details of current multi-core architectures and programming paradigms, and evaluate their suitability for typical real-world applications.

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.