Advanced Programming Techniques Assignment 3 Solution