Assignment #3 for CMPT 270