Our course finder pages contain all the most up-to-date information about the Network Science MSc, including details of the programme structure, compulsory and elective modules and study options.

Below is a full list of all modules which are expected to be available to students on this programme across the semesters. Please note that this is for information only and may be subject to change. Click the link above for accurate information about which of these modules are compulsory and elective for each semester of your MSc programme. Modules with codes beginning MTH are taught by the School of Mathematical Sciences (SMS). Modules with codes beginning ECS are taught by the School of Electronic Engineering and Computer Science (EECS).

An MSc taught module typically comprises 24 hours of lectures and 12 hours of tutorials, given during one of the two 12-week teaching semesters. You must also submit a project dissertation, which is completed during the summer - see the module description below for more details.

Modules are assessed by a mixture of in-term assessment and final examinations, which are held between late April and early June.

Complex systems can be defined as systems involving many coupled units whose collective behaviour is more than the sum of the behaviour of each unit. Examples of such systems include coupled dynamical systems, fluids, transport or biological networks, interacting particle systems, etc. The aim of this module is to introduce students to a number of mathematical tools and models used to study complex systems and to explain the mathematical meaning of key concepts of complexity science, such as self-similarity, emergence, and self-organisation. The exact topics covered will depend on the module organiser's expertise with a view to cover practical applications using analytical and numerical tools drawn from other applied modules.

Topics include:

- Introduction to the field of complex systems via a number of representative examples and models of these systems (e.g., coupled dynamical systems, time-delayed systems, stochastic processes, networks, time series, fractals, multifractals, particle models).
- Introduction to basic tools and quantities used in the study of complex systems (e.g., bifurcation diagram, symbolic dynamics, dimensions, Lyapunov exponents, complexity measures, entropies).
- Introduction to the concepts of emergence and self-organisation in the context of basic models of complex models.
- Introduction to basic computational and numerical methods used to study complex systems.

This module introduces modern methods of statistical inference for small samples, which use computational methods of analysis, rather than asymptotic theory. Some of these methods such as permutation tests and bootstrapping, are now used regularly in modern business, finance and science.

Topics include:

The techniques developed will be applied to a range of problems arising in business, economics, industry and science. Data analysis will be carried out using the user-friendly, but comprehensive, statistics package R.

- Probability density functions: the empirical cdf; q-q plots; histogram estimation; kernel density estimation.
- Nonparametric tests: permutation tests; randomization tests; link to standard methods; rank tests.
- Data splitting: the jackknife; bias estimation; cross-validation; model selection.
- Bootstrapping: the parametric bootstrap; the simple bootstrap; the smoothed bootstrap; the balanced bootstrap; bias estimation; bootstrap confidence intervals; the bivariate bootstrap; bootstrapping linear models.

The aim of this module is to provide a practical understanding of the use of data mining for decision making. The module will cover the classes of algorithms and models and how an appropriate algorithm is chosen for a given task. The evaluation and interpretation of results and the limitation of methods will be emphasised. Topics are likely to include: a taxonomy of problems: classification, pattern recognition and association and of learning types: supervised versus unsupervised; clustering algorithms. Knowledge representations such as regression, decision trees, association rules, bayesian networks; evaluation techniques: cross validation, performance metrics; social impact, ethics and the law.

This module is an introduction to databases and their language systems in theory and practice.The main topics covered by the course are:

- The principles and components of database management systems.
- The main modelling techniques used in the construction of database systems.
- Implementation of databases using an object-relational database management system.
- SQL, the main relational database language.
- Object-Oriented database systems.
- Future trends, in particular information retrieval and data warehouses

The main aims of the module are:

- To give an understanding of the purpose, features and facilities of database management systems.
- To give an understanding of the various database models, and their interrelationships.
- To give an understanding of, and practical experience of using the relational database language SQL.

Online social networks and digital media services such as Facebook, twitter, Flickr, YouTube are changing the way we interact with the Internet and receive our news, content and recommendations. In this module, I aim to introduce the concepts around measurement, analysis, usability and privacy aspects of OSNs. The module will bring together a number of studies from different measurement studies on the topic, designs for new systems, and the directions that such networks are taking with the new digital media plans. This module will develop a deep understanding and analysis approach to learning specifically about Social Media and their properties.

Topics include:

- Introduction to Online Social Networks (OSN)
- Characteristics of OSNs
- Basic Graph Theory
- Small World Phenomenon
- Information propagation on OSNs
- Influence and Content Recommendation
- Sentiment Analysis in Social Media
- Privacy and ethics

A dynamical system is any system which evolves over time according to some pre-determined rule. The goal of dynamical systems theory is to understand this evolution. This module develops the theory of dynamical systems systematically, starting with first-order differential equations and their bifurcations, followed by phase plane analysis, limit cycles and their bifurcations, and culminating with the Lorenz equations and chaos. Much emphasis is placed on applications.

Topics include:

- First-order differential equations (one-dimensional flows): linear and nonlinear equations, graphical solutions, bifurcations.
- Two-dimensional flows: phase plane, stability of fixed points, periodic solutions, and limit cycles. Introduction to bifurcation theory, local and global bifurcations. Tools for studying global behavior of flows: Lyapunov functions, Poincare-Bendixson Theorem, gradient flows.
- Three-dimensional flows: Lyapunov exponents, Poincare sections, strange attractors, chaos.

This module addresses one of the most important “hot topics” in mathematics research – the study of networks – and is essential for understanding the characteristics and universal structural properties of complex networks. Complex networks are the outcome usually of a stochastic dynamics but they are not completely random. You will learn how to disentangle randomness from structural organisational principles of complex networks and how several major types of complex network can be described and artificially generated by mathematical models. Networks characterise the underlying structure of a large variety of complex systems, from the Internet to social networks and the brain. This course is designed to teach students the mathematical language needed to describe complex networks, their basic properties and dynamics. The broad aim is to provide students with the key skills required fundamental research in complex networks, and necessary for application of network theory to specific network problems arising in academic or industrial environments. The students will acquire experience in solving problems related to complex networks and will learn the necessary language to formulate models of network-embedded systems.

Topics include:

- Basic concepts used in studying complex networks (e.g. adjacency matrices, degree distributions and correlations, graph distances)
- Basic tools used to study complex networks (e.g. connected components,
*k*-cores, communities, motifs, centrality measures) - Models for complex networks: the small world, the growing networks models and the configuration model

This course covers methods for machine learning from signals and data, including statistical pattern recognition methods, neural networks, and clustering. The aim of the course is to give students an understanding of machine learning methods, including pattern recognition, clustering and neural networks, and to allow them to apply such methods in a range of areas.

Topics include:

- Introduction to Machine Learning
- Probability and Random Variables
- Neural Networks
- Statistical Inference
- Clustering
- Hidden Markov Models
- Independent Component Analysis
- Applications

This course aims at providing students with Machine Learning skills based on the Python programming language as it is currently used in industry. Some of the presented methods are regression and classification techniques (linear and logistic regression, least-square); clustering; dimensionality reduction techniques such as PCA, SVD and matrix factorization. More advanced methods such as generalized linear models, neural networks and Bayesian inference using graphical models are also introduced. The course is self-contained in terms of the necessary mathematical tools (mostly probability) and coding techniques. At the end of the course, students will be able to formalize a ML task, choose the appropriate method in order to tackle it while being able to assess its performance, and to implement these algorithms in Python.

Topics include:

- Basic probability, statistical inference and optimisation concepts
- Python coding
- Data cleaning, processing and interpretation
- Understanding of the canonical machine learning algorithms
- Scientific report writing (in Latex)

This module addresses one of the most important topics in network theory: the study of dynamical processes taking place on networks. This module is essential for understanding the rich interplay between structure and dynamics in complex networks. The dynamical processes considered in this module have important applications and implications for real systems. For instance percolation on scale-free networks is crucial for understanding the robustness of many networks ranging from infrastructures and technological systems to the network in the cell. Similarly epidemic spreading is important to devise strategies to contain influenza spreading but also to model the spread of ideas and behaviour.

Topics include:

- Robustness of networks to random damage
- Robustness of networks to targeted attack
- Avalanches in complex networks
- Ising model and opinion dynamics
- Epidemic spreading processes on complex network (SIS and SIR)
- Random walks on complex networks

This module is designed to provide students with the skills and expertise to access, read and understand research literature in a wide range of mathematics and its applications. In addition, students will gain the necessary background for delivering efficient and professional oral presentations, poster presentations and scientific writing. Finally, the course is aimed to constitute a guide as well as a first training in research oriented tools and careers.

This module aims to:

- provide students with a set of core skills as an introduction to their project work;
- equip students with information retrieval skills (literature review), report writing skills, use of scientific and mathematical word processing, and presentation skills;
- equip students to identify an intended research question in the scientific literature, and begin to formulate their own;
- give students an overview of topics of current research in mathematics;
- give a more in-depth understanding of a specific research area.

This module focuses on the use of computers for solving applied mathematical problems. Its aim is to provide students with proper computational tools to solve problems they are likely to encounter during the MSc, and to provide them with a sound understanding of a programming language used in applied sciences. The topics covered will include basics of scientific programming, numerical solution of ordinary differential equations, random numbers and Monte Carlo methods, simulation of stochastic processes, algorithms for complex networks analysis and modelling. The emphasis of the module would be on numerical aspects of mathematical problems, with a focus on applications rather than theory.

Topics include:

- The use of computers for solving applied mathematical problems
- Proper computational tools to solve problems likely to be encountered during the MSc
- Training in a programming language used in applied sciences

This module introduces you to some of the key technologies that are widely used for developing software applications in the financial markets and banking sectors. In particular, we focus on three programming environments/languages (Excel, VBA and C++) which are often used in conjunction to build complete trading and risk management systems. It is a highly practical module, focusing on current industry practice, and therefore you will be well equipped to apply for a programming role in a financial institution.

Topics include:

- Overview of typical requirements for trading and risk management systems
- Introduction to Microsoft Excel, and its use as a ‘front end’ for applications
- Fundamentals of programming in VBA (Microsoft Visual Basic for Applications)
- Manipulating Excel from VBA, the Excel object model
- Review of C++, generation of dynamically-linked libraries (DLLs) used as ‘back ends’ containing computation analytics
- Complete system development (Excel/VBA/C++) of a derivatives pricing tool
- Review of other technologies used in practice, including Java, COM, Python, .NET, C#, F#