Cognitive Systems 300 UBC Lab 2 source code