In your final year, you can undertake a more advanced project, whether individually or as a group, focusing on advanced software development or research.
Aside from these, you have the freedom to develop your expertise from a range of modules on topics including fuzzy logic, data modelling and analysis, game design, design ethnography, autonomous robotic systems, and advanced computer networks.
Individual Research Project
Students undertake a research project in computer science supervised by an academic member of staff. The topic should fall within the supervisor's research interests and must further be relevant to the student's programme of study; in particular, projects undertaken by artificial intelligence (AI) students must have a strong AI focus. The project may be proposed by either the supervisor or the student, and may be theoretical, empirical, or even of survey type depending on what is appropriate and feasible for the area and topic. Projects, however, must ultimately be agreed with the supervisor concerned.
The results from the project are to be distilled into a conference-format research paper, authored by the student and constituting the main assessed output. There may, however, be further deliverables as dictated by the nature of the project. Any such deliverables are to be submitted (electronically) as supplementary material. A revised version of the paper, possibly co-authored with the supervisor, may subsequently be submitted for publication to an external venue, such as a conference or journal, if the work is judged to be of sufficiently high standard.
Group Programming Project
Students undertake a programming project for an external client in self-formed groups of two to four students under the supervision of an academic member of staff. The client, which can be a company, charity, research group etc., but not the supervisor, provides a problem that requires a sufficiently challenging piece of software to be developed. The client and project idea could be provided by the students or the supervisor. However, projects must have aspects that are relevant to each student's programme of study; eg, there needs to be an artificial intelligence (AI) aspect if any AI students are involved.
The main assessed outputs are the developed software, including any end-user documentation, along with a 5,000-word document that outlines the development, design and implementation of the software, highlighting the most interesting aspects. The software must be developed in a professional and systematic manner appropriate for the problem domain. The assessment is informed by a statement from the external client on how well the developed software addresses the problem. Additionally, each student submits an individual 5,000-word report explaining his or her own contributions and giving a critical appraisal of how the project went, including group dynamics and the contributions of others.
Individual Programming Project
You will undertake a programming project relevant for AI for an External Client under the supervision of an academic member of staff.
The client, which can be a company, charity, research group etc., provides a problem that requires a sufficiently challenging piece of software to be developed. The client and project idea could be provided by the students or the supervisor. Each project must ultimately be agreed with the concerned Supervisor.
The main assessed outputs are the developed software, including any end-user documentation, along with a 15,000-word document that outlines the development, design and implementation of the software, highlighting the most interesting aspects.
The software must be developed in a professional and systematic manner appropriate for the problem domain.
The assessment is informed by a statement from the External Client on how well the developed software addresses the problem.
Advanced Algorithms and Data Structures
You'll study the theory used in the design and analysis of advanced algorithms and data structures. Topics covered include string algorithms (such as for string matching, longest common subsequence), graph algorithms (such as for minimum cuts and maximum flows, and Google's pagerank algorithm), advanced data structures (such as Fibonacci heaps and Bloom filters), and randomised search heuristics (evolutionary algorithms). You'll learn all the necessary probability theory will be introduced, including random variables and concentration inequalities.
The theory is practiced in weekly labs where we learn how to implement the algorithms and data structures as functional and imperative programs (using the languages Haskell and C), and apply these to solve large instances of real-world problems.
Ubiquitous Computing
You’ll explore the emerging field of ubiquitous computing, in which computation spreads away from the desktop to become embedded into the world around us, including into artefacts, furniture, buildings and ultimately into our own bodies. You’ll cover the distinctive design challenges in this field including designing for public settings, adapting to context and coping with uncertainty in positioning and wireless communications. You’ll spend around three hours in lectures and computer classes each week.
Simulation for Decision Support
This module introduces you to three broad simulation paradigms commonly used in operations research and management science: system dynamics, discrete event, and agent-based. Covering topics such as the introduction to the principles of modelling and simulation, conceptual modelling, model implementation, and output analysis, you will become competent in choosing and implementing the correct method for your particular problem. You will spend around four hours per 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.
Advanced Computer Communications
This module will provide you with an advanced knowledge of computer communications networks, using examples from all-IP core telecommunications networks to illustrate aspects of transmission coding, error control, media access, internet protocol, routing, presentation coding, services and security. You’ll spend around three hours per week in lectures and computer classes.
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.
Operations Research and Modelling
The module provides an entry point to operations research with emphasis in techniques for computational optimisation. Operations Rresearch (OR) is a discipline that uses modelling techniques, analytics and computational methods to solve complex optimisation problems in industry and business. You will learn to interpret and create formal models of optimisation problems and to develop computer-based solutions to solve those problems. The module covers topics such as linear programming, integer programming, combinatorial optimisation, modelling and optimisation software, and multi-objective optimisation among others. You will spend around three hours per week in lectures and workshops.
Design Ethnography
This module introduces you to the theory and practice of design ethnography.
You’ll cover a range of topics including:
- origins and evolution of ethnography
- foundations and nature of the ethnomethodological approach
- ethnographic analysis
- the perceived problems with the approach
You’ll spend around two hours each week in lectures and tutorials for this module.
Computer Vision
You’ll examine current techniques for the extraction of useful information about a physical situation from individual and sets of images.
You’ll cover a range of methods and applications, with particular emphasis being placed on the identification of objects, recovery of three-dimensional shape and motion, and the recognition of events.
You’ll learn how to implement some of these methods in the industry-standard programming environment MATLAB.
You’ll spend around three hours a week in lectures and laboratory sessions.
Selected Topics in Artificial Intelligence
Artificial intelligence is the science and engineering of making intelligent machines, especially intelligent computer programs, and covers a variety of topics including, agents, bio-inspired computational systems, computer vision, data mining, fuzzy logic, machine learning, modelling and optimization, operational research, pattern recognition, scheduling, and simulation. The module will introduce students to the latest developments and technological trends in selected topics in artificial intelligence, offered by staff in the school who are world leading researchers.