Scientific Computing and Optimisation
This unit will bring together your previous experience of solving mathematical problems (optimisation, differential equations) and writing computer programmes using Python, Matlab, or Julia. The aim is to provide you with a suite of tools that can be used to transform real-world problems, such as those encountered in the Mathematical and Data Modelling units and final-year projects, into problems that can be efficiently solved on a computer.
Unit timetable
- Week 1: Finite differences and Euler’s method
- Week 2: ODE boundary value problems
- Week 3: Diffusion equations in 1D
- Week 4: First-order PDEs in 1D
- Week 5: The 2D Poisson equation
- Week 6: Reading week (no sessions)
- Week 7: Gradient-based optimisation
- Week 8: Gradient-free optimisation
- Week 9: Linear programming
- Week 10: Integer linear programming
- Week 11: Optimisation extras and coursework support
- Week 12: No sessions
Teaching sessions
- Monday 1200–1300 - demo and Q&A session - MVB 1.15
- Thursday 1300–1500 - lab session – MVB 1.15
- Friday 1300–1400 - drop-in (optional) - MVB 1.15
Software
You can code in Python, Matlab, or Julia. The choice is yours. However, some demos and examples will only be provided in one programming language.
Before the unit begins, please ensure that you have a functioning installation of your programming language of choice.
If you are coding in Python, then you will need the following packages:
- SciPy and NumPy
- Matplotlib
- memory_profiler
- Pyomo
- See installing Pyomo for more details
If you are coding in Matlab, then you will need the optimisation and global optimisation toolboxes.
If you are coding in Julia, then you will need the following packages:
- OrdinaryDiffEq.jl
- A plotting package (e.g., GLMakie.jl or Plots.jl)
- BenchmarkTools.jl
- JuMP.jl
- Also see modern Julia workflows
In Julia these can be installed from the REPL (compilation will take a few minutes):
import Pkg
Pkg.add(["OrdinaryDiffEq", "GLMakie", "BenchmarkTools", "JuMP"])Teaching staff
- Dr Matthew Hennessy (unit director): matthew.hennessy@bristol.ac.uk
- Prof David Barton (unit lecturer): david.barton@bristol.ac.uk
- Mr Jasper Knox (teaching assistant): wa20553@bristol.ac.uk