SpotBugs Extension

Spotbugs is a static code analysis program that inspects Java code and flags up possible sources of errors. The set of rules included cover common coding errors that are pervasive in the use of the Java language. The system has a plugin architecture that allows rules to be added and the aim of this project […]

Continue reading

Occlusion Based Explanations of Black-Box Models for Deep Learning

Occlusion sensitivity analysis allows us to better understand trained machine learning models by identifying which parts of a given input are most salient in determining the model’s prediction. It is particularly valuable as it can be applied to black-box models i.e. models with internal representations which are difficult to access or interpret.   Occlusion sensitivity […]

Continue reading

Enriching CSPLib

CSPLib is a library of test problems for constraint solvers. It currently contains 89 different types of problems from different areas. The goal of this project is to enrich the library with new models/problems, written in Essence/Essence Prime. These problems will be mainly taken from the annual MiniZinc Competitions. A final (possibly achievable) goal is […]

Continue reading

Debated backpropagation

In this project we intend to enrich a backpropagation algorithm with dialogue. Backpropagation is used to train a feedforward neural network often for classification tasks [1]. In the new algorithm components of the network, such as neurons or layers become agents with their own identity and personality [2]. The network becomes an agent society, where […]

Continue reading

A verified compiler

Compilers take syntax and transform it into code that is executable by a machine, and they do this using various stages: syntax analysis, semantic analysis, code generation, etc. The machine code that is outputted from a compiler is usually trusted by the developer that it is correct, or that it exhibits an equivalent computation to […]

Continue reading

StackOverflow Sidekick

StackOverflow as an active question and answer community of people with an interest in programming. For many programmers, it is an invaluable resource that provides candidate solutions for the myriad small and large problems that programming tasks can bring with them. Unfortunately, most users of StackOverflow are merely passive consumers of the content on the […]

Continue reading

Creating Balanced Card Games

Many multi-player card games, such as Magic the Gathering and Hearthstone, include cards with both a cost and value. This produces an obvious trade-off, we want cards to be useful but not overpowered. The aim of this project is to develop a system which can automatically balance such games — by creating an A.I. which […]

Continue reading

Creative Autonomous Navigation and Learning by Mobile Robots in Unstructured Public Spaces

Mobile robots have had highly controlled structural constraints on route planning and execution. Some mobile hospital robots run on clearly marked permanent tracks in public corridors for example. Safety considerations naturally motivate such constraints. As mobile robots become more integrated into society as autonomous entities, more ambitious robot navigation in public spaces is being attempted. […]

Continue reading

Proving the Correctness of MiniJava Refactorings

The great mathematician and computer scientist, Christopher Strachey, once observed, that, if you can define a programming language’s value domain, you have already said a considerable amount about its semantics. Indeed, if we extend the idea of a value domain, (or a denotational semantics for mapping values in a programming language to their values), to […]

Continue reading

Realistic-looking fake GPS traces for privacy protection

Modern GPS-equipped devices allow for re-identification of people based on their GPS traces. In this project, you will create a tool which creates realistic-looking GPS traces and injects them into the real datastream, thus confusing a potential malicious attacker from finding useful personal information. Doing this may involve interfacing with existing online resources such as […]

Continue reading