Site menu:

Course Overview

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 core 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 natural language processing (e.g., topic modeling, document clustering), 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), assistive technologies, etc.


Teaching Assistants


The main text is A second useful reference is


We will be using the Piazza discussion board. Please sign up for Piazza and the course here.

Public Piazza posts (can be anonymous) are the prefererd method for questions about course material. Students can then help each other out and instructors can also read and reply so that everyone in class can see the responses. Private Piazza posts (to instructors only) can be used for any post that contains solution snippets or private questions. All lecture material is available on this site (under Schedule) as well as on Learn. Assignments will be posted on Learn.


For students registered in CS 486 For students registered in CS 686