- 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
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.
- 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: Examination: (weighting – 60%) Coursework: (weighting – 40%)
Re-assessment: Examination (MSc only): (weighting – 100%)
SCQF Level: 11.