All Projects

Things I've built while learning and experimenting.

Animal Drawing Classifier

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.

Java Read More
Game of the Goose Simulator

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.

Java Read More
Boxing Match Cinematic

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.

Blender Read More
Modified Connect 4 Agent

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.

Java Read More
Pips

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.

Prolog Read More
Calculator Game Solver

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.

Java Read More
License Plate Recognizer

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.

MATLAB Read More
Paintball

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.

Lisp Read More
Huffman File Compressor

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.

Java Read More
Closest & Farthest Pair of Points

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.

Java Read More
Two-Piece Hamiltonian Chessboard Tour

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.

Java Read More
Asymptotic Complexity Analyzer

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.

Java Read More
Brain MRI Scans Classification

Brain MRI Scans Classification

A brain tumor MRI image classifier built with Teachable Machine (transfer learning) and deployed as a TensorFlow.js web app.

JavaScript Read More
Java68 Compiler

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.

Java Read More
ext2 Filesystem

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.

C Read More
Pac-Man MC68000

Pac-Man MC68000

A Pac-Man-style game developed in MC68000 assembly using the EASy68K assembler and simulator.

Assembly Read More