# Core02: Scientific Computing - Archived material for the year 2019-2020

## Primary tabs

This course will address some important aspects of scientific computing, largely through the lens of Matlab, a programming environment designed specifically for numerical mathematical modelling. A crash course in the essentials of programming in Matlab will be followed by its application to fundamental numerical topics including linear algebra, differential equations and optimization. These applications will involve exploring various inbuilt solvers and toolboxes. Other aspects of scientific computing will then be explored, including the public sharing of code, documentation, demos, parallel computing and GPUs. There will be a final group programming task which will be an opportunity to explore issues around developing code in teams for industry.

Introduction to programming in Matlab: The Matlab work environment; variables and basic mathematical functions; arrays (manipulation and indexing); function handles; their use in numerical equation solving, finding stationary points, root finding, numerical integration and graph plotting; logical operations, m-files and functions; sparse matrices; advantages of sparse matrices and implicit matrix-vector products.

Applications of programming in Matlab: linear algebra; solving systems of linear equations; SVD and eigen-decomposition; image compression; numerical solution of ODEs; optimization.

Aspects of scientific computing: using external code; Matlab Central; exploring documentation and demos; sharing code publicly; using remote servers, parallel computing and GPUs.

Developing software as a team: image classification group task.

T. Davis, Matlab Primer, 8th edition, CRC Press, 2010

*Please note that e-book versions of many books in the reading lists can be found on SOLO and ORLO.*