Computer Science MSc

MSc Computer Science
1 year full-time
Entry requirements
2:1 (or international equivalent) with evidence of an interest or aptitude for programming. Graduates from a science or engineering background will be considered with a 55% average mark.
6.5 (with no less than 6.0 in any element)

If these grades are not met, English preparatory courses are available
Start date
UK/EU fees
International fees
Jubilee Campus


This course is an ideal next step following a first degree in computer science subjects, covering the school's research strengths such as artificial intelligence, iterative systems and the mathematical foundations of programming.
Read full overview

This course is designed for those who have already completed a first degree in computer science or a related subject. The degree will prepare you a for highly skilled career in industry and/or research. 

HCI page

  • Benefit from our strong links with employers
  • Join a thriving postgraduate community
  • Study in a school ranked in the top ten for research power*

* Research Excellence Framework, 2014

Subjects taught within this course reflect the research strengths of the School of Computer Science, particularly in the mathematical foundations of programming, in automated scheduling and planning, in artificial intelligence, in human computer interaction, in modelling, and in interactive systems. The course aims to bring you to the forefront of research in these areas, equipping you to take leading roles in software and research development where the demands of reliability and efficiency are particularly important.


Academic English preparation and support

If you require additional support to take your language skills to the required level, you may be able to attend a presessional course at the Centre for English Language Education, which is accredited by the British Council for the teaching of English in the UK. Students who successfully complete the presessional course to the required level can progress to postgraduate study without retaking IELTS or equivalent. You could be eligible for a joint offer, which means you will only need to apply for your visa once.


Course details

The MSc in Computer Science is offered on a full-time basis over one year. The course comprises 180 credits, split across 120 credits’ worth of compulsory and optional modules and a 60-credit research project. 

The first semester provides a rigorous basis for the development of advanced software. The second semester gives the opportunity to specialise in an area close to the research strengths of the School. This specialisation is reinforced by the individual project completed over the summer months.



Semester one

You will take the following compulsory modules:


This module gives you a comprehensive overview of the principles of programming, including such concepts as 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. You will spend around five hours per week in lectures and computer classes studying for this module.


In both semesters, you will then have the option to take some of the following optional modules, making up 120 credits in total from taught modules:

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), and 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.

Advanced Computer Networks

This module will provide you with an advanced knowledge of computer communications networks, using examples from all-IP core telecommunications networks to illustrate aspects of transmission coding, error control, media access, internet protocols, routing, presentation coding, services and security. The module will describe Software Defined Networks (SDNs) and provide examples of using them to enable very large scale complex network control.

The module will provide an advanced knowledge of various routing and query protocols in: Ad Hoc Networks; Mobile Ad Hoc Networks (MANETs); Vehicular Ad Hoc Networks (VANETs); Disconnection/Disruption/Delay Tolerant Networks (DTNs); impact of new networking developments, such as security risks, ethics, interception and data protection will be reflected and discussed systematically. You will spend around three hours per week in lectures and one hour per week in computing classes.


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.

Computer Graphics

You will learn the principles of three-dimensional (3D) computer graphics, focusing on modelling, animating, and viewing objects/scenes in a virtual world on the computer, projecting objects/scenes onto the 2D screen in analogy to your taking a photograph of the 3D world using a camera, and rendering the objects/scenes to give them realism.

Through weekly lectures, tutorials and laboratory sessions you will explore various computer graphics techniques and you will develop your OpenGL programming skills required for 3D computer graphics applications. The module demonstrates the benefits of linking theory and practice.

Computer Vision

You will 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, recovery of three-dimensional shape and analysis of motion. You will learn how to implement some of these methods in the industry-standard programming environment MATLAB. You’ll spend around four hours a week in lectures, tutorial and laboratory sessions.

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.

Spending around 4 hours each week in lectures and computer classes, appropriate software (eg. Excel, R, Weka) will be used to illustrate the topics you will cover.

Design Ethnography

This module introduces you to the theory and practice of design ethnography. You will cover a range of topics including: origins and evolution of ethnography; foundations and nature of the ethnomethodological approach; ethnographic analysis; its relationship to systems design; and the perceived problems with the approach. You will spend around three hours each week in lectures and tutorials for this module.

Designing Intelligent Agents

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. Spending around four hours each week in lectures and tutorials, you will cover topics including task environments, reactive, deliberative and hybrid architectures for individual agents, and architectures and coordination mechanisms for multi-agent systems.

Foundations of Programming Mini-Project

The purpose of this module is to provide you with the opportunity to deepen your understanding of the mathematical foundations of programming languages by studying in depth a specific topic related to your course. You will discuss your topic with your supervisor, choosing from a list of proposed topics. You will be required to write a report on your chosen topic and give a presentation on its central aspects.

Fuzzy Sets and Fuzzy Logic Systems

This module aims to provide a thorough understanding of fuzzy sets and systems from a theoretical and practical perspective. Topics commonly include: type-1 fuzzy sets, type-1 fuzzy logic systems, type-1 fuzzy set based applications, type-2 fuzzy sets, type-2 fuzzy logic systems, type-2 fuzzy set based applications. You will also be exposed to some of the cutting-edge research topics in uncertain data and decision making, e.g., based on type-2 fuzzy logic as well as other fuzzy logic representations. You will develop practical systems and software in a suitable programming language.


This module covers the history, development and state-of-the art in computer games and technological entertainment. You will gain an appreciation of the range of gaming applications available and be able to chart their emergence as a prevalent form of entertainment.

You will study the fundamental principles of theoretical game design, and how these can be applied to a variety of modern computer games. You will study the development of games as complex software sytems. Specific software design issues to be considered will include the software architecture of games, and the technical issues associated with networked and multiplayer games.

You will use appropriate software environments to individually develop a number of games to explore relevant theoretical design and practical implementation concepts.

Introduction to Human Computer Interaction

This module aims to teach an understanding of people's interactions with technology and how to apply this knowledge in the design of usable interactive computer systems. The module will introduce the concept of usability and will examine different design approaches and evaluation methods. Specifically, this module will cover an understanding of different styles of interaction with technology, an analysis of user needs, design standards, low fidelity prototyping techniques and a comparison of evaluation techniques.

Introduction to Image Processing

This module introduces the field of digital image processing, a fundamental component of digital photography, television, computer graphics and computer vision. You will cover topics including: image processing and its applications; fundamentals of digital images; digital image processing theory and practice; and applications of image processing. You will spend around three hours in lectures and computer classes each week for this module.

Knowledge Representation and Reasoning

This module 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 will cover include: first order logic; resolution; description logic; default reasoning; rule-based systems; belief networks. You will have two hours of lectures each week for this module.

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 known as 'big data' science.

You will 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. You will spend around six hours each week in lectures and computer classes for this module.

Mathematical Foundations of Programming

This module focuses on some of the fundamental mathematical concepts that underlie modern programming and programming languages, including aspects of recent and current research. Example topics include: basic lambda calculus; operational semantics; types and type systems; and domain theory. You will spend around two hours per week in lectures studying for this module.

Mixed Reality Technologies

This module focuses on the possibilities and challenges of interaction beyond the desktop.  You will explore the 'mixed reality continuum' - a spectrum of emerging computing applications that runs from virtual reality (in which a user is immersed into a computer-generated virtual world) at one extreme, to ubiquitous computing (in which digital materials appear embedded into the everyday physical world - often referred to as the 'Internet of Things') at the other. In the middle of this continuum lie augmented reality and locative media, in which the digital appears to be overlaid upon the physical world in different ways.

You will gain knowledge and hands-on experience of design and development with key technologies along this continuum, including working with both ubiquitous computing based sensor systems and locative media. You will learn about the Human-Computer Interaction challenges that need to be considered when creating mixed reality applications along with strategies for addressing them, so as to create compelling and reliable user experiences.

Mobile Device Programming

You will look at the development of software applications for mobile devices, with a practical focus on the Android operating system. You will consider and use the software development environments for currently available platforms and the typical hardware architecture of mobile devices. You will spend around three hours per week in lectures and computer classes for this module.

Parallel and Distributed Computing

A simple sequential computer program effectively executes one instruction at a time on individual data items. Various strategies are used in CPU design to increase the speed of this basic model, but at the cost of CPU complexity and power-consumption. To further increase performance the task must be re-organised to explicitly execute on multiple processors and/or on multiple data items simultaneously.

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); and specialised co-processor programming (such as for GPUs).

Research Project

You will conduct a piece of empirical and/or theoretical research in an appropriate strand of the degree, under the supervision of a member of academic staff. Where appropriate, your project may also be conducted in conjunction with an external organisation and may or not involve a substantial software implementation.

Fundamentals of Artificial Intelligence

Through a two hour lecture once a week, this module gives you a broad overview of the fundamental theories and techniques of Artificial Intelligence (AI). You will explore how computers can produce intelligent behaviour, and will consider topics such as the history of AI, search techniques, data mining, machine learning, game playing techniques, neural networks, philosophical issues, and knowledge representation and reasoning.

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. You will spend five hours per week in lectures and computer classes for this module.

Software Engineering

You will be introduced to the concept of Software Engineering and will be taken through the software development process: deciding exactly what should be built (Requirements & Specification), designing how it should be built (Software Architecture), development strategies (Implementation & Testing), and maintaining change (Software Evolution and Maintenance).

Software Engineering Management

This module covers the following topics: management of the introduction of new software or IT systems; software project management practices; practical experience of use of an Agile software development project management process; practical experience of use of Test Driven Development, pair programming and various approaches to software management tools, including the use of software versioning, project management planning tools and continuous integration and deployment.


Over the summer period towards the end of the course, you will undertake a research project in computer science. This project involves conducting a piece of research with depth, carried out under the supervision of a member of academic staff.

The modules we offer are inspired by the research interests of our staff and as a result may change for reasons of, for example, research developments or legislation changes. This list is an example of typical modules we offer, not a definitive list.



UK/EU Students

See information on how to fund your masters, including our step-by-step guide. 

Government loans for masters courses

The Government offers postgraduate student loans for students studying a taught or research masters course. Applicants must ordinarily live in England or the EU. Student loans are also available for students from Wales, Northern Ireland and Scotland.

International and EU students

Masters scholarships are available for international students from a wide variety of countries and areas of study. You must already have an offer to study at Nottingham to apply. Please note closing dates to ensure your course application is submitted in good time.

Information and advice on funding your degree, living costs and working while you study is available on our website, as well as country-specific resources.



This course prepares its students for careers in advanced software development, particularly where reliability and efficiency are vital requirements. Its graduates are likely to assume leading roles in major software-development projects in one of the areas of specialisation. 

This course also provides an excellent foundation for further study and you may decide to progress to a PhD in order to continue your research.

Average starting salary and career progression

In 2017, 94.4% of postgraduates in the School of Computer Science who were available for employment had secured work or further study within six months of graduation. The average starting salary was £29,250 with the highest being £30,000.* 

*Known destinations of full-time home postgraduates 2016/17. Salaries are calculated based on the median of those in full-time paid employment within the UK. 

careers 450x200

Career Prospects and Employability

The University of Nottingham is consistently named as one of the most targeted universities by Britain’s leading graduate employers** and 
can offer you a head-start when it comes to your career. 

Those who take up a postgraduate research opportunity with us will not only receive support in terms of close contact with supervisors and 
specific training related to your area of research, you will also benefit from dedicated careers advice from our Careers and Employability Service

Our Careers and Employability Service offers a range of services including advice sessions, employer events, recruitment fairs and skills 
workshops – and once you have graduated, you will have access to the service for life.

** The Graduate Market 2013-2016, High Fliers Research.


Related courses

Explore it - Virtual Nottingham

This online prospectus has been drafted in advance of the academic year to which it applies. Every effort has been made to ensure that the information is accurate at the time of publishing, but changes (for example to course content) are likely to occur given the interval between publishing and commencement of the course. It is therefore very important to check this website for any updates before you apply for the course where there has been an interval between you reading this website and applying.

Get in touch
+44 (0)115 846 6550
Make an enquiry


Admissions and Communications Officer
School of Computer Science
The University of Nottingham
Jubilee Campus
Wollaton Road
Science videos

Science videos


Student Recruitment Enquiries Centre

The University of Nottingham
King's Meadow Campus
Lenton Lane
Nottingham, NG7 2NR

t: +44 (0) 115 951 5559
f: +44 (0) 115 951 5812
w: Frequently asked questions
Make an enquiry