csc421 algorithms project