Computer science modules
Students with a background in computer science take 60 credits from the following indicative list of computer science modules:
Machine Learning
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 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
- evaluating hypotheses
Knowledge Representation and Reasoning
This course examines how knowledge can be represented symbolically and how it can be manipulated in an automated way by reasoning programs. Some of the topics you'll cover include:
- first order logic
- resolution
- description logic
- default reasoning
- rule-based systems
- belief networks
Advanced Algorithms and Data Structures
We study the theory used in the design and analysis of advanced algorithms and data structures. The topics covered include:
- string algorithms (such as for string matching, longest common subsequence)
- graph algorithms (such as for minimum cuts and maximum flows)
- advanced data structures (such as Binomial heaps and Bloom filters)
The theory is practiced in weekly labs where we learn how to implement the algorithms and data structures as functional and imperative programs (using the languages Haskell and C), and apply these to solve large instances of real world problems.
Computer Vision
You'll examine current techniques for the extraction of useful information about a physical situation from individual and sets of images. You'll cover 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.
Simulation and Optimisation for Decision Support
This module offers insight into the applications of selected methods of decision support. The foundations for applying these methods are derived from Operations Research Simulation, Social Simulation, Data Science, Automated Scheduling, and Decision Analysis. Throughout the module, you will become more competent in choosing and implementing the appropriate method for the particular problem at hand.
Data Modelling and Analysis
This module will enable you to appreciate the range of data analysis problems that can be modelled computationally and a range of techniques that are suitable to analyse and solve those problems.
Topics covered include:
- basic statistics
- types of data
- data visualisation techniques
- data modelling
- data pre-processing methods including data imputation
- forecasting methods
- clustering and classification methods (decision trees, naīve bayes classifiers, k-nearest neighbours)
- data simulation and model interpretation techniques to aid decision support
Professional Ethics in Computing
The 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 accountability
Computability
You will begin by considering the attempts to characterise the problems that can theoretically be solved by physically possible computational processes, along with the practical implications. You will then consider the area of complexity theory, looking at whether or not problems can be solved under limitations on resources such as time or space.
You will examine the classes P and NP, and how to show problems are NP-complete. You will also consider other practically important classes such as PSPACE, and its relevance to adversarial games, ontologies, and the semantic web; and also complexity classes relevant to limitations of the effectiveness of parallel computation.
Parallel Computing
This module charts the broad spectrum of approaches that are used to increase the performance of computing tasks by exploiting parallelism and/or distributed computation. It then considers in more detail a number of contrasting examples. The course deals mainly with the principles involved, but there is the chance to experiment with some of these approaches in the supporting labs.
Topics covered include:
- common applications of parallel computing
- parallel machine architectures including Single Instruction Multiple Data (SIMD) or short-vector processing
- multi-core and multi-processor shared memory
- custom co-processors including DSPs and GPUs, and cluster and grid computing
- programming approaches including parallelising compilers
- explicit message-passing (such as MPI)
- specialised co-processor programming (such as for GPUs)
Advanced Algorithms and Data Structures can be taken as a 20 credit module that includes a group project or as a 10 credit module, without a group project.
Students without background in computer science must start with
Programming
This module gives you a comprehensive overview of the principles of programming, including such concepts as:
- procedural logic
- variables
- flow control
- input and output
- the analysis and design of programs
Instruction will be provided in an object-oriented programming language. You will spend around five hours per week in lectures and computer classes studying for this module.
then take 40 credits from the following:
Databases and Interfaces
This module considers both the structure of databases, including how to make them fast, efficient and reliable, and the appropriate user interfaces which will make them easy to interact with for users.
You will start by looking at how to design a database, gaining an understanding of the standard features that management systems provide and how you can best utilise them and then develop an interactive application to access your database.
Throughout the lectures and computing sessions you will learn how to design and implement systems using a standard database management system, web technologies and GUI interfaces through practical programming/system examples.
Data Modelling and Analysis
This module will enable you to appreciate the range of data analysis problems that can be modelled computationally and a range of techniques that are suitable to analyse and solve those problems. Topics covered include:
- basic statistics
- types of data
- data visualisation techniques
- data modelling
- data pre-processing methods including data imputation
- forecasting methods
- clustering and classification methods (decision trees, naīve bayes classifiers, k-nearest neighbours)
- data simulation
- model interpretation techniques to aid decision support
Computer Vision
You'll examine current techniques for the extraction of useful information about a physical situation from individual and sets of images. You'll cover 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.
Machine Learning
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 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
- evaluating hypotheses
Simulation and Optimisation for Decision Support
This module offers insight into the applications of selected methods of decision support. The foundations for applying these methods are derived from Operations Research Simulation, Social Simulation, Data Science, Automated Scheduling, and Decision Analysis. Throughout the module, you will become more competent in choosing and implementing the appropriate method for the particular problem at hand.
Mathematical sciences modules
Students without background in mathematical sciences start with
Statistical Foundations
In this module the fundamental principles and techniques underlying modern statistical and data analysis will be introduced. The module will cover a 'common core' consisting of:
- statistical concepts and methods
- linear models
- probability techniques
- Markov chains
Students will gain experience of using a statistical package and interpreting its output. The common core material will be covered primarily at the beginning of the semester.
then take 40 credits from the following:
Applied Statistical Modelling
This module extends the theoretical aspects of statistical inference by developing the theory of the generalised linear model and its practical implementation. Initially, designing of experiments in order to explore relationship between factors and a response is viewed within the context of Linear models.
The module then extends the understanding and application of statistical methodology established in previous courses to the analysis of discrete data and survival, which frequently occur in diverse applications. In the module students will be trained in the use of an appropriate high-level statistical package.
Applied Multivariate Statistics
This module is concerned with the analysis of multivariate data, in which the response is a vector of random variables rather than a single random variable. A theme running through the module is that of dimension reduction.
Key topics to be covered include:
- principal components analysis
- whose purpose is to identify the main modes of variation in a multivariate data set
- modelling and inference for multivariate data, including multivariate regression data, based on the multivariate normal distribution
- classification of observation vectors into subpopulations using a training sample
- canonical correlation analysis, whose purpose is to identify dependencies between two or more sets of random variables
Further topics to be covered include factor analysis, methods of clustering and multidimensional scaling.
Time Series and Forecasting
This module will provide a general introduction to the analysis of data that arise sequentially in time. Several commonly occurring models will be discussed and their properties derived. Methods for model identification for real time series data will be described. Techniques for estimating the parameters of a model, assessing its fit and forecasting future values will be developed. Students will gain experience of using a statistical package and interpreting its output.
The course will cover:
- concepts of stationary and non-stationary time-series
- philosophy of model building in the context of time series analysis
- simple time series models and their properties
- the model identification process
- estimation of parameters
- assessing the goodness of fit
- methods for forecasting
- use of a statistical package
Students with background in mathematical sciences start with
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.
then take 40 credits from the following:
Applied Multivariate Statistics
This module is concerned with the analysis of multivariate data, in which the response is a vector of random variables rather than a single random variable. A theme running through the module is that of dimension reduction.
Key topics to be covered include:
- principal components analysis
- whose purpose is to identify the main modes of variation in a multivariate dataset
- modelling and inference for multivariate data, including multivariate regression data, based on the multivariate normal distribution
- classification of observation vectors into subpopulations using a training sample
- canonical correlation analysis, whose purpose is to identify dependencies between two or more sets of random variables
Further topics to be covered include factor analysis, methods of clustering and multidimensional scaling.
Applied Statistical Modelling
This module extends the theoretical aspects of statistical inference by developing the theory of the generalised linear model and its practical implementation. Initially, designing of experiments in order to explore relationship between factors and a response is viewed within the context of Linear models.
The module then extends the understanding and application of statistical methodology established in previouscourses to the analysis of discrete data and survival, which frequently occur in diverse applications. In thecourse students will be trained in the use of an appropriate high-level statistical package.
Computational Statistics
The increase in speed and memory capacity of modern computers has dramatically changed their use and applicability for complex statistical analysis. This module explores how computers allow the easy implementation of standard, but computationally intensive, statistical methods and also explores their use in the solution of non-standard analytically intractable problems by innovative numerical methods.
Particular topics to be covered include a selection from simulation methods, Markov chain Monte Carlo methods, the bootstrap and nonparametric statistics, statistical image analysis, and wavelets. Students will gain experience of using a statistical package and interpreting its output.
Statistical Inference
This course is concerned with the two main theories of statistical inference, namely classical (frequentist) inference and Bayesian inference. The classical inference component of the module builds on the ideas of mathematical statistics.
Topics such as sufficiency, estimating equations, likelihood ratio tests and best-unbiased estimators are explored in detail.
There is special emphasis on the exponential family of distributions, which includes many standard distributions such as the normal, Poisson, binomial and gamma. In Bayesian inference, there are three basic ingredients: a prior distribution, a likelihood and a posterior distribution, which are linked by Bayes' theorem.
Inference is based on the posterior distribution, and topics including conjugacy, vague prior knowledge, marginal and predictive inference, decision theory, normal inverse gamma inference, and categorical data are pursued. Common concepts, such as likelihood and sufficiency, are used to link and contrast the two approaches to inference. You will gain experience of the theory and concepts underlying much contemporary research in statistical inference and methodology.
Time Series and Forecasting
This module will provide a general introduction to the analysis of data that arise sequentially in time. Several commonly occurring models will be discussed and their properties derived. Methods for model identification for real time series data will be described. Techniques for estimating the parameters of a model, assessing its fit and forecasting future values will be developed. Students will gain experience of using a statistical package and interpreting its output.
The course will cover:
- concepts of stationary and non-stationary time-series
- philosophy of model building in the context of time series analysis
- simple time series models and their properties
- the model identification process
- estimation of parameters
- assessing the goodness of fit
- methods for forecasting
- use of a statistical package
Note: you can't take both the Applied Statistical Modelling and the Statistical Inference modules.
Students who take a year-long module in Uncertainty Quantification or Computational Statistics will need to take 10 credits worth of computer science modules in both terms in order to achieve a 60:60 split of credits across two terms. Students are permitted to pursue maximum 70 and minimum 50 credits split across semesters if that provides them with a better suited selection of modules. Out of total of 180 credits at least 150 credits must come from level four modules.
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. Due to the passage of time between commencement of the course and subsequent years of the course, modules may change due to developments in the curriculum and information is provided for indicative purposes only.