teaching

Courses being taught by Prof. Mark Crowley.

Ongoing Courses

ECE 499 Engineering Project

The ECE 499 Project is an elective course that can be taken once by a student in their 4A or 4B term. Note that this is a single-term course. Once a project topic of interest is determined, then a supervisor should be found (typically a faculty member of ECE). The departmental web pages for faculty should be consulted to learn more about the research interests, recent publications and supervised graduate student thesis titles of the individual faculty members. You can find more information on outline.uwaterloo.ca for the current term https://outline.uwaterloo.ca or at the page below:

ECE 650 Methods and Tools for Software Engineering

This is an introductory graduate course. Its intent is to provide all students that are interested in software systems with a basic background that will help them succeed in subsequent endeavours (courses, research, and work in industry) related to software. The course is intended to be “hands-on” – there is a large project component that involves building a software system.

ECE 657A Introduction to Artificial Intelligence

This course provides an exploration of foundational concepts and techniques in Artificial Intelligence (AI), focusing on key subfields such as search, reasoning, planning, robotics, and uncertainty modeling. Students will learn to apply techniques like uninformed and heuristic search, constraint satisfaction, game-tree search, and probabilistic reasoning using Bayesian networks and decision theory (MDPs and POMDPs). The course also introduces planning for robotics, including SLAM and motion planning, and examines ethical considerations and societal impacts of AI.

ECE 475C : Reinforcement Learning

One of my core research areas is into understanding the computational mechanisms that can enable learning to perform complex tasks primarily from experience and feedback. This topic, called Reinforcement Learning, has a complex history tying fields as diverse as neuroscience, behavioural and development psychology, economics and computer science. I approach it as a computational researcher aiming to build Artificial Intelligence agents that learn to way Humans do, not by any correspondence of their "brain" and it "neural" structure by the algorithms they both use to learn to act in a complex, mysterious world.

Other Courses

Courses that I teach more rarely or which have changed fundamentally.

ECE 457B: Computational Intelligence

This course provides a rigorous examination of machine learning, structured to progress from fundamental principles to advanced methodologies. It encompasses a broad spectrum of supervised learning topics, including nonparametric and parametric models, linear and nonlinear approaches, deep learning paradigms, and probabilistic models. In the domain of unsupervised learning, students will delve into clustering, density estimation, and dimensionality reduction, while reinforcement learning will be introduced preliminarily. Assignments, an essential part of the curriculum, enable students to explore the intricate applications of machine learning. Theoretical knowledge is translated into practice through tutorials on industry-standard tools such as PyTorch and Keras. Interactive classroom discussions will pivot around both the practical trade- offs inherent in real-world applications and the theoretical underpinnings that provide an intuitive grasp of the field.

ECE 657A : Data Analysis and Machine Learning (DKMA)

Note that this course is no longer offered in this form. ECE 657A (see above) is now focussed on AI Fundamentals other than Machine Learning and ECE 657 (yes without *any* letter :| ) covers most of this Machine Learning content as well as other great topics.
Engineers encounter data in many of their tasks, whether the sources of this data may be from experiments, databases, computer files or the Internet. There is a dire need for effective methods to model and analyze the data and extract useful knowledge from it and to know how to act on it. In this course you will learn the fundamental tools for assessing, preparing and analyzing data.

ECE 750 T40 : Topics in Reinforcement Learning

This advanced topics graduate course will focus on the theories, methods and applications of Reinforcement Learning (RL). RL is an Artificial Intelligence/Machine Learning (AI/ML) approach for building systems that can learn how to make decisions through their own experiences in an environment. The domain is more difficult than supervised ML since it involves uncertainty and limited information about how the world, and its dynamics, actually function. It can also be seen the AI analogy for the Optimal Control problem, where there are no dynamics models available and the objective is not globally known.

ECE 606: Algorithms

Algorithms provide methods for solving problems, and are at the foundation of computing. It is important that practitioners in electrical and computer engineering understand how algorithms are designed, and how to analyze them for correctness and efficiency. It is important also to be able to distinguish intractable problems from ones that are tractable so one does not naively seek efficient solutions when none may exist. For cases that are intractable, it is important to know how to design approximate solutions that satisfy bounds on correctness and efficiency. Industry has long recognized the critical importance of algorithms that are correct and efficient.