Project submission for Warwick University - CS909 - Final exercise.