As the largest School of Computer Science in the UK we are able to offer an incredibly broad range of course units. It is possible to structure your course unit selection, to help you focus your studies or project work, by choosing to follow a theme: a related collection of course units that together provide key skills in a focused area. We work closely with industry to ensure our themes introduce cutting edge approaches and technologies, and many of our themes are sponsored by industrial partners.
NB: Theme selections listed below do not need to be made at the point of application.
Computer Architecture involves the selection and interconnection of hardware components to create computers that meet functional, performance and cost goals. As a result, the development of effective computer architectures is a central part of technology development, and an understanding of the capabilities of architectures is important for developers of higher-level systems.
Information Systems in Business
Information Systems in Business addresses the role and impact of software systems within organisations. Many large scale software development projects fail either because business requirements, organisational structures or inter-organisational relationships are less than fully reflected in the design or deployment of the new software.
Mobile Computing and Networks
Mobile Computing and Networks is concerned with the provision of an infrastructure whereby distributed computational devices can co-operate efficiently and securely. Both wired and wireless networks are increasingly ubiquitous, and the importance of networked computing increases with the number and diversity of networked devices and mobile applications.
System-on-Chip involves the integration of the components in a computer or other electronic system into a single integrated circuit. System-on-Chip techniques are of increasing importance because they support the development of specialised embedded systems, such as MP3 players. The theme builds on Fundamentals of Computer Engineering in the first year.
Programming and Algorithms
Algorithms capture the way in which a problem is to be solved. As a result, algorithms are central to software development, and a wide range of techniques have been developed that underpin the design and analysis of algorithms. This theme explores a wide range of algorithms and data structures, investigates how their properties can be analysed systematically, and explores how they can be implemented efficiently.
Software Engineering is concerned with all aspects of software production, from the early stages of requirements gathering, through system design and implementation, to maintenance and evolution. Software Engineering is important because software projects may involve large teams of people, diverse or conflicting requirements, tight timescales and limited budgets.
Web and Distributed Systems
Web and Distributed Systems are among the most widely used computing systems, and are increasingly central to commercial, educational and leisure activities. As a result, many organisations, and thus their customers, are heavily dependent on the robustness and scalability of their distributed systems.
Agile Methods focus on processes and techniques for managing software projects under challenging conditions. Agile Methods are important because software often has to be developed under pressures of time and in uncertain settings, where more traditional software development techniques have proved to be too cumbersome.
Interactive Systems Design
Interactive Systems Design addresses the provision of user interfaces that meet user?s expectations in terms of both functionality and usability. The success of many projects hinges on the acceptance of interactive interfaces deployed on desktop computer systems or specialised devices.
Learning and Search in Artificial Intelligence
Learning and Search in Artificial Intelligence is concerned with constructing intelligent systems that can adapt to a changing and uncertain environment. Applications in which learning and search are central include game playing, financial prediction and mobile robotics.
Natural Language, Representation and Reasoning
Natural Language, Representation and Reasoning is concerned with techniques and tools for capturing and making use of knowledge in computer systems, and for using natural language to communicate with users about that knowledge. Knowledge representation is important in many applications, from the description of web pages in the semantic web, to the interpretation of natural language statements in grammar checkers and machine translators.
Visual Computing is concerned with the acquisition, analysis and production of visual data. Visual Computing is ubiquitous; its applications include computer games and virtual environments, scientific data visualisation, face recognition and medical imaging.
Rigorous Development is concerned with techniques for specifying and analysing algorithms and systems, with a view to reaching a level of understanding that enables guarantees to be made about their behaviour. Rigorous Development is important as many applications of computer systems are both complex and safety critical, and thus stand to benefit from a systematic investigation of their properties.
Computer Languages are central to the development of software systems. A good understanding of programming languages is important for software developers, and many sub-disciplines of computer science use specialised languages that suit their specific requirements.