CSCI 373

Artificial Intelligence

Professor:Andrea Danyluk
email:andrea "at" cs "dot" williams "dot" edu
phone: x2178
Office:TCL 305
Office Hours:Mon 1:30-3:00 PM, Wed 8:00-9:00 PM, Thurs 1:30-3:00 PM, and by appointment. Additional office hours before assignment due dates TBA.
Lectures:MWF 12:00-12:50, TCL 206
Lab:TCL 312

Course Description

Computer Science 373 is an introduction to Artificial Intelligence (AI). Artificial Intelligence is a concept that has been pondered by many, from computer scientists to philosophers to novelists and screenwriters. While many of the popular notions of AI can trace their roots back to the vision of the field's pioneers, the popular view of AI doesn't begin to touch the surface of this rich discipline.

Many familiar concepts in computer science have emerged (either directly or indirectly) from research in AI. Compilers, timesharing, and the object-oriented programming paradigm can all trace roots back to the early days of AI. More recently, the field of AI has expanded considerably to include topics that don't necessarily mimic human thought and behavior, but instead go beyond it. Robots now explore areas that humans can't reach; cars drive themselves without needing coffee to keep them awake late at night; and data-mining algorithms find patterns in terabytes of data that no human could possibly analyze.

The first half to two-thirds of this course will be devoted to the study of core AI topics: problem solving and search, logical and probabilistic reasoning, and learning. In the remainder of the course we will touch on a selection of related topics, focusing our attention on recent research that integrates two or more of the areas addressed earlier in the semester.

There are far too many topics within AI to consider all of them in twelve weeks. Indeed, each topic is rich enough to be a course on its own. Therefore, during the second half of the semester, you will have the opportunity to explore in depth a topic of your choice. The exploration will take the form of an extended project - from initial investigation of readings to the development of a large software system, which you will present to your classmates.

In order to help prepare you for the project, I will have you complete five programming assignments - one warm-up exercise and four more substantial exercises. There will be no final exam. Instead, there will be an in-class exam just before you embark on the final design and programming segments of your project.

Programming Assignments

Programming assignments for this class will be done in Lisp and Java. Both are available on the Unix machines in TCL 312. While you may choose to work on your own personal computers, note that the programs will be tested on a machine that is set up like those in the lab. Therefore, you should be certain your programs run properly on those machines before you submit them.

You will be graded on the correctness of your work and on your programming style; you will also be expected to contribute at least one test case for each assignment so that we can develop a class repository of test cases.

All work that you turn in will be tested by me. In addition, after turning in each assignment, you will meet with me for a mini code review. You should allow approximately 15-20 minutes for your individual review after assignment 1 and 20-40 minutes for each subsequent team review.

Assignment Date Assigned Due Date Code Review (Tentative)
Lisp Practice (individual) Sept. 17 Sept. 24 Sept. 25
Search (team) Sept. 24 Oct. 1 Oct. 2
Games(team)Oct. 1 Oct. 12 Oct. 16
Logic(team) Oct. 12 Oct. 22 Oct. 23
Machine Learning(team) Oct. 29 Nov. 12 Nov. 13, 15

Project

You will have the opportunity to explore an AI topic in depth by completing a project that will span more than four weeks. You will propose your own goal and will work on it alone or with a partner. I will evaluate your project at five milestones: initial paper surveying research on the topic you hope to explore, preferably describing a specific set of algorithms you would like to consider; a project proposal; design review; code review; and final demonstration and presentation. Presentations will be in the style of a mini symposium, to be scheduled during the final reading period at the class's convenience.

Dates for each of the milestones are as follows:

PaperOct. 29
ProposalNov. 16
Design ReviewIn class: Nov. 26 and 28
Code ReviewIn class: Dec. 3 and 5
Mini symposiumTBD

Exams

There will be one examination, which is scheduled to be given in class on Monday, November 19. A sample exam will be provided closer to the actual exam date.

Evaluation

5%Class participation
45%Programming assignments (5% each for Lisp Practice and Logic; 10% each for Search and Games; 15% for Learning)
10%Exam
40%Final project

All assignments are due at noon on the given due dates. Assignments will be accepted late, but with a penalty of 10% per day. (Late assignments will not be guaranteed a code review.)

Note that with the exception of the first programming assignment and the exam, all work will be collaborative. For more information on the guidelines governing the extent of collaboration allowed, please see the Honor Code Guidelines for Computer Science 373.

Lectures

The following is a list of lecture topics to be covered. Please come to class having read the appropriate readings. The readings are from Russell and Norvig, unless noted otherwise.

Note that this schedule is likely to change, so please consult the online version regularly. In particular, the schedule indicates that there might be four lectures on the topic of Logic, though I have actually planned for three lectures. The fourth has been built in as a placeholder for Mountain Day. In addition, Lectures 26-30 might be rearranged, pending a reply from a potential guest lecturer. And finally, we might simply want to extend a topic if the class finds it to be particularly interesting.

While I anticipate some changes, I have made every attempt to design the schedule in such a way that important milestones (assignments, project, exam) can remain as originally scheduled.

Lecture Date Topic Reading
1. Sept. 7 Introduction
2. Sept. 10 Brief History of AI Ch. 1
3-4. Sept. 12-14 Problem Solving and Search Ch. 2, 3.1-3.5
5-6. Sept. 17-19 (optional lecture Sept. 18) Lisp
7. Sept. 21 Informed Search Ch. 4.1-4.2, Korf 95
8. Sept. 24 Frontier Search Korf 05
9-11. Sept. 26-Oct. 1 Games Ch. 6, Shannon 50a, Shannon 50b, Schaeffer 07
12. Oct. 3 Logic Ch. 7.1-7.5, 8
13. Oct. 5 Logic (Mountain Day?)
- Reading Period - - Reading Period - - Reading Period -
14. Oct. 10 Logic
15. Oct. 12 Logic (Mountain Day?)
16-17. Oct. 15-17 Probabilistic Reasoning Ch. 13, 14 (thru 510)
18. Oct. 19 Grace Hopper Conference - No class today
19. Oct. 22 More on Probabilistic Reasoning
20-23. Oct. 24-31 Machine Learning, Dec. Trees Ch. 18.1-18.3, Mitchell 3
24-25. Nov. 2-5 Combining Logic, Probability, and Learning TBA
26-27. Nov. 7-9 Constraint Satisfaction Problems Ch. 5.1-5.2
28. Nov. 12 Genetic Algorithms Mitchell 9.1-9.3
29. Nov. 14 Temporal Difference Learning Ch. 21.1-21.2
30. Nov. 16 TD Learning in Games Tesauro 95
31. Nov. 19 Exam
- Thanksgiving Recess- - Thanksgiving Recess- - Thanksgiving Recess-
32-33. Nov. 26-28 Design Reviews
34. Nov. 30 TBA
35-36. Dec. 3-5 Code Reviews
37. Dec. 7 TBA

Readings

Artificial Intelligence: A Modern Approach (2nd edition), Stuart Russell and Peter Norvig, Prentice Hall, Inc., 2003. [Available at Water Street Books.]

Machine Learning, Tom M. Mitchell, McGraw-Hill, 1997. [A good reference for the machine learning assignment. Reference copies will be available in the lab.]

Papers

Additional readings on specific topics will be made available throughout the semester.

Lisp Resources

For the Lisp assignments, you might find it useful to consult

Common Lisp the Language, 2nd edition, Guy Steele, Digital Press.

In addition, check out other online resources (selected from lists posted by Lise Getoor, Dana Nau, and Steve Freund):

Java Resources

Honor Code Guidelines

[Adapted from the Honor Code Guidelines for Computer Science Courses.]

The Honor Code as it applies to non-programming assignments is outlined in the Student Handbook.

For programming assignments in this course, the honor code is interpreted in very specific ways. When a program is assigned, your instructor will identify it as an "individual" or "team" assignment. The Honor Code applies differently to each with respect to collaboration or assistance from anyone other than the instructor.

Individual Programs. Individual programs are expected to be the work of the individual student, designed and coded by him or her alone. Help locating errors is allowed, but a student may only receive help in correcting errors of syntax; help in correcting errors of logic is strictly forbidden. Guideline: Assistance from anyone other than the instructor in the design or coding of program logic will be considered a violation of the honor code.

Team Programs. Team programs are to be worked on in teams of two students. You are allowed to discuss team programs with your partners, but work with others is otherwise restricted as above. That is, others can help in correcting errors of syntax, but help in correcting errors of logic is forbidden. Guideline: Any work that is not the work of your team is considered a violation of the honor code.

If you do not understand how the honor code applies to a particular assignment, consult your instructor.

Students should be aware of the Computer Ethics outlined in the Student Handbook. Violations (including uninvited access to private information and malicious tampering or theft of computer equipment or software) are subject to disciplinary action.

Guideline: To protect your work dispose of printouts carefully, and avoid leaving yourself logged in to public computers when you aren't in the lab.

The Department of Computer Science takes the Honor Code seriously. Violations are easy to identify and will be dealt with promptly.