University of Alberta CMPUT291 Project 1