Module details for Data Structures and Algorithms 2

Description

This module builds on Data Structures and Algorithms 1 by introducing students to parallel programming on shared memory and GPU architectures and the design techniques underpinning parallel applications, using a range of case studies drawn from typical real-world applications.

Aims

The aim of this Module is to provide the student: To develop computational and algorithmic thinking and show how parallel data structures and algorithms are used efficiently in real-world applications.

Learning Outcomes

By the end of this module the student should be able to:

1.  Be aware of the standard techniques of software performance measurement, including profiling, and apply these techniques to identify performance bottlenecks in real programs.

2.  Understand the emerging importance of parallel programming in modern software development, and experiment with the performance impact of parallelising parts of an application.

3.  Describe a variety of application-specific algorithms (sorting/numerical/image processing) and associated data structures in common use, and discuss the benefits and limitations of parallelisation.

Indicative Content

1 Parallel programming

Why to parallelise, parallelism and concurrency, Amdahl's law, high-level approaches to parallelisation, parallel design

2 Low-level programming with threads

Starting and joining threads, sharing data safely, mutual exclusion, synchronisation objects, lock-free

3 High-level parallel programming

Task-based parallelism, message-passing parallelism, data-parallel problems, exploiting locality programming.

4 Instruction-level parallelism

SIMD instructions, automatic vectorisation

5 GPGPU

GPU architectures, appropriate algorithms for GPUs, GPU profiling.

6 Parallel Patterns

Design patterns for parallel and concurrent programming. Awareness of common sorting, numerical, image processing and searching and optimization algorithms and how they can benefit from parallelisation.

6

Design patterns for parallel and concurrent programming. Awareness of common sorting, numerical, image processing and searching and optimization algorithms and how they can benefit from parallelisation.

Teaching and Learning Work Loads

Teaching and Learning Method Hours
Lecture 14
Tutorial/Seminar 0
Practical Activity 28
Assessment 86
Independent 72
Total 200



Guidance notes

SCQF Level - The Scottish Credit and Qualifications Framework provides an indication of the complexity of award qualifications and associated learning and operates on an ascending numeric scale from Levels 1-12 with SCQF Level 10 equating to a Scottish undergraduate Honours degree.

Credit Value – The total value of SCQF credits for the module. 20 credits are the equivalent of 10 ECTS credits. A full-time student should normally register for 60 SCQF credits per semester.


Disclaimer

We make every effort to ensure that the information on our website is accurate but it is possible that some changes may occur prior to the academic year of entry. The modules listed in this catalogue are offered subject to availability during academic year 2021/22 , and may be subject to change for future years.