Shape your degree to your own interests by selecting the majority of your modules from an extensive list of options including:
Undertake a large individual dissertation project, agreed in discussion with a supervisor, allowing you to specialise in an area of interest related to the school’s world-leading research activities such as:
Computer Security
Spending four hours a week in lectures and computer classes, you’ll cover the following topics:
- security of the computer
- security of networks
- security and the internet
- software and hardware security
- mobile security
- basic cryptography
Professional Ethics in Computing
The module 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, all these within the context of computer systems development.
Computability
You’ll begin by considering the attempts to characterise the problems that can theoretically be solved by physically-possible computational processes.
You’ll 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. A key topic is an examination of the classes P and NP and the definition of the term NP-complete.
Symbolic Artificial Intelligence
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’ll cover include:
- first order logic
- resolution
- description logic
- default reasoning
- rule-based systems
- belief networks
Machine Learning
Providing 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.
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
You’ll spend around six hours each week in lectures and computer classes for this module.
Collaboration and Communication Technologies
In this module you’ll consider the design of collaboration and communication technologies used in a variety of different contexts including workplace, domestic and leisure environments.
You’ll consider the basic principles of such technologies, explore the technologies from a social perspective, consider their impact on human behaviour and critically reflect on their design from a human-centred perspective.
You’ll spend around two hours per week in lectures for this module.
Computer Graphics
You’ll examine the principles of 3D computer graphics, focusing on modelling the 3D world on the computer, projecting onto 2D display and rendering 2D display to give it realism.
Through weekly lectures and laboratory sessions, you’ll explore various methods and requirements in 3D computer graphics, balancing efficiency and realism.
Development Experience
Students taking part in activities relating to programming experience such as developing apps in their spare time, contributing to open source projects, or building things in hackathons may receive academic credit for showing they have experience and excellent development skills. The emphasis of this module is that you provide evidence of your significant extra-curricular software development experience. Students will only be able to register for this module with the approval of the convenor/school, once the material for assessment has been checked.
Industrial Experience
Students taking part in activities relating to industrial experience in a computer science or software engineering enterprise may obtain academic credit for them. A full list of approved activities is available from the School Office. Activities will be related to demonstration of involvement in development of complex software in a team situation, subject to quality control procedures of an industrial or business practice. Evidence of working to and completing tasks relating to targets set by an employer and directly related to software development/programming will be required. Students will have undertaken an agreed number of hours on the activities, identified personal goals and targets in relation to these activities and maintained a reflective portfolio as a record of evidence of their competence and achievements. The nature of the activities undertaken will be subject to the approval of the module convenor before acceptance on the module.
Schools Experience
Students taking part in approved activities, such as running code clubs in schools, organising school computing activity days, or becoming active STEM ambassadors, may receive academic credit for demonstrating they have actively contributed to the development of younger students. Students will have undertaken an agreed number of hours on the activities, identified personal goals and targets in relation to these activities and maintained a reflective portfolio as a record of evidence of their competence and achievements. Students will only be able to register for this module with the approval of the convenor/school, once the material for assessment has been discussed.
Collaboration and Communication Technologies Development Project
You are given the opportunity to combine your developing CCT knowledge with your programming abilities. You have the whole semester to build a working collaborative project either individually, or you can opt to work in a team, and produce a report on how it supports collaboration according to CCT theory. The primary focus is on building a working application, and so existing strong programming ability is required.
Compilers
You’ll examine aspects of language and compiler design by looking at the techniques and tools that are used to construct compilers for high level programming languages. Topics covered include: parsing; types and type systems; run-time organisation; memory management; code generation; and optimisation. You’ll spend around four hours each week in lectures and computer classes.
Designing Intelligent Agents
You’ll 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.
You’ll cover topics including:
- task environments
- reactive, deliberative and hybrid architectures for individual agents
- architectures and coordination mechanisms for multi-agent systems
You will spend around four hours each week in lectures and tutorials for this module.
As part of the assessment of this module you will produce a research paper-style report, and deliver a conference-style presentation.
Mobile Device Programming
You’ll look at the development of software applications for mobile devices, with a practical focus on the Android operating system. You’ll consider and use the software development environments for currently available platforms and the typical hardware architecture of mobile devices. You’ll spend around three hours per week in lectures and computer classes.
Software Quality Assurance
Students will be introduced to concepts and techniques that are widely used in industry to develop high quality software.
Through a two hour lecture each week, you will be introduced to concepts and techniques that are widely used in industry to develop high quality software. These include the following:
- What makes high quality software? Including procedures and approaches to quality management and quality assurance for software projects. Also, a brief history of software metrics
- Software testing. Including unit testing, integration testing, and acceptance testing, with a particular emphasis upon testing strategy and the automation of testing
- Software deployment. Including techniques used to minimise risk, and also continuous integration
These will all be put into the context of recent industry trends. Training will also be provided in common tools and techniques that are used in professional software development including:
- Version control and the use of code repositories
- Release/configuration Build management tools
- Automated testing frameworks