Master's thesis work: PDF
Formal argumentation aims to reason with conflicting information and derive meaningful conclusions from it. To this end, several formalisms have been developed for modelling arguments, and a number of important computational problems have been identified.
In this project we derived new complexity results for several argumentation formalisms which take support, as well as attacks between arguments into account. Additionaly, we proposed novel algorithms for calculating extensions (sets of good arguments) in these formalisms. These topics had previously been left unexplored in the literature.
Simulation of Autonomous Vehicle Networks: source code
We expect that in the near future autonomous cars will dominate our roads. Companies such as Google and Uber will have a centralised system aware of the status of each car: where it is, where it is heading, and what data its sensors collected. Such fine details allow for advanced traffic routing algorithms. For example, cars could be routed differently in order to avoid congestion.
SAVN is a web-based simulation platform allowing researchers to easily set up, visualise, and benchmark their traffic control algorithms for autonomous vehicle fleets. I completed this project with 4 friends as our third year university group project.
Waste management solution for London: source code
For this project we were awarded the best Human Centered Design prize by the Royal College of Arts. The judges particularly liked our market research, and how we streamlined the interface to meet the needs of our hypothetical customers according to feedback from friends and independent waste providers.
Operating Systems Coursework: source code
This project was the coursework for our Operating Systems course. I completed this task with three friends. We were given a code base containing a bootloader, a threading system with a round robin scheduler, and a basic filesystem. We were required to implement blocking wait, a priority scheduler and a multilevel feedback queue scheduler, support for user programs (loading user programs and providing system calls), and to support virtual memory.
This project was the coursework for our Operating Systems course. I completed this task with three friends. We implemented an optimizing compiler for the WACC programming language to the ARM instruction set. The language is a simple procedural language, that supports functions, heap allocated arrays and tuples, and I/O. We implemented the front-end of the compiler using the flex and bison lexer and parser generators, and our custom C++ semantic checker. We also wrote our our own code generator in C++. We then extended the base language with features such as multi-file programs, optimizations such as register targeting, and constant value propagation to reduce code size.
ARM11 emulator and assembler
Three groupmates and myself were tasked with an emulator and assembler in C, for a subset of the ARM instruction set. We then used those to write and assemble a LED binary counter. We also made a little timing game using 5 LEDs and a button to run on the bare metal of the Raspberry Pi.