MSc Advanced Computer Science


Start date: 24 September 2018 (intro week starts 17 September 2018)
Duration: 12 Months full time
Programme code: COMT123

Apply now

Image: Advanced Computer ScienceThe MSc in Advanced Computer Science is suited to graduates in Computer Science and related disciplines, such as Software Engineering or Computing and Mathematics, who wish to complete their academic profile in specialist areas, and study in a research-led teaching environment. The programme provides students with an education in leading-edge aspects of computer science, and offers a wide range of elective modules that are informed by the department's research interests.

Why Advanced Computer Science at Sheffield?

  • Specialist cutting-edge modules taught by academics working in our internationally leading research groups
  • Access to a dedicated employability team
  • The Department of Computer Science is 5th in the UK for Research Excellence (REF 2014)
  • 94% National Student Satisfaction ranking

The programme consists of two semesters of taught modules and a dissertation project, which is completed during the summer. In the autumn semester there is a fast-paced introduction to object oriented programming and software development. In both semesters, students choose from a range of other modules in areas covering foundational topics in computer science as well as application areas including 3D graphics, software development for mobile devices, and computer security and forensics.

Please note that the course details set out here may change before you start, particularly if you are applying significantly in advance of the course start date.

Core Modules

Object Oriented Programming and Software Design

This module presents the object-oriented approach to building large software systems from components in the Java Programming Language. Large scale program design and implementation issues are covered, using the Java Application Programmer's Interface, including the AWT, Swing and the Java Collections Framework. Topics include: data and procedural abstraction, collection interfaces and implementations, the event-driven model of computation, user interface components, streams and files, documentation styles with the Unified Modelling Language (UML).

Research Methods and Professional Issues

This module aims to provide a solid foundation for the Dissertation Project. Students receive instruction both through taught lectures, and from their project tutors on an individual weekly basis, including: advice on research methods and technical writing style; risk analysis and contingency planning; peer-review processes; and the details of working within a professional, legal and ethical framework. The module is assessed on the basis of a project background report, which is submitted at the end of the spring semester, and on additional peer-review activities.

Machine Learning and Adaptive Intelligence The module is about core technologies underpinning modern artificial intelligence. The module will introduce statistical machine learning and probabilistic modelling and their application to describing real world phenomena. The module will give students a grounding in modern state of the art algorithms that allow modern computer systems to learn from data.
Team Software Project This team project aims to provide insights and wider context for the more practical aspects of the taught modules, and to provide students with experience of working in teams to develop a substantial piece of software
Dissertation Project

This is a research led project that is supervised by a member of staff. In order to ensure best use of the summer study period, project preparation and planning is carried out in semester 2, which is separately assessed. Project activities take place during the summer period using Departmental facilities and students are exposed to the latest methods and ideas in the area of their project. There is scope for students to demonstrate their critical skills and topic-related knowledge to a high level.

Optional Modules

You will have the option to choose from a number of modules which occur over both semesters. You can select modules from the different themes which are listed below.

Human Computer Interaction
Speech Processing

This module aims to demonstrate why computer speech processing is an important and difficult problem, to investigate the representation of speech in the articulatory, acoustic and auditory domains, and to illustrate computational approaches to speech parameter extraction. It examines both the production and perception of speech, taking a multi-disciplinary approach (drawing on linguistics, phonetics, psychoacoustics, etc.). It introduces sufficient digital signal processing (linear systems theory, Fourier transforms) to motivate speech parameter extraction techniques (e.g. pitch and formant tracking).

Speech Technology

This module introduces the principles of the emergent field of speech technology, studies typical applications of these principles and assesses the state of the art in this area. Students will learn the prevailing techniques of automatic speech recognition (based on statistical modelling); will see how speech synthesis and text-to-speech methods are deployed in spoken language systems; and will discuss the current limitations of such devices. The module will include project work involving the implementation and assessment of a speech technology device.

Text Processing

This module introduces fundamental concepts and ideas in natural language text processing, covers techniques for handling text corpora, and examines representative systems that require the automated processing of large volumes of text. The course focuses on modern quantitative techniques for text analysis and explores important models for representing and acquiring information from texts.

Natural Language Processing

This module provides an introduction to the field of computer processing of written natural language, known as Natural Language Processing (NLP). We will cover standard theories, models and algorithms, discussing competing solutions to problems, describing example systems and applications, and highlighting areas of open research.

3D Computer Graphics

This module is an introduction to the techniques used in modern 3D computer graphics. It deals with fundamental techniques that are the basis of work in the entertainment and computer-aided design industries and in scientific visualisation. Both basic and advanced topics concerned with the production of images of 3D objects are covered in sufficient detail to enable a future in either software implementation or use of advanced graphics software. The subjects covered are: 3D representations and manipulations in graphics, light reflection models, realism techniques such as shadows and textures, ray tracing and 3D animation.

Modern Software Development
Software Development for Mobile Devices

This module aims to provide a thorough grounding in the principles of software development for mobile devices. An important aim of the module is to demonstrate the real-world application of object-oriented programming principles and design patterns in software for mobile devices. Students undertake a substantial software implementation project, working in pairs. The module will be taught primarily using the Objective-C language (but students may do the assignment work using Swift if they wish to do so).

Cloud Computing

Cloud Computing offers virtual, scalable, shared computing resources, via a network, as a utility service. This module introduces the concepts of cloud computing, explaining why business is moving to this model, and teaches the technologies involved in developing software-as-a-service offered via the cloud. It focuses on platform architectures, programming languages and tools for developing software service ecosystems.

Parallel Computing with Graphical Processing Units (GPUs)

Accelerator architectures are discrete processing units which supplement a base processor with the objective of providing advanced performance at lower energy cost. Performance is gained by a design which favours a high number of parallel compute cores at the expense of imposing significant software challenges. This module looks at accelerated computing from multi-core CPUs to GPU accelerators with many TFlops of theoretical performance. The module will give insight into how to write high performance code with specific emphasis on GPU programming with NVIDIA CUDA GPUs. A key aspect of the module will be understanding what the implications of program code are on the underlying hardware so that it can be optimised.

Students should be aware that there are limited places available on this module.

The Intelligent Web

This course is concerned with getting acquainted with the present and future of the intelligent Web. We will read and discuss both introductory descriptions and cutting-edge research papers. Topics will include:

  • Basic technologies for searching and mining the WWW
  • Large scale methodologies for the Web (e.g. Mapreduce)
  • Standards for knowledge representation on the Web such as the Resource Description Framework (RDF), and the Ontology Web Language (OWL), RDFa and microformats.
  • Web 2.0 and Web 3.0 concepts, including mining social media (e.g. Twitter and Facebook)
  • The Web of Data and the Semantic Web.
Artificial Intelligence and Complexity
Modelling and Simulations of Natural Systems

This unit will provide a practical introduction to techniques used for modelling and simulating dynamic natural systems. Many natural systems can be modelled appropriately using differential equations, or individual based methods. In this unit, students will explore and understand both modelling approaches. They will gain knowledge of the assumptions underlying these models, their limitations, and how they are derived. Students will learn how to use MATLAB to simulate and explore the dynamics of computational models, using a variety of examples drawn from both natural systems.

Software Verification, Testing and Security
Computer Security and Forensics

This module addresses computer security and forensics issues central to the probity and smooth running of modern industry. The aim of the module is to provide a broad introduction to the topic, which covers the main areas.

Testing and verification in safety critical systems

Summary This module provides an introduction to the processes and problems of building complex software such as for use in aerospace applications. Topics covered can be split into four major groups: safety, specification languages, concepts of software engineering, different methods of software testing. A substantial amount of time will be spent on the ideas of software testing and specific testing techniques.

  • Safety includes software and systems safety, methods of performing hazard analysis, human factors and the IEC 61508 standard.
  • Specification languages such as Statecharts.
  • Software engineering concepts focus on the software lifecycle, safe language subsets, software testing and maintenance.
  • The software testing part is concerned with advanced approaches to generating software tests.
Software and Hardware Verification

This module introduces state-of-the-art software and hardware verification techniques which nowadays are widely used in industry. They are particularly important in safety-critical applications, where system failures can not be tolerated. Designing high quality dependable computing systems is widely believed to be the main challenge in computer science. Particular focus is on protocol verification and hardware design verification by model checking and program verification by formalisms such as Hoare logics. These techniques presume formal system specifications and use automated tools for analysing whether a system satisfies the properties required or imposed.

Distributed Systems and Networks
Theory of Distributed Systems

The aim of this module is to set out a strong theoretical basis for the analysis and design of concurrent, distributed and mobile systems. We will use the pi-calculus to model and reason about complex systems, studying both its formal semantics and its many uses, via a number of examples.

Network Performance Analysis

This module considers the performance of computer networks from a statistical aspect, using queuing theory. It is shown that the performance of a computer network depends heavily on the traffic flow in the network, and different models of traffic and queues are used. These include single-server queues, multiple server queues, and the concept of blocking is discussed. Although the analysis is entirely statistical, all the relevant background is provided in the lectures, such that the course is entirely self-contained. Problem sheets are provided in order to assist the students with the course material.


Students are well prepared for employment in industry, or for postgraduate study. A number of graduates from this programme are currently studying for PhD degrees in the Department, or in other UK universities.


Our Advanced MSc programmes are intended for students with a good background in Computer Science or Software Engineering, or a closely related discipline, such as Computing and Mathematics. Applicants are expected to have an upper second class degree or better.

English language requirements

Our minimum English requirement is:

IELTS 6.5 (with no less than 6.0 in each component)
If you do not meet the entry requirements you can be considered for our pre-Masters Graduate Diploma programme.

Entry requirements

Fees and funding

Please click the button below for further details on fees and funding

Fees and funding