The module descriptors for this programme can be found below.

Modules shown are for the current academic year and are subject to change depending on your year of entry.

Please note that the curriculum of this programme is currently being reviewed as part of a College-wide process to introduce a standardised modular structure. As a result, the content and assessment structures of this course may change for your year of entry. We therefore recommend that you check this course page before finalising your application and after submitting it as we will aim to update this page as soon as any changes are ratified by the College.

Find out more about the limited circumstances in which we may need to make changes to or in relation to our courses, the type of changes we may make and how we will tell you about changes we have made.

High-Performance Computing

Module aims

This module provides you with an introduction to parallel programming using C++, as well as covering the use of software engineering tools and best practices, such as debuggers, unit testing and version control.

Learning outcomes

On successfully completing this module, you should be able to:  1. Effectively use a profiler to optimise the performance of code; 2. Demonstrate understanding of how to use the BLAS and LAPACK routines by applying them to solve systems of equations numerically; 3. Appraise the advantages and disadvantages of shared and distributed memory parallelisation; 4. Formulate numerical algorithms using one or both of the parallelisation paradigms; 5. Use a job submission system to run codes on a modern HPC system. 

Module syllabus

Computer architecture and optimisation of C++ code. Use of development tools including debuggers, version control and profilers. Numerical linear algebra using BLAS and LAPACK. Shared memory and distributed memory parallel programming paradigms. Parallel programming using OpenMP. Parallel programming using the Message Passing Interface (MPI). Job submission on cluster computers.

Pre-requisites

Pre-sessional C++ material


 

Teaching methods

The module will be delivered primarily through in-class demonstrations introducing the key concepts and methods, supported by a variety of delivery methods combining the traditional and the technological. The content is presented via a combination of slides and demonstrations. Learning will be reinforced through hands-on computational lab sessions.  

Assessments

This module presents opportunities both for formative and summative assessment.  
You will be formatively assessed through computing tutorial problems. 
Additional opportunities are provided for you to self-assess your learning via programming exercises. 
Summative Assessment takes the form of in-class tests and a final piece of coursework at the end of the module. 

Assessment type

Assessment description

Weighting

Pass mark

Examination

In-class test

25%

50%

Coursework

Programming coursework

75%

50%

You will receive feedback both during the hands-on computing laboratory sessions and following the in-class progress tests and coursework submission.

You will receive feedback on your performance whilst undertaking tutorial exercises, during which you will also receive instruction on the correct solution to tutorial problems.

Further individual feedback will be available to you on request via this module’s online feedback forum, through staff office hours and discussions with tutors. 

Module leaders

Dr Chris Cantwell