MSc Computer Science

General information about the MSc Computer Science degree can be found on this page.

Current students should use the teaching and learning pages for general teaching-related information and the MSc Computer Science Moodle page for more course specific information.

Programme Structure

Core Term 1 Modules

COMPGC01 Introductory Programming

COMPGC01 Introductory Programming

This module introduces imperative and object-oriented programming using pure Java. The module uses Java to give a grounding in key object-oriented concepts such as class design, inheritance, dynamic binding and interfaces. Material focuses on practicing object oriented programming to be better prepared for future courses including COMPGC02 Apps Design and COMPGC05 Algorithmics. This is an intensely practical module and full student engagement outside of lectures and in lab classes is critical to successful completion of the module.

Further syllabus information can be found here.

COMPGC02 Design

COMPGC02 Design

This course introduces the concepts and methods required for the design and construction of apps software systems. It aims to develop a broad understanding of the disciplines of software engineering, project management and human computer interaction (HCI). It seeks to complement this with a detailed knowledge of techniques for the analysis, design and implementation of complex software intensive systems. It aims to set these techniques in an appropriate engineering, societal and managerial context. It applies the principles of OO programming (COMPGC01) in parallel with the development of apps via learning-by-doing and problem based learning (PBL) approaches.

Further syllabus information can be found here.

COMPGC03 Architecture & Hardware

COMPGC03 Architecture & Hardware

The aim of this module is to 'demystify' computers, i.e. to provide a basic understanding of how computers execute programs. To show how the basic components of the computer can be built from simple electronic components such as transistors and logic gates.; and to understand why certain design decisions are made with respect to computer architectures.

Further syllabus information can be found here.

COMPGC04 Systems Infrastructure

COMPGC04 Systems Infrastructure

This module is an amalgam of three different aspects of systems design and construction - operating systems, compilers and databases - each having approximately equal weight. The module is a fundamental one in the programme as a whole, in the sense that it introduces material that is built on elsewhere and, consequently, much of the material will be aimed at providing a basic understanding of the role that different systems components play within real computer systems, and how they go about achieving this.

Further syllabus information can be found here.

Core Term 2 Modules

COMPGC05 Algorithmics

COMPGC05 Algorithmics

This module aims to introduce more formal aspects of algorithms and data structures than those in the first term. It covers properties of data types such as queues and search trees; techniques for analysing the complexity and decidability of algorithms; and formal models of computation.

Further syllabus information can be found here.

Optional Modules

COMPGC06 Database Systems

COMPGC06 Database Systems

This module builds on the introduction to relational databases found in the Systems Infrastructure module. It covers advanced data modelling and database development methodology, the techniques exploited by relational database technologies relating in particular to query processing and transaction management, and post relational database technologies including object oriented databases and web databases. The coursework is an interesting group project lasting the duration of the term and building a web facing database system using very contemporary technologies.

Further syllabus information can be found here.

COMPGC16 Functional Programming

COMPGC16 Functional Programming

This module explores the functional programming paradigm and the implementation technology for functional programming languages. It aims to develop a broad understanding of the functional programming style and recursive programming techniques using the language Miranda, together with an understanding of implementation issues that are relevant not only to functional languages but also to other systems that require automatic dynamic memory management.

Further syllabus information can be found here.

COMPGC18 Entrepeneurship: Theory and Practice

COMPGC18 Entrepeneurship: Theory and Practice

This module aims to provide students with the theory and practice necessary to launch a new business venture making maximum use of eCommerce strategies and software tools for entrepreneurs.

On the module, students will gain first hand experience of the selection and deployment of tools, techniques and theories for the identification, validation and structuring of a new business venture.

Further syllabus information can be found here.

COMPGC20 Computer Music

COMPGC20 Computer Music

This module covers three key aspects of computer music: representation, creativity and analysis addressed through theory and practice. It will cover sound, music as organised sound, and specific applications (e.g. music information retrieval and musicology). Students will be strongly encouraged to explore both scientific and artistic aspects of the course through programming exercises to generate sound and music in contemporary visual or textual music and arts programming languages (e.g. Python and Pure Data).

Further syllabus information can be found here.

COMPGC22 Software Engineering

COMPGC22 Software Engineering

This module covers a range of Software Engineering material, following on from that introduced in the Architecture & Hardware module. The emphasis is on the knowledge needed to be able to model, design, implement and evaluate larger software systems effectively. The content starts with development lifecycle models, such as agile development, and then continues to cover requirements specification, the Unified Modelling Language (UML), software architecture, object-oriented analysis and design, design patterns and testing. Its is an inherently practical subject; students undertake a substantial group project, working through a number of stages of the development of a larger software application.

Further syllabus information can be found here.

COMPGC25 Interaction Design

COMPGC25 Interaction Design

The module covers advanced topics in interaction design, focusing on the design of mobile and ubiquitous computing technologies. A central theme is how to design technologies to meet people's needs.

On successful completion of the course, students will have the knowledge and understanding of research topics in ubiquitous computing, an understanding of methods used in interaction design, the ability to conduct basic user research and the ability to design, prototype and evaluate a novel ubiquitous computing technology.

Further syllabus information can be found here.

COMPGC26 Artificial Intelligence & Neural Computing

COMPGC26 Artificial Intelligence & Neural Computing

Prerequisites:The GC26 module is only available to students that have done Computer Science, Mathematics or Philosophy degrees that contain an existing formal logic module covering propositional and predicate logic. This module also required strong mathematical skills.

This module introduces artificial intelligence and neural computing as both technical subjects and as fields of intellectual activity. The overall aims are: to present basic methods of expressing knowledge in forms suitable for holding in computing systems, together with methods for deriving consequences from that knowledge by automated reasoning; to present basic methods for learning knowledge; and to introduce neural computing as an alternative knowledge acquisition/representation paradigm, to explain its basic principles and their relationship to neurobiological models, to describe a range of neural computing techniques and their application areas.

Further syllabus information can be found here.