The course is a basic introduction to artificial intelligence covering fundamental material in problem solving, heuristic search, knowledge representation, deduction, planning, uncertain reasoning, learning, and natural-language processing. The course will focus on understanding concepts and algorithms rather than programming, although there will be two projects involving some programming (in Java). See the course syllabus for further details.
Reading assignments from the text are listed on the syllabus. Be sure to keep up with the reading and study the corresponding chapters before the corresponding lecture. Class lectures will cover the slides available on the course homepage.
Prompt attendance at class is required. Attendance will be taken at the very beginning of every class period and a student's attendance record will count as part of the course grade. Leaving during the middle of class in unacceptable and will count as missing two class periods.
There will be four written assignments during the semester that involve working
out the solutions to a series of problems on paper. Many of the general types
of problems in the assignments will be representative of problems to appear
on the midterm and final. Sample previous assignments are available on the
course homepage, and their solutions are available on the department
file system in
There will be two class projects, one in each half of the course. These involve using existing AI software in Java to solve a realistic task. You will have to adapt the software for the current task, which will involve some Java programming. You will also run the programs on realistic data and measure the results. A major part of the assignment is to understand why you got the results you did, and write a short (one or two page) report on what you did and why, how it turned out, how you might improve the results, and generally what you learned from the assignment.
Support will be provided for running programming assignments on departmental UNIX workstations. If you do not have a permanent UNIX account, you can obtain one from the Undergraduate Office. If you are not a CS student, the Undergraduate Office can issue you a temporary account. You are free to use other platforms for running Java, but then it is your responsibility to get the course code running on that platform.
There will be a midterm exam, tentatively on October 13, that will cover the
material in the first half of the course. We will review for the test the
class before. Last year's midterm is available on the course homepage, and its
solution is available on the department file system in
The final will be held at the scheduled university time on Wednesday Dec. 8 from 9AM-12PM in the normal classroom. It will be comprehensive test covering all material presented in the course; however, about 2/3 of the problems will involve material covered since the midterm. We will review for the final on the last class day.
Read the department's academic policy page. Students who demonstrably violate the Academic Honesty policy will receive a failing grade in the class. We will be using the Moss system to screen submited programs for plagiarism. Unfortunately, I have had to fail approximately 20 students in the past for copying on programming assignments. To avoid problems, limit any discussion of assignments with other students to clarification of the requirements or definitions of the problems, or to understanding the existing programs or general course material. I encourage you to interact with your fellow students in understanding the course materials and interpreting the requirements of the assignments but never discuss issues directly related to problem solutions.
24% Assignments 20% Projects 8% Attendance 22% Midterm 26% Final