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

“Painting the Picts”

In this project you will create models of artefacts which show the viewer what those artefacts would have looked like when they were first made and used. We will work with Perth museum in exploring digitisation and colourisation of Pictish objects in their collection, but the techniques developed  will be applicable to other artefacts. “Pictish […]

Continue reading

“Virtual Time Travel”

In this project you will develop an app for the Oculus Go and Quest platforms that enables users to see into the past bringing history alive in new and exciting ways. You can make use of the Virtual Time Binoculars framework developed by Smart History and of digital reconstructions of historic scenes that have been […]

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

LogGuideWiki

/var/log is a strange and largely unexplored place full of strange creatures with cryptic names like dmesg, kern.log or syslog. Strangers in this place are sometimes greeted with utterances like RIP: 0010:nl80211_send_chandef+0x142/0x160 [cfg80211]. Should they be worried or is this just kern.log‘s way of saying ‘hello’? LogGuideWiki is a friendly guide to the strange lands […]

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

Energy Consumption of Parallel Patterns

For a very long time, the main goal of parallel computing techniques was to improve performance of parallel applications, delivering better speedups without consideration for possibly massively increased power consumption. However, the energy footprint of high-performance servers has become unacceptably high recently, resulting in demand for greener computing and for exploring tradeoffs between application performance […]

Continue reading

Multilevel Parallel Patterns

Parallel patterns represent an important high-level abstraction for programming complex parallel hardware systems and they have been endorsed by several top IT companies that offer their own pattern libraries (e.g. Intel Thread Building Blocks, Microsoft PPL). However, most of these pattern libraries are tailored to shared- memory multicore processors with the “flat” architecture of cores. […]

Continue reading

Reconstruction of 16th century printing technology

In collaboration with the School of History, we have applied OCR to printed French bibles from the 16th century. We have observed that spaces between words come in several sizes. Closely linked words can have smaller spaces between them than other words. Modern OCR technology treats all spaces as equal. We aim to automatically reconstruct […]

Continue reading