solutions to Programming Assignment 2