Programming Assignment 2: Solution