Projects & Courses
Below is essentially a stock take of every course and project that I've done. For a more curated list of experience see my CV.
2026
- Revisited Graphics coursework in C++ here
- Revisited functional programming coursework in Haskell here
- Created this site
- Boot.dev Courses: Learn Go, Learn HTTP Clients in Go, Learn SQL
- Boot.dev Projects: a Pokedex CLI in Go using the PokeAPI, a Static Site Generator and a Maze Solver in Python
2025
- Made a CHIP-8 Emulator in Rust
- Made a Path Tracer in Rust, following the first two books of Peter Shirley's Ray Tracing series
- Made an NFA-based regex matcher in C++, using Thompson's algorithm
- Made a POSIX compliant shell in Rust
- From NAND to Tetris (Modules 1-6), which included building an assembler, which I did in Haskell
- Boot.dev Courses: Introduction to Python, OOP in Python, Functional Programming in Python, DSA in Python (1 & 2), Linux (I think this one was misnamed, it was about using the shell), Git, and Memory Management in C
- Boot.dev Projects: AI Agent using the Google Gemini web API, the game ‘Asteroids’, and a ‘bookbot’ all in Python
- Started using GitHub
- Installed Linux on an old laptop
2023
- freecodecamp.org’s Javascript DSA course (Projects: Palindrome Checker, Roman Numeral Converter, Caesars Cipher, Telephone Number Validator, Cash Register
2022
- Intro to Magik course
- Smallworld Application Development course
2021
- University of London: Mathematics MSc (Graph Theory, Number Theory and Geometry, Algebraic Number Theory, Linear and Non-Linear Optimisation, Mathematical and Numerical Methods (in finance), Wrote an essay on Fermat’s Last Theorem, My dissertation was on Riemann Surfaces)
- freecodecamp.org’s Responsive Web Design course (Projects: Build a Survey Form, Build a Tribute Page, Build a Technical Documentation Page, Build a Product Landing Page, Build a Personal Portfolio Webpage)
2020
- University of Bath: Mathematics BSc Year 3 Semester 2 (Advanced Algorithms and Complexity, Cryptography, Representation Theory of Finite Abelian Groups, Projective Geometry, Topology)
- LinkedIn Learning courses: Become A Web Developer Learning Path
- kaggle.com’s courses: Python and Intro to Machine Learning
2019
- Advanced Computer Graphics coursework: built a ray tracer with photon mapping in C++ (used a udemy course to learn C++ basics, followed Jensen's paper to implement photon mapping)
- Functional Programming coursework: built a Lambda Calculus interpreter using a Krivine Abstract Machine in Haskell (used learnyouahaskell.com for Haskell basics)
- University of Bath: Mathematics BSc Year 2 Semester 2 (Algebra 2B, Analysis 2B, Vector Calculus and PDEs, Mathematical Modelling, Functional Programming)
- University of Bath: Mathematics BSc Year 3 Semester 1 (Advanced Computer Graphics, Group Theory, Algebraic Curves, Continuum Mechanics, Mathematical Methods 1)
2018
- University of Bath: Mathematics BSc Year 1 Semester 2 (Algebra 1B, Analysis 1B, XX10190 pt2 (Discrete Maths and Programming), Statistics & Probability 1B, Methods and Applications 1B)
- University of Bath: Mathematics BSc Year 2 Semester 1 (Algebra 2A (Linear Algebra), Analysis 2A, ODEs and Control, Numerical Analysis, Foundations of Computation)
2017
- University of Bath: Mathematics BSc Year 1 Semester 1 (Algebra 1A, Analysis 1A, XX10190 pt1 (Discrete Maths and Programming), Statistics & Probability 1A, Methods and Applications 1A)
- Various MATLAB and R project during my undergrad