Below are the courses that I am or will be teaching at the University of Waterloo.

ECE406: Algorithm Design and Analysis (Winter 2018)

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.

ECE380: Analog Control Systems (Winter 2018)

Introduction to control systems. Advantages of closed-loop feedback systems. The role of the system mathematical model. Block diagrams and signal flow graphs. The basic control system design problem, stability in control systems. Frequency response analysis techniques. Root-locus analysis. Elementary lead-lag compensation.

ECE686: Filtering and Control of Stochastic Linear Systems (Winter 2017)

This course is concerned with discrete-time systems subject to disturbances. We seek to estimate quantities associated to these systems and to optimally control the evolution of these systems. Broadly speaking, we are interested in decision making under uncertainty. The first half of the course establishes the fundamentals of the estimation problem, culminating in the derivation of the fact that state estimation in linear systems is equivalent to projection onto a closed linear subspace generated by an observation process in a Hilbert space of random variables. This leads to the Kalman filter, which finds use in many applications ranging from aerospace to finance. The course will then cover the issues of stochastic optimal control (based on dynamic programming), the linear quadratic Gaussian (LQG) control problem and optimal control of Markov chains over infinite horizons.

ECE780 T08: Topics in Motion Planning and Coordination (Spring 2017)

There has been a surge of research in recent years on enabling mobile robots to autonomously perform complex tasks. Applications of such systems include monitoring complex spaces, autonomously transporting goods and people, and providing on-call assistance to elderly or disabled persons. This course will discuss key tools and techniques that are employed in this area. The course will start with basic path planning---how do we get a robot to move from point A to point B? We will then move onto more complex problems, such as dynamic vehicle routing (DVR) where robots are "on-call" and must respond to service requests in real-time. This will require a discussion of multi-robot coordination and some important problems in that area.

ECE300A: Electrical and Computer Engineering Practice (Winter 2015)

Areas of research and professional practice in Electrical and Computer Engineering. Exposure to concepts from other Engineering disciplines. Support material for the academic term, cooperative education, and professional or career development. The focus is on engineering design principles, project management, and design proposals.

ECE486: Robot Dynamics and Control (Spring 2013)

This course covers the algorithms and conventions used for modeling and controlling articulated robotic systems such as robot arms. In the first half of the course, kinematic and dynamic models of robot arm motion are developed. In the second half of the course, algorithms for designing robot trajectories and controllers are introduced. The course also has a laboratory component, where robot trajectory planning, kinematic and dynamic modeling and control strategies are demonstrated.