Relevant coursework
Some classes at Exeter, and what I built in them.
Applied mathematics · 2026
Fourier Series
A square wave, reconstructed with odd sine harmonics.
Square wave
Odd sine harmonics reconstruct the wave; the overshoot at each jump persists as more terms are added.
Dashed: target function · Solid: partial sum · All functions have period 2π.
CSC590 · 2026
Creating & Cracking Secret Codes
Design project: ECDSA Blockchain
I rebuilt my cryptography design project as a Python mini-blockchain, implementing elliptic-curve arithmetic and ECDSA from scratch.
Project on GitHub ↗inverse · add · doublescalar multiplication · ECDSAwallets · mined blocks · hashesThe rebuild
This is my rebuilt Python implementation of the course project. I implemented modular inversion, secp256k1 point addition and doubling, scalar multiplication, key generation, and ECDSA signing and verification. The curve and signature code uses only the Python standard library; SHA-256 comes from hashlib.
Signed transactions bind the sender, receiver, amount, and transaction nonce. The chain validates balances and proof-of-work blocks, rejecting overspends, replayed payments within the chain, and altered transaction data. Chain state can be saved and reloaded as JSON.
Try signing a transaction
Sign, change the amount, then verify again.
The signature will appear here.Interactive companion using Web Crypto’s ECDSA P-256. The linked Python rebuild implements secp256k1 from scratch.
CSC590 · 2026
Game Playing AI
Course project: Connect Four
My minimax agent for a course Connect Four project, with alpha–beta pruning, iterative deepening, and a center-weighted heuristic.
Your move. You’re red.
Browser companion to my Python agent, using the same run weights, center preference, and depth-four alpha–beta search.
The agent
I implemented minimax with alpha–beta pruning and iterative deepening. Center-first move ordering makes promising moves available early, while a 4.8-second deadline bounds the original Python search.
The heuristic rewards my two- and three-piece runs, penalizes the opponent’s runs more strongly, and adds a center-column preference. An eight-entry opening book handles the empty board and first replies.
This was one of the projects throughout Game Playing AI, rather than a final design project. My work is the agent and opening-book builder within the supplied course game framework.
CSC590 · 2025
Database & Back-End Web Development
Design project: CarMaximum
A collectible-car marketplace with accounts, a garage, buying and selling, trades, messaging, and rotating 3D car previews.
The application
Express routes connect the interface to MySQL. The schema links users, cars, ownership records, trade requests, and messages. Joins assemble a user’s garage and trade dashboard.
The application includes bcrypt password hashing and session-based login, car purchases and sales, trade requests, and user-to-user messaging. A-Frame supplies rotating 3D previews of the cars.
CSC505 · 2024
Data Structures & Algorithms
Design project: Hollow Chamber
My CSC505 design project: a roulette-inspired Pygame game with a six-chamber state, dice-driven turns, and five opponents with different decision policies.
Project on GitHub ↗How it plays
My CSC505 design project is a roulette-inspired Pygame game. A dice roll advances the circular chamber index, and turn handling, cooldowns, and restart logic keep the state connected to the interface.
Five opponents use different stochastic decision policies. Mathy Martha estimates a remaining-chamber probability and adds noise to her decisions.