Research

The Foundations of Software Systems group consists of six faculty and 15 researchers and DPhil students. Many of our current projects have commercial involvement, and we are always keen to develop further links with industry.

Networking and Distributed Systems

Networking and distributed systems technology is beginning to mature as it reaches a wider audience through the Internet and other channels. Our research is focused on understanding how we can engineer networks when the end-consumer of the information is a human being: a user-centered networking approach. Current research is investigating how to build application specific overlay networks providing support for ad-hoc auctions and markets, protection from denial of service attacks, storing and disseminating transient data, reliable software distribution and the understanding of trust.

Networking and Distributed Systems

Pervasive Computing Systems

Pervasive Computing Systems

We are exploring ways of enabling the pervasive computing infrastructure of the future. When even the most mundane devices, such as kitchen appliances or central heating systems, are both programmable and connected to the rest of the world through the Internet, rich possibilities will open up for increasing our quality of life. But before this can become a reality, we need to know how to program these devices safely and in ways that aid us in our daily lives rather than hindering us. Projects are investigating the design of programming languages and network mechanisms that ease the development and management of pervasive computer systems and provide safe and eficient networks in which these systems can work; the representation, storage and application of context information and its correctness, and the deployment of sensors in the home, considering in the environmental and human impact in their installation and maintenance.

Foundations of Computation

The long term aim of foundations research is to provide better programming languages, better specification mechanisms, better verification tools, and a better integration between languages, specification and verification. Our specialities are graphical formalisms for concurrent programming, quantum computation, separation logic with an emphasis on higher-order state and object calculi, types for concurrent languages, timed and untimed process calculi and logics for functional and concurrent languages.

Networking and Distributed Systems

Compiler Design and Programming Language Implementation

Compiler Design and Programming Language Implementation

Compilers are complicated beasts, forged from many thousands of man-hours and hundreds of thousands of lines of code. Programmers expect compilers to keep producing faster, smaller and more efficient target code. This drives compiler research, especially with a focus on techniques for clever optimizations, where code is analysed and transformed to meet these criteria. Recent work in the lab has focused on optimizing Java bytecode for embedded systems, enabling proxy compilation of Java across a network, investigation into irreducible functions in the real world, superoptimization, and exploration of gated data flow graph representations.