My CPSC 431 Final Project at Yale.