Final Version of Programming Assignment 2