CS276: Programming Assignment 3