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. Other lectures will introduce additional aspects of AI, including unsupervised and on-line learning, autonomous robotics, and economic/game-theoretic decision making.

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.



Mondays and Wednesdays at 1:30-2:50pm


Doherty Hall 1212

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:

    If the homework is due on a class day, then you may submit it by the end of the class to the TAs (in class, at their offices, or by email). If the homework is due on another day, then you may turn it in to the TAs (hard copy or email) by noon on the announced day. If you submit the homework by email, please attach only pdf files for the non-programming exercises.

  • Late Homework:

    You have 8 late days, but you cannot use more than 2 late days per homework.

  • 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 for the programming questions in pairs. Make sure that you include a txt file with your name and your collaborator's name.

The homework due dates and topics are subject to change.



  • 35% final
  • 15% midterm
  • 50% homeworks

Extra credit of up to 3 points will be given for participation (measured by clickers and quizzes).

Mailing List:

To subscribe to the list follow the link: https://mailman.srv.cs.cmu.edu/mailman/listinfo/15381-f12-announce