School of Computer Science

Module 06-32221 (2019)

Distributed and Parallel Computing

Level 3/H

Alan Sexton Semester 1 20 credits
Co-ordinator: Alan Sexton
Reviewer: Dan Ghica

The Module Description is a strict subset of this Syllabus Page.


In this module the key concepts at the basis of the design of multicore parallel programming, data-parallel General Purpose GPU (GPGPU) programming and distributed algorithms and systems are introduced. A heavily practical approach is taken and students will be developing sophisticated high-performance parallel and distributed programs as part of the module.


The aims of this module are to:

  • Introduce the key concepts at the basis of the design of distributed algorithms and systems
  • Review the state-of-the-art in distributed systems and analyse the current trends in research and industry
  • Provide a sound introduction to parallel and distributed programming paradigms

Learning Outcomes

On successful completion of this module, the student should be able to:

  1. describe and justify the main types of architectures and mechanisms of communication in distributed and parallel systems
  2. describe and understand how hardware issues affect the design and implementation of distributed and parallel systems
  3. demonstrate the ability to implement, analyse and criticise algorithms and approaches for distributed and parallel systems
  4. demonstrate understanding of the theoretical concepts and abstractions discussed in the module to the design of novel and innovative distributed and parallel systems
  5. employ the underlying concepts and engineering issues involved in the real-world implementation of distributed and parallel systems in solving practical problems

Taught with

  • 06-32230 - Distributed and Parallel Computing (Extended)

Teaching methods

Large-Group Lectures

Contact Hours:



Sessional: 2 hr Examination (80%) Continuous Assessment (20%)

Supplementary (where allowed): 2 hr Examination (100%)

Detailed Syllabus

  1. Working as a team
  2. GPU architectures
  3. Programming in CUDA
  4. The CUDA memory and thread models
  5. Parallel programming concepts
  6. Introduction to distributed programming
  7. Programming in ERLANG
  8. Introduction to the theory of distributed systems
  9. Cloud computing

Programmes containing this module