[Various bits of this course description are still under construction.]
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/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/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/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/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.
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.
You must add three switch-controlled trace messages to Peter Norvig's Sudoku solver.
When you turn in your Python program, it will be tested on several different puzzles, with different trace settings.
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.
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.
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.
These may be adjusted. Attendance will be taken in class.