This course is about the theory and practice of Artificial Intelligence. We will study modern techniques for computers to represent task-relevant information and make intelligent (i.e. satisfying or optimal) decisions towards the achievement of goals. The search and problem solving methods are applicable throughout a large range of industrial, civil, medical, financial, robotic, and information systems. We will investigate questions about AI systems such as: how to represent knowledge, how to effectively generate appropriate sequences of actions and how to search among alternatives to find optimal or near-optimal solutions. We will also explore how to deal with uncertainty in the world, how to learn from experience, and how to learn decision rules from data. We expect that by the end of the course students will have a thorough understanding of the algorithmic foundations of AI, how probability and AI are closely interrelated, and how automated agents learn. We also expect students to acquire a strong appreciation of the big-picture aspects of developing fully autonomous intelligent agents, in particular, how to use economic and game-theoretic models to reason about agent interaction.

Learning Objectives

By the end of the course, students should be able to:

  1. Identify the type of an AI problem (search, inference, decision making under uncertainty, game theory, etc).
  2. Formulate the problem as a particular type. (Example: define a state space for a search problem)
  3. Compare the difficulty of different versions of AI problems, in terms of computational complexity and the efficiency of existing algorithms.
  4. Implement, evaluate and compare the performance of various AI algorithms. Evaluation could include empirical demonstration or theoretical proofs.


It is helpful, but not required, to have Artificial Intelligence: A Modern Approach / Russel and Norvig.



Tuesdays and Thursdays at 12:00pm-1:20pm


Gates Hillman Complex 4307

The topics and dates of the lectures are subject to change. The following schedule outlines the topics that we will be covering in this course.


Policy on:

  • Submission:

    Please submit the homework according to the instructions on the handout. This normally means submitting to your folder on afs, under a directory named HWx. Theoretical exercises should be submitted as a pdf file.
    If you are having trouble accessing your submission folder, please contact one of the TAs before the assignment deadline so we can help you solve your problem as soon as possible and you will be able to submit on time.

  • Late Homework:

    You have 8 late days, but you cannot use more than 2 late days per homework. No credit for homework submitted more than 2 days after the due date.

  • Collaboration:

    You can discuss the exercises with your classmates, but you should write up your own solutions. If you find a solution in any source other than the material provided on the course website or the textbook, you must mention the source. You can work on the programming questions in pairs, but theoretical questions are always submitted individually. Make sure that you include a README file with your andrew id and your collaborator's andrew id.

The following schedule outlines the homework due dates and their corresponding subjects.