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

Refactorings for Energy Optimisation

Non-functional properties, such as time, energy and security, are becoming critically important in areas ranging from small-scale sensors, through smart cyber-physical systems and mobile devices, to data centres, despite it being treated as a secondary concern. As embedded devices become more commonplace, increasing is the pressing demand for more time and energy optimisation in applications […]

Continue reading

Parallelism Removal in Legacy Code

This project would investigate how to safely remove parallelism from legacy C++ code. In order to improve the design and performance of legacy applications, older low-level parallelism techniques must first be removed. This facilitates the ability to analyse and safely introduce parallelism using novel approaches. The project will look at C++ use cases to investigate […]

Continue reading

Safety Assurances of Refactorings

A refactoring should transform code such that it maintains functional correctness. In languages such as C++ it can be difficult to the refactoring developer to ensure that their refactoring can be applied safely. This is particularly important when the refactoring transforms the internal behaviour of the program, such as the introduction of parallelism. This project […]

Continue reading

NAO Humanoid Robot Programming

The NAO humanoid robot [1] is a high-end robot (about the size of a smallĀ child) used in education and research and also other areas such as banking. It offers opportunities to explore areas such as 3-D imaging, speech recognition and production, vision processing, face tracking, complex limb motions, and artificially intelligent and emotional interaction. The […]

Continue reading