Jonathan Schaeffer, PhD

Phased Post Retirement-Faculty, Faculty of Science - Computing Science


Phased Post Retirement-Faculty, Faculty of Science - Computing Science




  • B.Sc., Computer Science, University of Toronto, 1979
  • M.Math, Computer Science, University of Waterloo, 1980
  • Ph.D., Computer Science, University of Waterloo, 1986


  • Dean of Science (2012-2018)
  • Vice Provost and Associate Vice President (Information Technology) (2008-2012)
  • Chair, Computing Science (2005-2008)



Artificial Intelligence
Computer Games


I am interested in anything to do with heuristic search (such as single-agent (A*) and two-player (alpha-beta) search). Single-agent search has important industrial applications including planning problems and optimization problems.

We work on commercial games with our partners Electronic Arts and BioWare. Some of the problems we are looking at are AI scripting, path-finding, earning, and testing. We have applied our work to role-playing games, sports games and real-time strategy games.

I am co-founder of Onlea (, the world's first MOOC (Massive Open Online Course) production company. Our mission is to create "Mindful online learning crafted with scholarship, creativity and quality." We strive to achieve the highest possible engagement, completion and retention rates in all of our products.


CMPUT 379 - Operating System Concepts

Introduction to the structure, components, and concepts behind modern general-purpose operating systems. Processes: process state transitions; operations on processes; interrupt processing; multiprocessor considerations; resource allocation; synchronization; critical sections and events; semaphores; deadlock: avoidance, detection, and recovery; memory management; virtual memory; paging and segmentation; page replacement strategies; working sets; demand paging; process scheduling; scheduling algorithms; file system functions; file organization; space allocation; virtual machines. Prerequisites: CMPUT 201 and 204, or 275; one of CMPUT 229, E E 380 or ECE 212.

Browse more courses taught by Jonathan Schaeffer