- Distinction (86% average - 4.0 GPA equivalent
^{1}) - Modules include:
- Quantum Compilation and Optimization,
- Quantum Information,
- Diagrammatic Reasoning for Quantum Computing,
- Cryptography,
- Formal Verification,
- Number Theory.

- Thesis:
- Title: 'Graphical Stabilizer Decompositions for Counting Problems'
- Supervised by Konstantinos Meichanetzidis (Quantinuum) and John van de Wetering (University of Amsterdam)
- Used ZH-calculus (a graphical language for reasoning about tensor networks) to prove a new bound on #SAT,
- Explored the relationship between counting complexity and the graphical calculi for quantum computing,
- Applied methods from quantum circuit simulation to solving boolean satisfiability and counting problems.

- 1st class (77% average - 4.0 GPA equivalent
^{1}) - Modules covered include:
- Computational Linear Algebra,
- Stochastic Simulation,
- Numerical Methods for ODEs,
- Mathematical Computation,
- Individual computational and Group Projects,
- Linear Algebra and Multivariable Calculus.

- First-Year Poster Project:
- Title: "Accelerating Gillespie's SSA with Dynamic Compilation"
- Created a compiler to accelerate chemical reaction simulations using Rust and LLVM. The speed mostly matched or exceeded the industry standard StochKit software.

- A Levels:
- 4 A*'s and 1 A in Mathematics, Further Mathematics, Computer Science, Physics and Chemistry respectively.
- A* in an EPQ related to Computer Science and AI.

- GCSEs: 10 A*s and 2 As including A*s in Mathematics, Computer Science, and triple Science and an A in Electronics.

- Investigating quantum algorithms to accelerate natural language processing tasks using the DisCoCirc model of text as quantum circuits.
- Quantum circuit compilation and optimization via deep learning and the ZX-calculus, specifically trying to reduce the T-count of Clifford+T circuits to enable efficient implementation on future fault-tolerant quantum computers.
- Exploring the relationship between graphical calculi for quantum computing, propositional model counting, and computational complexity.

- Developed tooling for use by AI researchers to automate containerized machine learning tasks,
- Wrote a CLI application in Go to orchestrate Docker containers, including bindings to CPython and VS Code integration in Typescript,
- Implemented an authentication system based on elliptic curve digital signatures in Typescript and Go - used to imple- ment a federated learning system with SSH.

- Development of sample code in Python, Processing and Scratch,
- Writing lesson plans and presentations for use by teachers,
- Putting together paper resources and robotics equipment for classes.

A library to parse, type-check and transpile OpenQASM 2.0 programs focusing on high-quality error messages, as well as a utility to render them into circuit diagrams.

See The CodeA hobby OS project for 32-bit x86, currently capable of running simple ELF files. Has drivers for VGA Text Mode, Serial, PC Speaker and PS/2 Keyboards.

See The CodeA parallel raytracer supporting environment maps, shadows, emissive objects, and diffuse, glossy, and reflective materials.

See The CodeAn implementation of the quadratic sieve integer factorization algorithm. Has been successfully used to factor 60 digit semiprimes.

See The CodeA computer algebra system with natural language input designed for A-level students.

See The CodeAn interpreter for a dynamically typed functional language with similar syntax to Haskell.

See The CodeA program to automatically create proofs or counterexamples for a class of exponential identites.

See The CodeA prototype editor for the Pixelengine library that uses ECS architecture, custom GUI library and macros to generate controls automatically from data structures.

See The CodeA program to generate and render planets in OpenGL using Perlin noise and ray marching.

See The CodeA port of the Processing framework to Rust in OpenGL. Shown is an example platforming game that uses GLSL shader post-processing to achieve a Neon/CRT aesthetic.

See The CodeA 2D physics library, using a quadtree for efficient collisions with static objects.

See The CodeA visualization of different sorting algorithms. Pictured is in-place merge sort.

See The CodeA simulation of applying forces to a rotating object using moments.

See The CodeA web app to search for A-level Maths past papers, designed to help with revision. Live here.

See The CodeA Chrome extension to download eBooks automatically from AO3 and FFN via FicSave.

See The CodeA breakout and development board for the Atmel ATmega4809-PF MCU. Supports USB-Serial and I2C via the MCP2221A. Includes USB and DC power inputs with regulation.

A 65C02-based single board computer with 32k RAM and 24k ROM. Has an expansion port for an ATmega4809-based video card and PS/2 keyboard input interfacing via a 65C22.

A simple voltage-controlled oscillator compatible with the 1V/oct and 10Vpp standard.

3 years experience

Other projects not listed above include:

- A compiler for a statically-typed systems language with user definable operators and inline assembly,
- An OpenGL project to render text directly on the GPU from Bezier curve data using geometry shaders,
- Interpreters for Basic and Lisp,
- An implementation of the AES encryption system,
- Parsers for various binary formats, including the FAT file system, the Multiboot 2 specification, EDID data and ACPI tables.

3 years experience

Other projects not listed above include:

- A regular expression engine, and a parser combinator library,
- An implementation of Lisp, and a prototype language compiling to C,
- A library to compute exact derivatives of functions automatically,
- A library to compute probability distributions and extrapolate series.

6 years experience

Other projects not listed above include:

- A library extending Python to add algebraic data types using metaclasses, and adding functional programming methods to built-in types.
- A program to derive Markov chains from text data,
- A compiler for a language using LLVM, various Lisp interpreters,
- A program to solve Sudoku puzzles efficiently,
- An art program that uses the touchpad of a Macbook as a drawing tablet.

- Go (3k lines written, 1 year experience): A hobby operating system project.
- Assembly (2k lines written): A Lisp interpreter for x86, a calculator for 6502, and a VGA video generator for AVR,
- Verilog: A CPU using the one instruction set SUBLEQ architecture, and a more traditional 8-bit CPU.
- C: A hobby operating system project.
- C++: An indoor positioning project for Arduino using Wi-Fi, Accelerometer and Barometer data to determine position. Included a GUI component using a resistive touch screen. Developed as part of an Engineering Education Scheme project supervised by Intel. We came first in the south west region and won a CREST Gold award for the project.

1: According to the Fulbright Commission, a 1st (70-100%) is 4.0 GPA equivalent - see here.

Designed by Tuomas Laakkonen and built using Bootstrap v4, Bootstrap Icons, and jQuery, for which the licenses are linked.