CS276: Programming Assignment 4