Advanced Programming Techniques Assignment 4 Solution