Cyber Physical Systems Dissertation
You’ll perform an individual project on a topic in computer science with emphasis on cyber physical. You’ll produce a 15-25,000 word project report under the guidance of your supervisor. The topic can be any area of the subject which is of mutual interest to both you and your supervisor, but should involve a substantial cyber physical component.
Professional Ethics in Computing
This module looks broadly into professional ethics within the scope of the computing discipline. It 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.
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
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 the generation of new knowledge possible, including very big data sets. This is now fashionably termed 'big data' science.
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 and evaluating hypotheses
Human-AI Interaction
This module is an introduction to the design of human-AI interaction to ensure the AI-driven systems we build are beneficial and useful to people.
The module will cover practical design topics including methods and techniques such as natural language processing and human-robot interaction. The module will also consider societal and theoretical concerns of human-AI interaction, including the ethics of AI, responsible innovation, trust, accountability and explainable AI.
The practical component of the module will involve building AI-driven systems that drive conversational experiences, such as a text-based ‘chatbots’ and speech-controlled services/ ‘skills’, involving automatic speech recognition and natural language processing.
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.
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’ll cover include:
- first order logic
- resolution
- description logic
- default reasoning
- rule-based systems
- belief networks
Collaboration and Communication Technologies
In this module, you will consider the design of collaboration and communication technologies used in a variety of different contexts including workplace, domestic and leisure environments. You will 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.
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
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.
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.
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.
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.
Fundamentals of Information Visualisation
Information Visualisation is the process of extracting knowledge from complex data, and presenting it to a user in a manner that this appropriate to their needs. This module provides a foundational understanding of some important issues in information visualisation design. You will learn about the differences between scientific and creative approaches to constructing visualisations, and consider some important challenges such as the representation of ambiguous or time-based data. You will also learn about psychological theories that help explain how humans process information, and consider their relevance to the design of effective visualisations.
If you want to learn how to design and implement your own interactive information visualisation, you should also take the linked module G53IVP (Information Visualisation Project). Together, these two modules form an integrated 20 credit programme of study.
Information Visualisation Project
In this module you will gain practical experience of how to design and evaluate a distinctive interactive visualisation which presents information gathered from a complex and interesting data source.
You will gain experience in web-based technologies that enable the implementation of multi-layered and interactive information visualisations, supported through lab work that introduces specific features of these technologies.
This module will require some challenging programming work and assumes some basic knowledge of HTML, CSS and Javascript. Introductory tutorials will be provided to those without this prior knowledge.
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.
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.
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.