Programming Assignment 2 Solution