Artificial Intelligence for Reliable Code
Understanding the reasoning and robustness of AI systems, such as Large Language Models (LLMs), is critical for ensuring their reliable use in programming tasks. While recent …

I enjoy integrating Automated Reasoning (AR) with Machine Learning (ML) to address challenges in software and a variety of other general tasks. Below is a selection of research topics I have explored over the years.
Understanding the reasoning and robustness of AI systems, such as Large Language Models (LLMs), is critical for ensuring their reliable use in programming tasks. While recent …
Localising system faults has long been recognised as one of the most time-consuming and costly tasks in software engineering. Given a buggy system, fault localisation (FL) refers …
Empowering the next generation of programmers requires intelligent systems that not only evaluate code but also teach, guide, and inspire. This research explores how Artificial …
Delivering personalised, scalable feedback to students in large programming courses remains one of the most persistent challenges in Computer Science and Software Engineering …
Delivering valuable and personalised feedback to students remains one of the greatest challenges in programming education, particularly in courses with large enrollments. Providing …
The Maximum Satisfiability (MaxSAT) problem is the optimisation variant of the Satisfiability (SAT) problem. Solving MaxSAT efficiently often involves partitioning the set of soft …
Many data analysts are domain experts but lack programming expertise. While they can describe what transformation they want to perform, they often struggle to express it in a query …