These are the courses I teach each year, and which I have either built from scratch or fully re-designed. Besides the courses below, I've also taught Computer Organization (CSCB58), Analysis and Design of Data Structures and Algorithms (CSCB63), and Machine Learning (CSCC11)

Introduction to Computer Science II (CSCA48)

This course is where we start exploring fudamental problems and ideas in Computer Science. You will acquire fundamental principles for organizing, storing, and manipulating information in a computer, learn the importance of computational efficiency and how/why we measure it, and explore computational tools such as recursion as a means for solving certain kinds of problems. Fully re-designed in 2019.

Learn More

Fundamentals of Robotics and Automated Systems (CSCC85)

Here we explore fundamental ideas in the operation and implementation of automated systems, such as those used in consumer electronics (personal training monitors, smartphones, etc.), transportation (self-driving vehicles), and Robotics. Topics include sensor and signal processing, robot localization and path planning, real time constraints, redundancy and fail-safe operation, and ethical issues. This is the home of Robo Soccer @ UTSC!

Learn More

Computer Graphics (CSCD18)

This course covers the principles behind modern photo-realistic image rendering. We explore the image formation process and the computational issues involved in simulating that process in a computer. Object representation and modelling, cameras and coordinate frames, light and colour. You will build your own image rendering engine!

Learn More

Artificial Intelligence (CSCD84)

This course is an exploration of classical techniques in A.I. - read: It's not all about Deep Learning (though we will study neural nets and see how and why they evolved into current deep network architectures). Our course explores problems such as path-finding, adversarial games, constraint satisfaction, and reinforcement learning.

Learn More