Skip to main content

CO923 Computational Methods for Complex Systems

Module Leader: Samuel Johnson (Mathematics and Complexity)


This is an option for the CDT in Mathematics of Real-World Systems taught programme.

Taken by students from:

Code Degree Title Year of study core or option credits
P-G1PG MSc in Mathematics of Systems




P-G1PF Mathematics of Systems MSc+PhD




P-F3P6/7 Erasmus Mundus Masters in Complex Systems




Module Aims

The module covers fundamental concepts of simulation of complex systems and numerical solution of related mathematical problems. It introduces several paradigms in the study of complexity, along with the methods used for their investigation and an overview of current research.


Basic numerical methods: systems of linear equations, solution of eigenvalue problems, matrix problems.

Introduction to Monte Carlo methods: ergodicity, detailed balance, the Ising model, uncertainty estimation.

Complex systems: emergence, self-organization, computational techniques.

Paradigms in complexity: cellular automata, percolation, self-organised criticality; applications to sociophysics, ecology and neuroscience.

Generation of complex networks: models, theorems, Monte Carlo algorithms.

Stability of networked dynamical systems.

PLEASE NOTE: This is NOT a programming module. Computer programming will NOT form a part of the material taught in class or assessed during the oral exam. Rather, this is a module about methods and algorithms. As such, it is assumed that all the students will have familiarity with some programming language and/or environment, which they will have to use for the coursework, which is computational in nature. The particular choice of the programming language (MATLAB, FORTRAN, C, Mathematica, etc.) is left entirely to the student and is completely irrelevant for the purposes of the module. Of course, the chosen programming language should still be fast enough to complete the assignments in time. The coursework will not be assessed based on the details of the code, but rather on the correctness of the results and on a short report explaining in detail the choices made for the implementation and their reasons.

Illustrative Bibliography:

W. H. Press et al., “Numerical recipes in C”, Cambridge University Press.

M. E. J. Newman and G. T. Barkema, “Monte Carlo methods in statistical physics”, Oxford University Press.

K. Huang, "Introduction to Statistical Physics", CRC Press.

P. L. Krapivsky, S Redner & E Ben-Naim, "A Kinetic View of Statistical Physics", Cambridge University Press.

J. H. Holland, "Complexity: A Very Short Introduction", Oxford University Press.

S. H. Strogatz, "Nonlinear Dynamics and Chaos", Westview Press.


Lectures per week

2 x 2 hours

Module duration

10 weeks

Total contact hours


Private study and group working


Place and time:

Mondays: 2-4pm in D1.07
Tuesdays: 3-5pm in B1.01Viva_timetable_2

Assessment information 2016/ 2017:

There will be two computational problems set during the course, each worth 25% of the final mark based on written reports of the results. The deadlines for these will be 1 February and 7 March.

In week 10 there will be an oral examination which will be worth 50% of the final mark.

Suggested papers as basis for Assignment 2: List 

Timetable for Assignment 2 presentations: Timetable

Viva date: 14 March 2017

Tentative viva schedule - updated!

Viva topics

Slides from past lectures:

Introduction to Complexity

Cellular automata

Statistical Physics and Monte Carlo methods 

Criticality and the Ising model

Self-organised criticality

Introduction to complex networks

Neuroscience and the Hopfield model

Neural network dynamics 



Evolution and genetic algorithms 

Stochastic optimization


C elegans networks:

C elegans neural network

C elegans metabolic network

Gene regulatory networks:

Human (healthy)

Human (cancer)

Food webs:


Weddell Sea