I’ve been teaching in the Cognitive Systems (https://cogsys.ubc.ca/) department for a number of years at UBC. My favourite course to teach is COGS 300: Understanding and Designing Cognitive Systems. It’s a big open-ended course, but the core lab project is building your own cognitive system by learning to make real, live robots. The students design their robots to solve mazes and find objects, then compete in a tournament for best time.
The biggest challenge with COGS 300 is that the students are coming in with very little programming experience, and usually a not very techincal background. The COGS program has four streams (psychology, linguistics, philosophy, and computer science), so you may or may not be getting people who have an aptitude or confidence in programming. I always tell students that they will be surprised at how capable they are—some of my best students have not been computer science majors!
This year, we have some funding to upgrade the COGS 300 labs. That means better documentation, better equipment, and hopefully more interesting and relevant lab content. My hope is to work some machine learning into the labs in a way that is still accessible and teachable. I’ve decided that reinforcement learning is the best approach given the time constraints and other content we teach in the course.
In these blog posts, I am going to document the process of redeveloping COGS 300 to include reinforcement learning. Stay tuned!