CMPT 306 class project