F21DP Distributed & Parallel Technologies

Dr Rob StewartDr Rosa Filgueira

Course co-ordinator(s): Dr Rob Stewart (Edinburgh), Dr Rosa Filgueira (Edinburgh).


  • To explore technologies and techniques underlying advanced software development for parallel and distributed systems.
  • Review the principal abstractions, methods and techniques used in distributed and parallel programming.
  • Develop an understanding of parallel programming on heterogeneous architectures including accelerators such as GPUs
  • Enable students to appreciate critically a range of distributed and parallel computing technologies

Detailed Information

Course Description: Link to Official Course Descriptor.

Pre-requisites: Academic knowledge of fundamentals of operating systems, computer networks and software engineering equivalent to an ordinary degree in Computer Science, basic knowledge of programming in C.

Location: Edinburgh.

Semester: 2.


  • Foundations of sequential and parallel programming; the role of sequential host languages in the context of distributed and parallel technologies.
  • Distributed Technologies: Distribution concepts; low-level, mid-level and high-level distributed technologies; emerging distribution and coordination technologies.
  • Parallel Technologies: Design of parallel systems, parallel performance analysis; programming heterogeneous systems; practical imperative parallel programming; practical declarative parallel programming

Learning Outcomes: Subject Mastery

Understanding, Knowledge and Cognitive Skills Scholarship, Enquiry and Research (Research-Informed Learning)

  • Understanding of foundational concepts of distributed and parallel software
  • Knowledge and application of contemporary techniques for constructing practical distributed and parallel systems using both declarative and imperative languages
  • Parallel performance tuning using appropriate tools and methodologies
  • Understand the role of control and data abstraction in software design and implementation
  • Appreciation of relationship between imperative and declarative models of parallelism

Learning Outcomes: Personal Abilities

Industrial, Commercial & Professional Practice Autonomy, Accountability & Working with Others Communication, Numeracy & ICT

  • Critically analyse parallel and distributed problems.
  • Generate, interpret and evaluate parallel performance graphs
  • Develop original and creative parallel problem solutions
  • Showing initiative, creativity and team working skills in shared distributed and parallel application development.
  • Demonstrate critical reflection, e.g. understanding of applicability of, and limitations to, parallel and distributed systems

Assessment Methods: Due to covid, assessment methods for Academic Year 2021/22 may vary from those noted on the official course descriptor. Please see:
- Maths (F1) Course Weightings 2021/22
- Computer Science (F2) Course Weightings 2021/22
- AMS (F7) Course Weightings 2021/22

SCQF Level: 11.

Credits: 15.