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

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

Language Theoretic Security

Language Theoretic Security (langsec) is a methodology for ensuring security of communicating software by treating all inputs as untrusted and using formal languages to ensure the validity of transmitted messages. This project is to develop a framework (in the language of your choice) for implementing communicating systems using this methodology, guaranteeing correctness of messages either […]

Continue reading

Using meta heuristics to discover parallelism

After writing a sequential program, often programmers try to parallelise it. However, knowing exactly where in the program to parallelise is often a black art. Sometimes, programmers employ techniques such as profiling to find hotspots in their code and then parallelise those. However, it is well understood that hotspot detection alone is not enough to […]

Continue reading

Parallel Skeletons in Erlang

Parallel Skeletons are generalised higher-order functions for abstracting over the low-level complexities of implementing common parallel algorithmic behaviours. The Skel library (https://skel.weebly.com) is a parallel skeleton library for Erlang, offering a domain specific language (DSL) allowing Erlang programers to write parallel programs quickly and easily.   The focus of this project is to add new […]

Continue reading