Skip to main content

Taught modules

COMP3577 · Parallel Scientific Computing I

This introductory course teaches fundamentals of scientific computing and the numerical solution of problems in science and engineering.

It covers numerical stability and integration of ordinary differential equations with a focus on the use of parallel programming techniques and the development of understanding of appropriate parallelisation schemes.

COMP3547 · Deep Learning and Reinforcement Learning

Deep Learning focuses on statistical learning theory and high-dimensional differentiable geometry to develop modern neural networks that generalise. It covers principles to build and train deep generative models and discriminative models with PyTorch.

Reinforcement learning covers foundations from dynamic programming, Monte Carlo methods, and temporal-difference learning to train agents in non-iid environments. These maximise future rewards such as to learn to play games or control robots in OpenAI Gym.

COMP4187 · Parallel Scientific Computing II

The follow-on from COMP3577, this course introduces discretisation techniques for partial differential equations along with implicit ODE solvers. The focus is on algorithmically optimal methods, and we introduce multigrid approaches for scalar elliptic equations.

In tandem, the course covers programming paradigms for massively parallel, distributed memory architectures, and efficient data structures for the implementation of parallel PDE solvers.

PHYS52015 · Introduction to High Performance Computing

This course, part of the MISCADA MSc provides an introduction to the dominant programming paradigms in high performance scientific computing. Taken as a core course by all MISCADA students, and also available to graduate students across the University.

The course covers OpenMP and MPI programming in C, and introduces the concepts and tools needed to write and run parallel programs efficiently.

COMP52315 · Performance Engineering

COMP52315 Performance Modelling, Vectorisation and GPU Programming This course is an optional course in MISCADA, and covers performance analysis, modelling and engineering for scientific computing.
It equips students to answer the question “Given some code, which I would like to run faster, how do I know what to do?”.
The module outlines the differences between CPU and GPUs architectures and covers parallel programming skills for heterogenous hardware with SIMD intrinsics, CUDA, OpenMP and SYCL.