School of Computer Science

Module 06-26945 (2014)

Distributed and Parallel Computing

Level 3/H

Dan Ghica Semester 2 10 credits
Co-ordinator: Dan Ghica
Reviewer: Mirco Musolesi

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


In this module the key concepts at the basis of the design of distributed algorithms and systems are introduced. State of the art distributed systems are reviewed and the current trends in research and industry are analysed.


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 the fundamental issues in the design of distributed algorithms, protocols and systems, such as timing, coordination and consensus
  3. employ the underlying concepts and engineering issues involved in the real-world implementation of distributed and parallel systems, such as replication, fault-tolerance, reliability and scalability in solving practical problems
  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. demonstrate a practical grasp of programming models and languages used to develop parallel or distributed applications by writing working programs




Teaching methods

Large-Group Lectures

Contact Hours:



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

Supplementary (where allowed): 1.5 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