These are research ideas looking for a student. Each one says the level it suits and sits under the project that owns it, so follow the project link for the wider context. Pick a level or type a keyword to narrow the list, then write to me to discuss an idea. You are welcome to propose your own along the lines of an existing project. Ideas offered previously stay under their project as folded lines, which the chevron beside a project opens.
Imagine you're out on a field trip in the Peruvian Amazon and come across a mesmerising butterfly species you don't recognise. You could ask iNaturalist's AI, but its identification models h…
A Living IUCN Red List of the World's Species
The IUCN Red List of Threatened Species is one of the world's most important conservation resources–often referred to as a Barometer of Life. It provides a standardised, evidence-based assessment framework for grouping species into extinction risk categories…
Bastion is an OS architecture for safeguarded AI where what an agent may do is expressed as a "capability signature". This is an Dijkstra monad whose commands are the only effects the agent …
Modern operating systems are increasingly moving away from the syscall-at-a-time POSIX model towards shared-memory submission/completion queues like Linux's io_uring, Windows IoRing and macO…
A programmatic diagramming library for OCaml
Programmatic diagramming tools let developers, educators and researchers turn structured data (like trees, graphs, ASTs, neural networks, symbolic terms, ...) into clear pictures without reaching for a full interactive visualisation stack. Shriram Krishnamurth…
Co-supervised with KC Sivaramakrishnan and Shriram Krishnamurthi.
A Hybrid Graph-Vector Database in O(x)Caml
This project proposes building a hybrid graph-vector database in OCaml. Retrieval-Augmented Generation (RAG) grounds LLM responses in external data. The naive approach to implementing RAG is to embed relevant documents with a pre-trained embedding model, store…
Co-supervised with Ryan Gibb and Jon Crowcroft.
Roads are expanding faster than at any point in human history, and many of them don't appear on maps. The ghost roads study in 2024 used ~7,000 hours of volunteer effort to hand-map roads ac…
Global conservation metrics such as LIFE need a counterfactual baseline to ask questions like "what would the land surface look like today if humans had never converted it to cities, farmlan…
Earth embeddings for probabilistic weather downscaling
Pedro Sousa began his PhD in January 2026 working on what a geospatial foundation model can contribute to near-surface weather prediction. This is joint work with the Aardvark group in the Department of Engineering, with Richard Turner and Will Tebbutt, whose …
Co-supervised with Sadiq Jaffer.
Global habitat maps from Tessera embeddings
Michael Dales, Aneesh Naik and Alison Eyres are working with David Coomes' group and me on whether the TESSERA foundation model can produce robust, high-resolution (10m) global habitat maps. Habitat maps underpin most of the conservation pipelines we work on (…
Co-supervised with David Coomes.
Whenever we do evidence synthesis (especially for conservation outcomes) to distil the world's scientific literature into actionable insights, we have to decide on what published studies we …
Evaluating LLMs for providing evidence-based information on conservation actions
We are building a Conservation Co-Pilot to improve worldwide conservation action through evidence-driven insights. Biodiversity loss is one of the biggest threats to our planet and to tackle it, we must improve the effectiveness of conservation action, which c…
Co-supervised with Alec Christie and Sadiq Jaffer.
Assessing Conservation Action Suitability using Multimodal Representations
This is a difficult project that will combine spatial evidence of conservation interventions with a geospatial foundation model (TESSERA): Conservationists often consider whether a beneficial conservation action is likely to be suitable in a new location. The …
Co-supervised with Sadiq Jaffer and Bill Sutherland.
Accurate summarisation of threats for conservation evidence literature
At the Conservation Evidence Copilots project, we are interested in constructing a taxonomy of threats to wildlife from the literature. This involves scanning the body of conservation literature and gathering/synthesising evidence for conservation intervention…
Co-supervised with Sadiq Jaffer.
Generating chunk-free embeddings for LLMs
This project aims to explore the development of a chunk-free approach for generating embeddings in Retrieval-Augmented Generation (RAG) models. Traditional RAG workflows often involve manual or predefined chunking of documents, and we seek to bypass this requi…
Co-supervised with Sadiq Jaffer.
Crawling grey literature for conservation evidence
At the Conservation Evidence Copilots project, we are interested in finding and synthesising evidence for conservation interventions. Much of this evidence is published in academic journals, but there is a large body of grey literature that is not indexed in a…
Co-supervised with Sadiq Jaffer.
Evaluating RAG pipelines for conservation evidence
At the Conservation Evidence Copilots project, we are interested in finding and synthesising evidence for conservation interventions. Once we have this evidence, it needs to be synthesised into a form that can be used to inform policy and practice via natural …
Co-supervised with Sadiq Jaffer.
Assessing mangrove literature for conservation evidence
At the Conservation Evidence Copilots project, we are interested in finding and synthesising evidence for conservation interventions. Mangrove forests are one of the most threatened ecosystems in the world, and there is a large body of literature on the topic.…
Co-supervised with Sadiq Jaffer and Tom Worthington.
Spatial and multi-modal extraction from conservation literature
The Conservation Evidence Copilots database contains information on numerous conservation actions and their supporting evidence. We also have access to a large corpus of academic literature detailing species presence and threats which we have assembled in Camb…
Co-supervised with Sadiq Jaffer, Alec Christie and Bill Sutherland.
Maps of biologically driven regionalization (e.g. ecoregions and bioregions) are useful in conservation science and policy as they help identify areas with similar ecological characteristics…
Agricultural habitat degradation is a leading threat to global biodiversity. To make informed decisions, it's crucial to understand the biodiversity impacts of various foods, their origins, …
Using wasm to locally explore geospatial layers
Some of my projects like Mapping LIFE on Earth or Remote Sensing of Nature involve geospatial base maps with gigabytes or even terabytes of data. This data is usually split up into multiple GeoTIFFs, each of which has a slice of information. For example, the L…
Co-supervised with Michael Dales.
Real-time mapping of changes in species extinction risks
Loss of habitat represents the most significant threat to wildlife overall, but advances in satellite sensing have enabled the assessment of habitat extent with comprehensive spatial coverage and reasonable temporal resolution. To address rising demand for met…
Co-supervised with Andrew Balmford.
Habitat mapping of the Cairngormes Connect restoration area
The Cairngorms Connect is the largest landscape restoration project in the UK. Four landowners (RSPB, Wildlands Ltd, FLS, and NatureScot) embarked on a 200-year vision to restore over 600 km2 of land in the Cairngorms National Park with an emphasis on natural …
Co-supervised with David Coomes and Aland Chan.
Mapping urban and rural British hedgehogs
The National Hedgehog Monitoring Programme aims to provide robust population estimates for the beloved hedgehog. Despite being the nation’s favourite mammal, there's a lot more to learn about hedgehog populations across the country. We do know that, although…
Co-supervised with Silviu Petrovan.
Validating predictions with ranger insights to enhance anti-poaching patrol strategies in protected areas
Biodiversity is declining at an unprecedented rate, underscoring the critical role of protected areas (PAs) in conserving threatened species and ecosystems. Yet, many of these are increasingly dismissed as "paper parks" due to poor management. Park rangers pla…
Co-supervised with Charles Emogor, Rob Fletcher and Sadiq Jaffer.
Battery-free wildlife monitoring with Riotee
Monitoring wildlife in the field today relies heavily on battery-powered devices, like GPS collars or acoustic recorders. However, such devices are often deployed in remote environments, where battery replacement and data retrieval can be labour-intensive and …
Co-supervised with Josh Millar.
Affordable digitisation of insect collections using photogrammetry
Insects dominate animal biodiversity and are sometimes called "the little things that run the world". They play a disproportionate role in ecosystem functioning, are highly sensitive to environmental change and often considered to be early indicators of respon…
Co-supervised with Tiffany Ki and Edgar Turner.
Enhancing Navigation Algorithms with Semantic Embeddings
Pathfinding algorithms used in modern navigation systems utilize a plethora of different geospatial data, such as from OpenStreetMap. Nevertheless, they often operate under one-size-fits-all assumptions and the simple objective of minimizing the anticipated tr…
Foundation models for complex geospatial tasks
Self-supervised learning (SSL) represents a shift in machine learning that enables versatile pretrained models to leverage the complex relationships present in dense–oftentimes multispectral and multimodal–remote sensing data. This in turn can accelerate h…
Co-supervised with Sadiq Jaffer and David Coomes.
Low-power sensing infrastructure for biodiversity
In-situ sensing devices need to be deployed in remote environments for long periods of time, and minimizing their power consumption is vital for maximising both their operational lifetime and coverage. We are exploring the construction of a versatile multi-sen…
Co-supervised with Hamed Haddadi.
The role of urban vegetation in human health
Cities around the globe have experienced unprecedented growth in recent years, becoming centres of economic, cultural, and social hubs for human activity. Rapid urbanisation has transformed the physical landscape and significantly altered local climates, with …
Co-supervised with Ronita Bardhan.
Mapping hunting risks for wild meat in protected areas
There is an important balance needed between the biodiversity damage caused by hunting in protected areas and the well-being of local communities that depend on it. One understudied driver of overly damaging hunting in these areas is snaring (as opposed to gun…
Co-supervised with Milind Tambe.
Reverse emulating agent-based models for policy simulation
Governments increasingly rely on simulation tools to inform policy design. Agent-based models (ABMs) simulate complex systems to study the emergent phenomena of individual behaviours and interactions in agent populations. However, these ABMs force an iterative…
Co-supervised with Sadiq Jaffer.
Species distribution modelling using CNNs
The goal of this project is to compare the performance of MaxEnt techniques to the performance of a CNN model for the task of species distribution modeling. The CNN model will use remote sensing data as part of the input features. The remote sensing data we pl…
Co-supervised with David Coomes.
Scalable agent-based models for optimized policy design
As the world faces twinned crises of climate change and biodiversity loss, the need for integrated policy approaches addressing both is paramount. To help address this, this project investigates a new agent-based model dubbed the VDSK-B. Using Dasgupta's revie…
Co-supervised with Srinivasan Keshav.
Exploring Concurrency in Agent-Based Modelling with Multicore OCaml
Computational modelling techniques such as ABMs are used to understand the dynamics of ecosystems and predict their behaviour in response to climate change and ecological disturbances, while also searching for optimal paths towards solutions to these problems.…
Diffusion models for terrestrial predictions about land use change
This project investigates how to build remote sensing data-driven models for the evolution of landscapes, which we can use to better predict deforestation, flooding and fire risks. Diffusion models are now widespread for image generation and are now being appl…
Co-supervised with Sadiq Jaffer.
Python is a popular tool for geospatial data-science, but it, along with the GDAL library, handle resource management poorly. Python does not deal with parallelism well and GDAL can be a mem…
Large pre-trained models can be used to embed media/documents into concise vector representations with the property that vectors that are "close" to each other are semantically related. ANN …
ZFS replication strategies with encryption
We are using ZFS in much of our Planetary Computing infrastructure due to its ease of remote replication. Therefore, its performance characteristics when used as a local filesystem are particularly interesting. Some questions that we need to answer about our u…
Co-supervised with Mark Elvers.
Bidirectional Hazel to OCaml programming
Hazel is a pure subset of OCaml with a live functional programming environment that is able to typecheck, manipulate, and even run incomplete programs. As a pure language with no effects, Hazel is a great choice for domains such as configuration languages wher…
Co-supervised with Patrick Ferris and Cyrus Omar.
An imperative, pure and effective specification language
Formal specification languages are conventionally rather functional looking, and not hugely amenable to iterative development. In contrast, real world specifications for geospatial algorithms tend to developed with "holes" in the logic which is then filled in …
Co-supervised with Patrick Ferris.
Effective geospatial code in OCaml
Geospatial data processing is a critical component of many scientific and engineering workflows, from environmental monitoring to urban planning. However, writing geospatial code that scales to multiple cores and makes best use of available memory can be chall…
Co-supervised with Michael Dales and Patrick Ferris.
Privacy preserving emissions disclosure techniques
Customers of online services may want to take carbon emissions into account when deciding which service to use, but are currently hindered by a lack of reliable emissions data that is comparable across services. Calculating accurate carbon emissions across a c…
Co-supervised with Martin Kleppmann.
Computational Models for Scientific Exploration
The modern scientific method has become highly computational, but computer science hasn't entirely caught up and is sometimes hindering research progress. We use climate science and ecology computation needs as a case study, we are conducting a systematic stud…
Co-supervised with Srinivasan Keshav.
Bidirectional type slicing
Development tools report what type an expression has, but not why it has that type. This project develops a theory of type slicing: a programmer selects a term, queries any part of its type information, and receives a program slice that is sufficient to reprod…
Co-supervised with Cyrus Omar.
Gradually debugging type errors
Reasoning about type errors is very difficult, and requires shifting between static and dynamic types. In OCaml, the type checker asserts ill-typedness but provides little in the way of understanding why the type checker inferred such types. These direct error…
Co-supervised with Patrick Ferris.
Assessing high-performance lightweight compression formats for geospatial computation
Geospatial data processing can benefit from by applying lightweight compression techniques to data in GeoTIFF format, addressing the challenge of modern CPU bandwidth surpassing RAM bandwidths. This project will explore how to mitigate the impact of poor cache…
Co-supervised with Sadiq Jaffer.
Towards reproducible URLs with provenance
Vurls are an attempt to add versioning to URI resolution. For example, what should happen when we request https://doi.org/10.1109/SASOW.2012.14 and how do we track the chain of events that leads to an answer coming back? The prototype vurl library written in O…
Co-supervised with Patrick Ferris.
Composable diffing for heterogenous file formats
When dealing with large scale geospatial data, we also have to deal with a variety of file formats, such as CSV, JSON, GeoJSON, or GeoTIFFs, etc. Each of these file formats has its own structure and semantics, and it is often necessary to compare and merge dat…
Co-supervised with Patrick Ferris.
Legal perspectives on integrity issues in forest carbon
Carbon finance offers a vital way to fund urgently needed forest conservation, but there are integrity issues on the supply side.[1] Besides the known issues with carbon quantification,[2] carbon credits are often poorly designed and implemented from a legal p…
Co-supervised with Eleanor Toye Scott.
Meta Properties of Financial Smart Contracts
Financial smart contracts routinely manage billions of US dollars worth of digital assets, making bugs in smart contracts extremely costly, and are also increasingly being used in other areas of endeavour such as carbon credit tracking. Because of this, much w…
Co-supervised with Srinivasan Keshav.
Making GPS accurate in dense forests using sensor fusion
Current GPS solutions are either very expensive ($8k+) or have relatively poor accuracies (10m+) under dense forest canopy. This project explores how to determine our location accurately in a forest area where we travel by foot under canopy without a GPS signa…
Co-supervised with Srinivasan Keshav and David Coomes.
Secure Programming with Dispersed Compartments
This PhD project proposes novel approaches and mechanisms for application compartmentalization and isolation to reduce their ever-growing attack surfaces. Our approach is motivated by the key observation that while hardware vendors compete to provide security …
Decentralised Capability-based Code Collaboration using Matrix
In 2005, due to licensing disputes, the team behind Linux parted ways with their proprietary source management tool BitKeeper, and needed a new solution. This prompted the development of Git, an open-source decentralised version control system (DVCS), which wa…
Security analysis of brain-computing interfaces
Brain Computing Interface (BCI) technologies, both invasive and non-invasive, are increasingly used in a wide range of applications, from health-care to smart communication and control. Most BCI applications are safety-critical or privacy-sensitive. However, t…
Co-supervised with Zahra Tarkhani and Lorena Qendro.
Void Processes: Minimising privilege by default
Void processes intend to make it easier for all developers to produce effectively privilege separated applications. The project has two primary goals: show the merits of starting from zero privilege, and provide the utilities to make this feasible for the aver…
Low power audio transcription with Whisper
The rise of batteryless energy-harvesting platforms could enable ultra-low-power, long-term, maintenance-free deployments of sensors. This project explores the deployment of the OpenAI Whisper audio transcription model onto embedded devices, initially starting…
Co-supervised with Josh Millar.
Low-latency wayland compositor in OCaml
When building situated displays and hybrid streaming systems, we need fine-grained composition over what to show on the displays. Wayland is a communications protocol for next-generation display servers used in Unix-like systems.[^0] It has been adopted as the…
Co-supervised with Ryan Gibb.
Building bigraphs of the real world
Bigraphs were originally proposed as a model for the behaviour of ubiquitous systems since interaction between mobile devices is dependent on both placing (locality) and linking (connectivity). However, there has yet to be a bigraph that represents the complet…
Co-supervised with Ryan Gibb.
Interspatial Networking with DNS
The existing Internet architecture lacks support for naming locations and resolving them to the myriad addressing mechanisms we use beyond IP. While there have been many advances in addressing locations via multiple routing schemes, it remains difficult to ref…
Co-supervised with Jon Crowcroft.
3D printing the planet (or bits of it)
Thanks to a combination of satellite information, remote sensors and data-science, we now are able to reason about places all over the globe from the comfort of our desks and offices. But sometimes, you just want to be able to see or touch an area to understan…
Co-supervised with Michael Dales.
Scheduling for Reduced Tail Latencies in Highly Utilised Datacenters
Modern datacenters have become the backbone for running diverse workloads that increas- ingly comprise data-parallel computational jobs. Due to the ease of use and diversity of resources they host there has been an exponential rise in the demand for datacenter…
Co-supervised with Evangelia Kalyvianaki.
A DSL for decentralised identity in OCaml
There are currently multiple identity providers without direct incentives to cooperate. This leads to many redundant implementations of the identity handling logic, many of which are not immediately compatible with each other, leading to additional increases i…
Co-supervised with Patrick Ferris.
Spatial Name System
The development of emerging classes of hardware such as Internet of Thing devices and Augmented Reality headsets has outpaced the development of Internet infrastructure. We identify problems with latency, security and privacy in the global hierarchical distrib…
Co-supervised with Jon Crowcroft.
Deep learning for decomposing sound into vector audio
All that we hear is mediated through cues transmitted to the brain from the cochlea, which acts like a bank of auditory filters centred at a wide range of centre frequencies. A lot of our knowledge of hearing comes from psychoacoustical experiments that involv…
Co-supervised with Trevor Agus.
Programming FPGAs using functional programming languages is a very good fit for the problem domain. OCaml has the HardCaml ecosystem to express hardware designs in OCaml, make generic design…
Effects based scheduling for the OCaml compiler pipeline
In order to compile the OCaml program foo.ml containing: Stdlib.print_endline "Hello, world" the OCaml compilers only require the compiled stdlib.cmi interface to exist in order to determine the type of Stdlib.print_endline. This separate compilation technique…
Co-supervised with David Allsopp.
Runtimes à la carte: crossloading native and bytecode OCaml
In 1998, Fabrice le Fessant released Efuns ("Emacs for Functions"), an implementation of an Emacs-like editor entire in OCaml and which included a library for loading bytecode within native code programs[^1]. This nearly a decade before OCaml 3.11 would introd…
Co-supervised with David Allsopp.
Implementing a higher-order choreographic language
This project aims to implement a functional choreographic language inspired by the Pirouette calculus. This language was meant to make the notoriously difficult process of implementing distributed algorithms easier, while offering a practical execution model f…
Co-supervised with Dmirtij Szamozvancev.
Parallel traversal effect handlers for OCaml
Most existing uses of effect handlers perform synchronous execution of handled effects. Xie et al proposed a traverse handler for parallelisation of independent effectful computations whose effect handlers are outside the parallel part of the program. The pape…
Co-supervised with Patrick Ferris.
Using effect handlers for efficient parallel scheduling
Modern hardware is so parallel and workloads are so concurrent, that there is no single, perfect scheduling strategy across a complex application software stack. Therefore, there are significant performance advantages to be gained from customizing and composin…
Probabilistic Programming in OCaml
With increasing use of machine learning, it is useful to develop frameworks that support rapid development and functional specification of probabilistic models for inference and reasoning. Probabilistic Programming Languages aim to support concise syntax for s…
Co-supervised with Tom Kelly and Liang Wang.
Concurrent revisions for OCaml
The biggest challenge when using parallel programming is typically how to keep track of the side effects of computations that are executed in parallel and that involve shared mutable state. Traditional methods for dealing with this issue often limit concurrenc…
Macro- and Micro-benchmarking in OCaml
Benchmarking involves the measurement of statistics such as run-time, memory allocations, garbage collections in a running program in order to analyze its performance and behaviour. To scientifically evaluate and understand the performance of a program, there …
Analysis of the Raft Consensus Protocol
The Paxos algorithm, despite being synonymous with distributed consensus for a decade, is famously difficult to reason about and implement due to its non-intuitive approach and underspecification. In response, this project aimed to implement and evaluate a fra…
The mean time to exploit a vulnerability is now negative, as LLM-driven exploitation precedes the publication of a fix. A coding agent needs to be given little more than the class of a bug, …
Distributed Task Scheduling Framework over Irmin
Distributed computation and task scheduling frameworks can be decentralised with minimal cost to performance. Furthermore, this decentralisation can provide a significant reduction in the trusted computing base and complexity of the system, affording end consu…
A strongly consistent index for email using git and MirageOS
Maildir is a widely used format for storing emails. Its main benefit is that it uses the filesystem in such a way that client programs do not have to handle locking themselves. The downside of this is that it makes it hard to create a consistent index as we ca…
Co-supervised with David Allsopp.
CausalRPC: a traceable distributed computation framework
The project aims to implement an RPC framework in OCaml using the Irmin distributed database library as a network substrate. It will explore the trade-offs of a novel data-oriented approach to RPC in which race conditions between clients are resolved automatic…
Consolidating Trust for Client Groups that use TLS to Secure Connections
This project aimed to develop a framework that allows administrators to centrally manage trust in CAs and certificates across a large number of clients. The framework should be responsive and changes in trust should not require any software updates or reboots …
Co-supervised with David Sheets.
Extending 64-bit MIPS support for LLVM
In the summer of 2011, we hosted William Morland to do an internship in the Computer Lab just as the CTSRD/CHERI project kicked off. I was interested in MIPS as a potential target for MirageOS, and Robert M Watson in using it for the future CHERI processor. Wi…
Co-supervised with Robert M Watson.
Control flow analysis for privilege separation
In the summer of 2011, we hosted Chris Harding and Ross McIlroy to do an internship in the Computer Lab working just as the CTSRD/SOAPP project kicked off. Ross McIlroy built a tool called privgrind, using valgrind that tracks, for all data addresses touched, …
Co-supervised with Robert M Watson.
Improving Resilience of ActivityPub Services
The original goal of the project was to improve the resilience of the distributed social networking protocol "ActivityPub", by caching the content on multiple instances and serving them in case the origin instance goes down. The project uses public-key cryptog…
Not-quite-so-broken TLS in OCaml
Transport Layer Security (TLS) implementations have a history of security flaws. The immediate causes of these are often programming errors, e.g. in memory manage- ment, but the root causes are more fundamental: the challenges of interpreting the ambiguous pro…
Co-supervised with Peter Sewell.
Audio networking using commodity hardware
Many everyday electronic devices such as laptops, PDAs and telephones are able to play and record audio. Invariably this ability is used to interface with people, playing or recording music, speech or sound effects. However, it is just as possible for the devi…
Nothing matches that. Try a broader filter, or look through the ideas offered previously.








