Description
Aims:
In this module, you will learn how to create effective, reliable, fast C++ for numerically intensive research.
The module aims to:
- Prepare students to write well-engineered, reliable, tested C+.
- Build familiarity with tools, libraries and techniques used in research computing.ÌýÌýÌý
- Prepare students to use high-performance parallel research computing platforms.
Intended learning outcomes:
On successful completion of the module, a student will be able to:
- Understand the role of C++ in programming for research
- Setup a C++ project using modern build tools (e.g., CMake) and unit testing frameworks (e.g., Catch2).
- Write safe, extensible, performant C++17 using templates, object-oriented design, programming patterns and other modern techniques and language features
- Understand current C++ good practices and the balance between various aspects of code quality
- Utilise the C++ standard library.
- Write effective unit tests.
- Effectively use C++ tooling: pre-processors, compilers, linkers, debuggers, linters and profilers.
- Import and use libraries using modern C++ package managers and build systems.
- Profile and optimise C++ code for performance.
- Write parallel code targeting multi-core CPUs using OpenMP, and multi-node distributed systems using MPI.
Indicative content:
The following are indicative of the topics the module will typically cover:
- Developing a C++ project.
- Modern C++.
- Libraries in C++.
- C++ tooling.
- Performance profiling and optimisation.
- Parallel programming with OpenMP and MPI.
Requisites:
To select the module as an optional or elective, a student must: (1) be registered on a programme on which it is formally available; (2) be familiar with common programming concepts in any compiled language (e.g., be able to create variables, distinguish between different data types, implement control flows blocks, etc); and (3) understand running programs from the command line.
Module deliveries for 2024/25 academic year
Last updated
This module description was last updated on 19th August 2024.
Ìý