In your final year, you have the choice of which modules to take. You can undertake either an individual or group project.
The rest of your course will be made up of optional modules, including robotics, optimisation and simulation, and fuzzy logic.
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.
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 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.
Autonomous Robotic Systems
This module introduces you to the computer science of robotics, giving you an understanding of the hardware and software principles appropriate for control and localisation of autonomous mobile robots. A significant part of the module is laboratory-based, utilising physical robotic hardware to reinforce the theoretical principles covered.
Spending around three to four hours each week in lectures and practicals, you’ll cover a range of topics including:
- basic behavioural control architectures
- programming of multiple behaviours
- capabilities and limitations of sensors and actuators
- filtering techniques for robot localisation
Fuzzy Sets and Fuzzy Logic Systems
You’ll review classical Boolean logic and set theory, including the common operations of union, intersection and complement.
Fuzzy Logic Systems (FLSs) will be introduced and illustrated in conjunction with examples of real-world applications in industrial control and other areas.
You’ll spend around four hours each week in lectures and workshops, and will be given the opportunity to design, programme and deploy a fuzzy logic system, providing a tangible real-world example of some underlying concepts of FLSs.
Simulation and Optimisation for Decision Support
This module offers insight into the applications of selected methods of decision support.
The foundations for applying these methods are derived from:
- Operations Research Simulation
- Social Simulation
- Data Science
- Automated Scheduling
- Decision Analysis
Throughout the module, you will become more competent in choosing and implementing the appropriate method for the particular problem at hand. You will spend five hours per week in lectures, workshops, and computer classes for this module.
Data Science with Machine Learning
This module explores the range of data analysis problems that can be modelled computationally and a range of techniques that are suitable to analyse and solve those problems.
Topics covered include:
- basic statistics
- types of data
- data visualisation techniques
- data modelling
- data pre-processing methods including data imputation
- forecasting methods
- clustering and classification methods
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.