Hi! I'm currently in my fourth year of studying for an MComp degree in Computer Science with Mathematics at the University of Sheffield. I'm particularly interested in functional programming, language design and implementation, category theory and mathematical logic.
Click here for information on other things I've gotten up to in my time at Sheffield aside from my degree.
My Darwin (master's) project is on comparing evolutionary algorithms for solving the graph colouring problem, working in a group with three other fourth year students and supervised by Dr. Dirk Sudholt. We aim to implement a framework using DEAP for running different variants of evolutionary algorithms on different graph classes, and to compare the performance of state-of-the-art evolutionary algorithms like the hybrid colouring algorithm against simple theory-driven evolutionary algorithms.
My undergraduate project (pdf) was on verifying the correctness of functional programs using Isabelle/HOL. I was supervised by Prof. Georg Struth. I began by proving statements about simple functional data structures like natural numbers, lists, and trees, moved on to verifying the correctness of simple sorting algorithms like insertion sort and merge sort, and finally implemented a definition of the shuffle product operation on strings and languages, providing proofs of some known properties from the literature.
Before I started university I did my A-Levels at Longley Park Sixth Form, where I achieved an A* in Mathematics and 3 As in Further Mathematics, Physics and Chemistry. I also worked on an extended project discussing the mathematics of artificial intelligence and the ways that computers can make decisions, for which I was also given an A* grade. Prior to that I did my GCSEs at Firth Park Academy.
Over the summer of 2019 I worked on a Google Summer of Code project (details), mentored by Chris Smith and Daniel Cartwright. I created a GHC plugin which allows instructors to define requirements for the code within a project and automatically validate them, with applications for users in a broad range of educational contexts. It offers validation of requirements from basic static analysis like checks for line length and warnings through to more advanced testing like template matching.
Earlier that summer I did some research (pdf) with Jordan Williamson, a PhD student working in algebraic topology. I learned the basics of category theory and commutative algebra, and studied Morita theory, which allows us to learn about rings by examining their module categories. We managed to show some interesting results relating to torsion modules.
In the summer of 2018 I worked with Pete Dodd and Mozhgan Kabiri Chimeh as part of the Sheffield Undergraduate Research Experience program. I used data collected from Zambia and South Africa and applied the agent-based modelling tool FLAME GPU to create a model of tuberculosis transmission that runs around 30x faster than a comparable model running on a single core. I presented these results in April 2019 at the British Conference of Undergraduate Research in Pontypridd.