Skip to main content

Unit information: High Performance Computing (Teaching Unit) in 2023/24

Unit name High Performance Computing (Teaching Unit)
Unit code COMS30053
Credit points 0
Level of study H/6
Teaching block(s) Teaching Block 2 (weeks 13 - 24)
Unit director Professor. McIntosh-Smith
Open unit status Not open
Units you must take before you take this one (pre-requisite units)

COMS10016 Imperative and Functional Programming and COMS10017 Object-Oriented Programming and Algorithms I or equivalent.

COMS10015 Computer Architecture or equivalent.

COMS20007 Programming Languages and Computation or equivalent.

COMS20008 Computer Systems A and COMS20012 Computer Systems B or equivalent.

COMS20010 Algorithms II or equivalent.

Strong programming skills, experience with the C programming language, good knowledge of computer architecture.

Units you must take alongside this one (co-requisite units)

EITHER Undergraduate Year 3 must choose Assessment Unit High Performance Computing

OR M-Level students must choose Assessment Unit High Performance Computing.

Please note, COMS30053 is the Teaching Unit for High Performance Computing. Students can take this unit in either their third or fourth year, and must also choose the Assessment Unit for their year group.

Units you may not take alongside this one
School/department School of Computer Science
Faculty Faculty of Engineering

Unit Information

The aim of this unit is to introduce and explore exciting technologies relating to high performance computing, and to offer practical hands-on use of and experience with said technologies. Students completing the unit will have learned how to develop fast, efficient applications on the very latest advanced processors, including many-core CPUs and GPUs. Students should also have had an opportunity to integrate content from other units in the programme, for example implementing high performance parallel versions of algorithms previously encountered.

Students will be exposed to the underlying trends in computer hardware that are driving development towards massive parallelism in hardware and software. They will employ widely used parallel programming languages and tools, such as OpenMP, MPI, OpenCL, debuggers and profilers, all in the context of a real supercomputer environment: the university’s multi million pound Blue Crystal cluster.

Your learning on this unit

On successful completion of this unit, students will be able to:

  1. Understand state-of-the-art high performance computing technologies, and select the right one for a given task.
  2. Utilise said technologies through appropriate programming interfaces (e.g., specialist languages, additions to standard languages or via libraries or compiler assistance).
  3. Analyse, implement, debug and profile high performance algorithms as realised in software.
  4. Understand how to optimise serial code on modern high-performance processors.
  5. Understand shared memory multi-core parallelisation through approaches such as OpenMP
  6. Develop massively parallel applications using the message passing parallel programming paradigm through the use of APIs such as MPI.
  7. Use software tools, such as debuggers, profilers etc.
  8. Use cutting-edge parallel hardware, such as many-core CPUs and GPUs.

In addition, students taking the unit at M-level will be able to:

  1. Understand advanced parallel programming approaches, such as parallel dialects of C++ (Kokkos, SYCL), and parallel tasking frameworks such as TBB, OpenMP 4.5 and HPX.
  2. Develop heterogeneous parallel programs, employing more than one type of processor at once.

How you will learn

Teaching will be delivered through a combination of synchronous and asynchronous sessions, including lectures, practical activities and self-directed exercises.

How you will be assessed

Coursework (100%) at appropriate levels for Year 3 and M-level students.


If this unit has a Resource List, you will normally find a link to it in the Blackboard area for the unit. Sometimes there will be a separate link for each weekly topic.

If you are unable to access a list through Blackboard, you can also find it via the Resource Lists homepage. Search for the list by the unit name or code (e.g. COMS30053).

How much time the unit requires
Each credit equates to 10 hours of total student input. For example a 20 credit unit will take you 200 hours of study to complete. Your total learning time is made up of contact time, directed learning tasks, independent learning and assessment activity.

See the University Workload statement relating to this unit for more information.

The Board of Examiners will consider all cases where students have failed or not completed the assessments required for credit. The Board considers each student's outcomes across all the units which contribute to each year's programme of study. For appropriate assessments, if you have self-certificated your absence, you will normally be required to complete it the next time it runs (for assessments at the end of TB1 and TB2 this is usually in the next re-assessment period).
The Board of Examiners will take into account any exceptional circumstances and operates within the Regulations and Code of Practice for Taught Programmes.