CS 343: Artificial Intelligence

[Various bits of this course description are still under construction.]

Lecture Topics and Reading Assignments

The reading assignments are from the textbook, and should be read before the corresponding class. They average about 20 pages per class, and should take 1-2 hours to read carefully. (You will find that, if you make a practice of doing the reading carefully before each class, you will learn more, you will get a better grade, and you will use your time and effort more efficiently and effectively.)

date lecture topic read before class
1/14 What is AI? chapter 1
1/16 Agents and environments chapter 2
1/21 (MLK holiday)
1/23 State spaces and search chapter 3
1/28 Informed search 4.1, 4.2, 4.3, 4.6
1/30 Constraint satisfaction problems chapter 5
2/4 Logical agents 7.1-7.5
2/6 Propositional inference 7.7, 7.8, 8.1
2/11 First-order logic 8.2, 8.3, 8.4, 8.5
2/13 First-order inference 9.1-9.4, 9.6 (+ box p.302)
2/18 Representing knowledge 10.1, 10.2, 10.3, 10.6, 10.9
2/20 Planning 11.1, 11.2, 11.3
2/25 Planning algorithms 11.4, 11.5, 11.6, 11.7
2/27 Resources and hierarchy 12.1, 12.2, 12.3
3/3 Non-deterministic environments 12.4, 12.5, 12.6, 12.8
3/5 Mid-term exam
Spring Break
3/17 Uncertainty chapter 13
3/19 Bayesian networks 14.1, 14.2, 14.3, 14.7
3/24 Inference in Bayesian networks 14.4, 14.5, 14.8
3/26 Probabilistic reasoning over time 15.1, 15.2, 15.3, 15.7
3/31 Decision analysis 16.1-16.5, 16.7, 16.8
4/2 Learning decision trees 18.1, 18.2, 18.3, 18.6
4/7 Statistical learning 20.1, 20.2
4/9 Kernel methods 20.4, 20.6, 20.7, 20.8
4/14 Reinforcement learning 21.1, 21.2, 21.3, 21.6
4/16 Grounding symbols in perception 24.1, 24.5, 24.6, 24.7
4/21 Vision chapter 24
4/23 Robotics chapter 25
4/28 Philosophy: Is AI possible? chapter 26
4/30 Philosophy: What if we succeed? chapter 27
5/8 Final Exam (2:00 - 5:00 pm)


The total credit for programming assignments will be spread across 3.5 to 4.5 assignments. (Assignment 0 is worth 0.5; the others will be worth 1.0.) Programming assignments will be done in Python.

Assignment Due Dates

The assignments will be turned in using the turnin program.

Some details of exactly what will be turned in, and how it will be graded, will be provided on the class Wiki. Use the information below to get started.

Assignment 0: Hello World!

Learn and use Python:

You must add three switch-controlled trace messages to Peter Norvig's Sudoku solver.

In various combinations, these trace-switch settings should make it possible for a viewer to get a clear picture of what the solver is doing. (It should be quite helpful for debugging.)

When you turn in your Python program, it will be tested on several different puzzles, with different trace settings.

Assignment 1: Modeling Expertise in Sudoku

When humans solve Sudoku puzzles, they typically use various sorts of constraint propagation, resorting to limited amounts of backtracking search only for the most difficult cases. As a human increases in expertise at solving Sudoku puzzles, they seem to use more and more sophisticated types of constraint reasoning. Your task will be to model this.

Sudoku puzzles are often classified in four levels of difficulty. For example, Websudoku has the levels: Easy, Medium, Hard, and Evil. Your task will be to write four Sudoku-solvers, with expertise at each of these levels. That is, the program at a given level should be able to do well on puzzles at that level and below, and poorly at higher levels.

You may start from Peter Norvig's code, which you got running in Assignment 0. However, we will say that Norvig's code runs at the "Supernatural" level of expertise, since it has little difficulty with the supposed "hardest Sudoku puzzle". Your top level of expertise should be able to solve most "Evil" puzzles, but not these extremely hard puzzles. It is possible that you will need to change the underlying state representation to do this assignment.

Assignment 2: Implement a Simple Knowledge Representation and Inference System

You will implement a frame-based knowledge representation including a logic programming language with both forward and backward chaining inference rules. You will do your implementation in Python, but the language design is drawn from Algernon, which is implemented in Lisp.

Assignment 3: Create a Knowledge Base for UT Courses, Majors, and Graduation

You will implement an an ontology including these important sets: Courses, Departments, Majors, Requirements, Offerings, and Students. You will also implement necessary relations among them, and rules for drawing the relevant inferences. The task will be to represent the requirements for graduating with a variety of majors (for example, the various majors offered by the Computer Science Department), and to check the transcript of particular students to determine whether they have met the requirements for graduating with a particular major.


Class participation: 10%
Assignments (4?): 40%
Mid-term exam: 20%
Final exam: 30%

These may be adjusted. Attendance will be taken in class.

Handout Slides

Additional Handout Readings

Code of Conduct

The Computer Science Department has a Code of Conduct that describes the obligations of faculty and students. Read it at http://www.cs.utexas.edu/users/ear/CodeOfConduct.html.