List of the lecture courses currently offered by the MPhil in Scientific Computing. Please note: courses denoted by (E) are assessed by written examination papers. The code at the end of the lecture name represents the term and the number of lectures, i.e. [M10] = Michaelmas term, 10 lectures.

### Electronic structure and DFT [M10] (E)

Lecturer: Prof. Emilio Artacho Fundamentals and main approximations of DFT ( Density Functional Theory Calculations)-based electronic structure; students should leave the course knowing: how to run DFT calculations from a pre-existing programme; how to converge the results with respect to technical...

### Atomistic Modelling of Materials [M24] (E)

Lecturer: Dr Edgar Engel This course gives an introduction to the atomistic simulation of materials using classical molecular dynamics and Monte Carlo techniques, and consists of a series of lectures with associated examples classes and computing classes in which both the theoretical and practical...

### Introduction to topological materials [M12] (E)

Lecturer: Dr Bartomeu Monserrat Introduction to tight binding theory for simulating material properties with applications to topological materials. Lectures: Tight binding theory SSH model I SSH model II Berry phases I Berry phases II Tight binding graphene Haldane model I Haldane model II Haldanem...

### Computational Continuum Modelling (i) [M12] (E)

Dr Nikos Nikiforakis (12 hours) a) Governing equations for gases and fluids Conservation laws for mass, momentum and energy – integral and PDE form Introduction to compressible and incompressible forms Simple equations of state - ideal and stiffened `gases' Riemann problems Introduction to...

### Advanced computational algorithms for PDEs [M12]

Visiting Lecturer: Professor Eleuterio Toro Professor Emeritus of Mathematics, University of Trento, Italy Website: eleuteriotoro.com Email: eleuterio.toro@unitn.it Course aim To present a selection of topics on advanced methodologies for solving evolutionary advection-diffusion-reaction partial...

### Computational Continuum Modelling (ii) [M12] (E)

Lecturer: Dr Hrvoje Jasak This course consists of 12 hours or lectures and two practical sessions. Lectures: 1. Governing equations: Transport equations in continuum mechanics: Overview of the basic equations: scalar transport equation, conservation laws. Basics of the discretisation method and...

### Introduction to Computational Multiphysics [M12] (E)

Dr. Stephen Millmore (12 hours) a) Material interfaces b) Coupling Challenges due to different equations of state Advantages and disadvantages of diffuse and discrete interfaces c) Diffused interface methods Five/seven equation approaches Mixture rules and the effect on sound speed d) Tracked...

### Advanced Continuum Modelling (i) [M12] (E)

Dr. Stephen Millmore (12 hours) a) Advanced equations of state Reactive equations of state Advanced solid equations of state (e.g. Romenskii) Tabulated equations of state, including plasma b) Advanced fluid topics Plasma modelling - reduced magnetohydrodynamics equations Cavitation (and other phase...

### Scientific Programming in C++ [M12]

This course will introduce students to C++ as a language widely used in scientific computing. The course will cover most aspects of C++ to an intermediate level, with the aim being to teach students sufficient C++ to program non-trivial algorithms in a robust and efficient manner. The course should...

### Foundation Course in QM and solid state physics [M10]

A brief self-contained pedestrian guide to QM starting from scratch, Bloch theorem and Bloch functions. This is very basic, adequate for people with a background not quite in physics or chemistry (materials, engineering, bio, geo etc). The course will include a practical exercise (mini-project)...

### Software Design [M6]

This covers the basic principles of practical software engineering that are important for reliable and efficient scientific software. The topics will include: Computer arithmetic (integer and floating-point) Arithmetic exceptions, error handling and accuracy Principles of program design Coding...

### Message Passing Interface [M16]

This introduces parallel programming using distributed memory message-passing and the MPI (Message Passing Interface) standard. It covers the properties of the computing model, and the basic facilities of the MPI standard. No prior knowledge of parallel programming is assumed. The goal is to teach...

### Programming with GPUs [M6]

This course will introduce students to the principles of writing scientific software for the latest graphics cards, taking advantage of the highly-parallel nature of the hardware to attain significant speed-ups as compared to traditional CPUs. The course will begin by covering the hardware...

### OpenMP [M12]

This is an introduction to using OpenMP for writing parallel programs to run on multi-CPU (SMP) systems, for the purposes of "high-performance computing" (i.e. running programs faster than they can on a single CPU core). It covers all of the principles of OpenMP, and teach the use of all of the...

### Introduction to Linux [M4]

GNU/Linux is the operating system of choice in most scientific research environments. In this course we cover the following topics: Basics of Linux command-line usage, file-handling, and shell-scripting. Compilation, libraries, and linking, and Makefiles Version Control - Subversion and Git...

### Advanced Continuum Modelling (ii) [M12]

Dr Hrvoje Jasak Introduction to continuum mechanics models beyond single-phase fluid flow. Models are expressed as sets of coupled partial differential equations, cover- ing multi-physics applications. The solution algorithm part of the course will cover implicit solution methods of sparse linear...

### Data Visualisation Techniques [M4]

This course covers data visualisation techniques with examples in Gnuplot and VisIt. The first two lectures cover general visualisation requirements, for presenting high-quality data, with a focus on the representation of one-dimensional data and simple two-dimensional data cases. Examples are...