Machine Learning in Science - Part one
This module will provide an introduction to the main concepts and methods of machine learning. It will be taught via two classes per week, comprising topical discussions, concrete examples of machine learning in science and lectures on the statistical foundations of machine learning.
Machine Learning in Science - Part two
This module will cover more advanced topics of machine learning and neural networks following from Machine Learning in Science Part I.
Machine Learning in Science - Project
You will carry out a substantial investigation in the form of a research project on the application of the machine learning techniques learned as part of the course to a scientific problem.
The study will be largely self-directed, with oversight and input provided by a supervisor from the School of Physics and Astronomy, School of Computer Science or School of Mathematical Sciences. The topic will be chosen from a list of potential projects provided by the schools in the Faculty of Science. The topic could be based on a theoretical and/or computational investigation, a review of research literature, and/or a combination of the two.
Designing Intelligent Agents
In this module, you will be given a basic introduction to the analysis and design of intelligent agents, software systems which perceive their environment and act in that environment in pursuit of their goals. You will cover topics including task environments, reactive, deliberative and hybrid architectures for individual agents, and architectures and coordination mechanisms for multi-agent systems.
You will examine current techniques for the extraction of useful information about a physical situation from individual and sets of images. You will learn a range of methods and applications, with particular emphasis being placed on the detection and identification of objects, image segmentation, pose estimation, recovery of three-dimensional shape and analysis of motion. These problems will be approached with both traditional and modern computer vision approaches, including deep learning.
Professional Ethics in Computing
This module looks broadly into professional ethics within the scope of the computing discipline. It covers a range of professional, ethical, social and legal issues in order to study the impact that computer systems have in society and the implications of this from the perspective of the computing profession. In particular, the module covers topics such as introduction to ethics, critical thinking, professionalism, privacy, intellectual and intangible property, cyber-behaviour, safety, reliability and accountability, all within the context of computer systems development.
Introduction to Quantum Information Science
The paradigm of Quantum Information Science (QIS) is that quantum devices, made of systems such as atoms and photons, can out-perform the present-day technology in key applications ranging from computing power and communication security to precision measurements. Quantum information processing and the measurement and control of individual quantum systems are central topics in QIS, lying at the intersection of quantum mechanics with 'classical' disciplines such as information theory, probability, and statistics, computer science and control engineering.
The aim of this module is to provide an introduction to QIS, emphasising the differences and similarities between the classical and the quantum theories. After a short review of the necessary probabilistic notions, the first part introduces the operational framework of quantum theory involving the fundamental concepts of states, measurements, quantum channels, instruments. This includes some of the influential results in the field such as entanglement and quantum teleportation, Bell's theorem and the quantum no-cloning theorem. The second part covers at least two topics from quantum Markovian evolutions, quantum statistics, continuous variable systems.
The Physics of Deep Learning
This module will teach you how to think about artificial neural networks and deep learning from the point of view of physic. It will apply concepts and methods of statistical mechanics to deep learning problems. It will show how a physical science perspective allows you to understand better the workings of neural networks to make them more efficient and expand their range of applications.
The aim of this module is to teach you how neural processes can be understood in computational terms and how they can be analysed using mathematical and computational methods.
- biophysical and reduced models of neurons
- models of networks (eg Hopfield networks, ring-attractors and rate networks)
- models of synaptic plasticity and memory
- unsupervised learning
- neural coding
- visual system
- model fitting
In addition, this course offers three alternative strands/pathways which allow you to select different combinations of core and optional modules to meet your interests.
Strand one core modules:
Providing you with an introduction to machine learning, pattern recognition, and data mining techniques, this module will enable you to consider both systems which are able to develop their own rules from trial-and-error experience to solve problems, as well as systems that find patterns in data without any supervision. In the latter case, data mining techniques will make the generation of new knowledge possible, including very big data sets. This is now fashionably termed 'big data' science.
You'll cover a range of topics including:
- machine learning foundations
- pattern recognition foundations
- artificial neural networks
- deep learning
- applications of machine learning
- data mining techniques and evaluating hypotheses
Statistical Machine Learning
Machine Learning is a topic at the interface between statistics and computer science that concerns models that can adapt to and make predictions based on data.
This module builds on principles of statistical inference and linear regression to introduce a variety of methods of regression and classification, trade-off, and on methods to measure and compensate for overfitting. The learning approach is hands on, with students using R to tackle challenging real world machine learning problems.
Strand two core modules:
In this module, the fundamental principles and techniques underlying modern statistical and data analysis will be introduced. You will gain experience in using a statistical package and interpreting its output.The course will cover a 'common core' consisting of:
- statistical concepts and methods
- linear models
- probability techniques
- Markov chains
Fundamentals of Statistics
In this module you will explore the fundamental principles and techniques underlying modern statistical modelling and data analysis. The course will cover a 'common core' consisting of statistical concepts and methods, linear models, probability techniques and Markov chains. You will gain experience of using a statistical package and interpreting its output.
In addition, you will study more advanced material concerned with the two main theories of statistical inference, namely classical (frequentist) inference and Bayesian inference. Topics such as sufficiency and best-unbiased estimators are explored in detail. There is special emphasis on the exponential family of distributions. Topics in Bayesian inference include basic ingredients (prior, likelihood and posterior), conjugacy, vague peior knowledge, marginal and predictive inference, decision theory, normal inverse gamma inference, and categorical data.
Strand three core modules:
This module will give you a comprehensive overview of the principles of programming, including procedural logic, variables, flow control, input and output and the analysis and design of programs. Instruction will be provided in an object-oriented programming language.
Scientific Programming in Python
This module will introduce the Python programming language and its associated ecosystem, with a focus on the elements most applicable to scientific computing. You will begin by covering the essentials of pure Python, as well as installation, environment maintenance and version control issues. You will then introduce the 'numpy' module for efficiently dealing with array data, followed by plotting with 'matplotlib', and the various scientific tools in 'scipy7'.
The module will continue with a tour of various modules useful for different aspects of scientific programming, including data handling and analysis, symbolic mathematics, Monte Carlo sampling, tools for machine learning, and producing graphical and online interfaces.
Finally, you will cover areas of good software development, such as testing and profiling, as well as approaches for dealing with very large amounts of data or speed critical applications.
The above is a sample of the typical modules that we offer but is not intended to be construed and/or relied upon as a definitive list of the modules that will be available in any given year. This course page may be updated over the duration of the course, as modules may change due to developments in the curriculum or in the research interests of staff.
Teaching methods and assessment
This one-year course consists of 180 credits, split into 120 credits of taught modules during the autumn and spring semesters, and a 60-credit research project that is completed in the summer period.
Modules are delivered through lectures and problem classes. There are a wide range of core compulsory modules and optional modules, as well as three alternative strands which allow you to select core and optional modules in different combinations. This allows you to choose modules to fit your undergraduate background and personal interests.
During the summer period, you will concentrate on an independent research project which focuses on the application of machine learning methods, to original scientific problems provided by research groups from across the Faculty of Science. The project involves writing a dissertation and is supervised by a member of the academic staff.