On this page, written in 2018, I documented the existing and potential new courses in scientific computing for Oxford DPhils and others (e.g. postdocs).
One purpose was to assist in coordinating the provision of such training to the new CDTs which were being planned at that time. EPSRC had specifically highlighted the need for such training in the CDT Call document.
12 lectures in each of MT and HT
Term 1: Numerical Linear Algebra. Symmetric and nonsymmetric systems of equations, least-squares problems, eigenvalues, nonlinear systems and optimization. Sparse matrices: pre-conditioned conjugate gradients, GMRES and other Krylov subspace iterations; sparse direct methods. Applications.
Term 2: Differential Equations. Algorithms and software for ODE initial-value and boundary-value problems; computational nonlinear dynamics. Finite difference and spectral methods for steady-state and time dependent partial differential equations. Applications.
Note: currently taken by 50-60 MPLS DPhils and postdocs
1-week module, end of July
This is a 5-day hands-on course for students, postdocs, academics and others who want to learn how to develop applications to run on NVIDIA GPUs using the CUDA programming environment. All that will be assumed is some proficiency with C and basic C++ programming. No prior experience with parallel computing will be assumed.
The course consists of approximately 3 hours of lectures and 4 hours of practicals each day. The aim is that by the end of the course you will be able to write relatively simple programs and will be confident and able to continue learning through studying the examples provided by NVIDIA as part of their SDK (software development kit).
Note: currently taken by all AIMS and OxWaSP CDT DPhils and 15-25 others from Oxford and 20-30 from elsewhere; will move to Engineering Science in 2019.
1-day course (TT)
This is a hands-on course for students, postdocs and others who want to develop multithreaded vectorised codes to run on the latest CPUs which have multiple cores each with increasingly powerful vector units. All that will be assumed is some proficiency with C; no prior experience with parallel computing is needed.
The course consists of approximately 3.5 hours of lectures and 3 hours of practicals.
Note: this is a brand new course being developed primarily for DPhils.
1-week coursework module for 2nd-year undergrads (HT)
This is a 5-day coursework module for 2nd-year undergrads in Engineering Science. The course consists of approximately 3 hours of lectures and 4 hours of practicals each day.
Content: introduction to computer architectures, C and Linux; code repositories and advanced Linux; OpenMP multi-threading; introduction to CUDA programming for GPUs
Note: it may not be appropriate for DPhils to take this module, but the same material could be given separately to DPhils.
Cutting-edge techniques for working with large datasets and computational problems in chemistry and systems biology. Topics include the efficient parallelisation of calculations across local large computational clusters; the cost-effective use of cloud computing platforms and strategies for aggregating, managing, mining and visualising datasets. Areas taught by SGC, ARC, AWS and Evotec.
Computer architecture; "Hello World": compiling and running your first program; typed variables, numerical calculations and comparison operators; loops; arrays; Reading from the command line and type conversions; functions and subroutines; file I/O; multidimensional arrays and graphics; web design; Data structures; binary file I/O; & Programming Project: cellular automata, microarray image analysis, or automatic crystal detection.
C++ programming fundamentals (variables and expressions; input and output; flow of control; pointers and references; arrays; and functions). Object orientation in C++ (concept of a class; private, public and protected members; constructors; operator and function overloading; templates; and exceptions). Extra topics on software engineering, debugging and MATLAB Mex functions.
Revision of core mathematical techniques relevant to modelling in the life sciences, and basic introduction to scientific computing; stochastic simulation, and numerical solution techniques in continuous mathematics; programming in the MATLAB environment; Applications in the interface between the physical sciences and biology. First week: introduction to MATLAB and data analysis; Basic calculus in MATLAB; linear algebra; ordinary differential equations; GUIs and writing good programs; Second week: Mathematical modelling of different types such as static network models, stoichiometric networks and dynamic modelling of gene, metabolic and signalling systems. It will also discuss the number and types of "biological dials" that can be designed to modify gene circuits to specification. Third week: profiling your code; Speeding up your code; and group projects.