Teaching

Here are descriptions of the courses that I regularly teach at Cal Poly:

EE 428: Computer Vision

This course introduces students to the field of computer vision. Visual perception is a fundamental component of human and animal intelligence, and replicating this capability in computers and robots has long been a goal of artificial intelligence researchers. Discovering successful algorithmic approaches to computer vision tasks can also reveal insights into the mechanisms of biological vision. Computer vision is a broad and deep field, and this course covers a wide range of topics, including an overview of the human visual system, fundamentals of cameras and optics, image formation, image processing and filtering, detection of lines and shapes, reconstruction of 3D geometry, object recognition and detection, and image segmentation.

We explore these topics through a mix of interactive lectures, short lab exercises, quizzes, and bi-weekly programming homework assignments. For the cumulative assessment, students work in small teams to implement a computer vision system that solves a practical problem.

CSC 587: Advanced Deep Learning

Exploration of current research in deep learning, including supervised learning, semi-supervised and unsupervised learning, generative models, and reinforcement learning.

Typically I split class time equally between interactive lecture and student presentations and discussion of recent research papers. In the bi-weekly homework assignments students implement and analyze various deep learning methods. Students also work in teams on an open-ended final project.


I also regularly teach data science courses including DATA 301: Introduction to Data Science, DATA 401: Data Science Process and Ethics, and the data science capstone (DATA 451 and 452).