Final project for CSE 219 at Stony Brook University