All Projects
Things I've built while learning and experimenting.
Animal Drawing Classifier
A Java Swing app that recognises hand-drawn animals using only classic techniques — HSV colour histograms, flood-fill shape descriptors, PCA and a from-scratch neural network trained with backpropagation, one network per class.
Game of the Goose Simulator
A Java Swing app that estimates by Monte Carlo simulation how many turns a Game of the Goose takes to finish, validates the estimate against an exact analytical solver, and plays it out on an isometric 2.5D board.
Boxing Match Cinematic
A one-minute cinematic built in Blender 4.5 and rendered with Cycles — a boxing match between Baki Hanma and Yuji Itadori in a UIB-inspired arena, resolved as a single continuous take chaining nine cameras, with NLA-driven animation, PBR materials, volumetrics, particles and Python-scripted keyboard consoles.
Modified Connect 4 Agent
A Java Swing app that builds game-playing agents for a modified Connect 4 with adversarial search — minimax, alpha-beta pruning and a transposition table — lets a human face them, and runs agent-versus-agent tournaments as a benchmark.
Pips
A solver for the NYT Games Pips domino puzzle written in pure SWI-Prolog logic programming, where a single reversible predicate can either check a proposed solution or compute one from scratch through backtracking.
Calculator Game Solver
A Java Swing app that solves the calculator game with dynamic programming, lets you play it interactively with perfect-play hints and a live decision tree, and benchmarks a family of DP solver strategies against each other.
License Plate Recognizer
A MATLAB image-processing pipeline that reads European license plates, identifies the issuing country from the EU strip, and stays robust to Gaussian noise — classic computer vision, no learned model.
Paintball
A turn-based Paintball simulator written in XLISP-PLUS in a strictly functional style — immutable state, no mutation, no loops — where two AI agents fight to destroy the enemy base by painting it in all three colours.
Huffman File Compressor
A Java Swing app that compresses and decompresses files and directories with the greedy Huffman algorithm, visualizes the resulting code tree, and benchmarks four interchangeable priority-queue implementations used to build it.
Closest & Farthest Pair of Points
A Java Swing app that finds the closest and farthest pair of points in a 2D cloud, pitting a brute-force strategy against a divide & conquer one both visually and in a benchmark that estimates where divide & conquer starts to pay off.
Two-Piece Hamiltonian Chessboard Tour
A Java Swing backtracking solver for a variant of the knight's tour: two pieces share a single Hamiltonian tour of a chessboard, moving in alternating turns, with the rule that neither may ever be in a position to capture the other.
Asymptotic Complexity Analyzer
A Java Swing app that measures the real execution time of four reference growth orders on the JVM, plots the curves live, and checks a fitted prediction against a fresh measurement — the foundational practice of the Advanced Algorithms course.
Brain MRI Scans Classification
A brain tumor MRI image classifier built with Teachable Machine (transfer learning) and deployed as a TensorFlow.js web app.
Java68 Compiler
A complete compiler for Java68, a small imperative language of our own design, that takes a program through every classic phase — lexical, syntax and semantic analysis, three-address code and optimization — down to Motorola 68000 assembly ready to run on a simulator.
ext2 Filesystem
A Unix-like filesystem written in C, inspired by ext2 — an mmap block layer, inodes with single/double/triple indirect pointers, path resolution with pluggable caching, and POSIX semaphores for safe concurrent access, all exposed as a suite of mi_* command-line tools.
Pac-Man MC68000
A Pac-Man-style game developed in MC68000 assembly using the EASy68K assembler and simulator.