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

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

A Better JavaDoc for Modern JVM Languages

The time-honored JavaDoc [1] application for generating API documentation for Java programs has inspired many similar efforts for other programming languages, e.g., groovydoc [2], Doxygen [3], and remains a powerful tool that explains part of the ongoing popularity of the Java language and its wider ecosystem. However, it has seen little change over the years […]

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

Stardust – Performance Monitoring Tool

We have developed a custom Unikernel called Stardust (which is based on Mini-OS) which is designed to run on the Xen hypervisor. The OS has a small memory footprint and supports a light-weight open-source Java virtual machine in a pre-emptive, multi-threading, single address-space environment. When developing Operating Systems for virtual machines that run on the […]

Continue reading

An argumentation-based provenance reasoner

The aim of this project is to develop an argument-based provenance reasoner. Existing provenance toolkits such as [1] provide ways to record and manipulate provenance data.  Argumentation-based reasoners such as ASPIC+ [2,3] provide a general approach to deal with conflicting information, and identify what claims are acceptable. The combination of the two tools would provide […]

Continue reading