teaching
Portfolio of courses taught.
ECE493/657D Neural Networks and Deep Learning
(Winter 2026)
Recent advances in neural network architectures and training algorithms have catalyzed significant breakthroughs in image classification, machine translation, protein folding, and beyond. This course follows the evolution of neural networks and their training algorithms, from the introduction of the perceptron in the 1950s and 1960s to the advent of ChatGPT in the 2020s. Topics covered include key training approaches such as maximum likelihood, contrastive learning, and diffusion modeling, as well as significant architectures such as convolutional nets, graph nets, and transformers. The course will also discuss how neural nets can learn useful “representations” of data, and explore recent trends in training models on web-scale datasets.
- Course outlines (requires UW login): ugrad course; grad course
ECE406: Algorithm Design and Analysis
(Winter 2025, Winter 2024)
Design and analysis of efficient, correct algorithms. Advanced data structures, divide and conquer algorithms, recurrences, greedy algorithms, dynamic programming, graph algorithms, search and backtrack, inherently hard and unsolvable problems, approximation and randomized algorithms, and amortized analysis.
- Course outline (Winter 2024 version)
CSC384: Introduction to Artificial Intelligence
(Winter 2022 at University of Toronto)
Broad introduction to the foundational concepts of AI. Search algorithms, complexity analysis, constraint satisfaction, knowledge representation, probability and uncertainty, graphical models, games.