Programming Assignment 2

Full implementation.