CS486/686 - Spring 2005  Introduction to Artificial Intelligence

Instructor: Pascal Poupart
Email: cs486 [at] cs [dot] student [dot] uwaterloo [dot] ca
Newsgroup: uw.cs.cs486
Office Hours: TBA (DC2514).
Lectures: Tuesday & Thursday 08:30-09:50 (RCH306) or 11:30-12:50 (MC2054)
Teaching Assistants: Laurent Charlin, Martin Talbot, David Yeung, Fred Kroon, David Tausky


The design of automated systems capable of accomplishing complicated tasks is at the heart of computer science.  Abstractly, automated systems can be viewed as taking inputs and producing outputs towards the realization of some objectives.  In practice, the design of systems that produce the best possible outputs can be quite challenging when the choice of outputs is constrained, the consequences of the outputs are uncertain and/or dependent on other systems, the information provided by the inputs is incomplete and/or noisy, there are multiple (possibly competing) objectives to satisfy, the system must adapt to its environment over time, etc.  This course provides an introduction to Artificial Intelligence, covering some of the fundamental topics that underly automated reasoning.  The modeling techniques that will be covered are quite versatile and can be used to tackle a wide range of problems in many fields including game playing (e.g., chess, poker),  robotics (e.g.,  mobile robot navigation),  automated diagnosis (e.g., medical diagnosis, fault detection), data mining (e.g., fraud detection, information retrieval), operations research (e.g., resource allocation, maintenance scheduling), speech recognition, etc.


The topics we will cover include:

  1. Introduction to Artificial Intelligence
  2. Search and Problem Solving
    1. Uninformed Search
    2. Informed Search
    3. Local Search
    4. Constraint Satisfaction Problems
    5. Adversarial Search
  3. Reasoning Under Uncertainty
    1. Probability Theory
    2. Bayesian Networks
    3. Utility Theory
    4. Decision Networks
    5. Markov Decision Processes
    6. Multi-agent Systems
  4. Machine Learning
    1. Inductive Learning
    2. Decision Trees
    3. Ensemble Learning
    4. Statistical Learning
    5. Neural Networks
    6. Reinforcement Learning
  5. Subareas of Artificial Intelligence
    1. Natural Language Processing
    2. Computational Vision
    3. Robotics

Course Organization:

The course material will be covered primarily in lectures. You should also read the appropriate chapters of the textbook assigned for each lecture. When lecturing with slides, I will make my lecture slides available online in PDF format. These are not intended to replace your lecture notes, but to supplement them and help you organize them. They will be posted within a couple of days of the lecture, after I have a chance to correct the inevitable typos that you will find in class :-)

There will be four assignments given in the course.  Each assignment will have a theoretical part and a programming part. The approximate out and due dates are:

Assignments are due at the beginning of class unless stated otherwise.  No late assignment will be accepted.

Graduate students registered in CS686 are also required to do a course project.   The project will consist of investigating a research problem chosen by the student.

There will be a midterm test on June 21st 8pm-9:30pm.  There will also be a final examination to be scheduled by the registrar. 

Grading Scheme


CS686 (graduate students only):


The textbook for CS486/686 is Artificial Intelligence: A Modern Approach (2nd Edition), Prentice Hall, by Russell and Norvig.  This will be the main reference for the course.  Readings in the textbook are assigned for every lecture in the course schedule.