This course provides an intensive introduction to the field of artificial intellligence, with a focus on knowledge representation, language and planning.

Instructor:   Will Fitzgerald
Olds/Upton 208E, x5721

Required Text:   Artificial Intelligence: A Modern Approach, second edition by Stuart Russell and Peter Norvig.

You can find other references in the class bibliography.

Goals:   At the conclusion of this course, students should have a basic understanding of the main ideas in artificial intelligence, especially with respect to knowledge representation, language understanding and planning, and rational agency. Students should also be able to write a substantive "intelligent" program in the Python programming language.

Prerequisite:   CS 210 (Data Structures).

Topics to be covered (and tentative course schedule):
(for an evolving detailed course schedule, see the Reading and Homework Assignments page)

Computing Resources and Software:

Grades: Grades will be based on:

  1. 25% Programming (and class) assignments.
  2. 10% Class participation.
  3. 10% Student Presentation.
  4. 20% Final exam.
  5. 35% Final Project.
Programming assignments and the Final Project will comprise a major portion of your grade in this course. They should be done individually (see the section on collaboration below). In addition, there will be two to four programming assignments and an oral presentation.

Assignments are due before I come in the next day (so a homework assignment due on Wednesday must be in my box by 8:30 a.m. Thursday morning). Programming projects, in particular, are time-consuming and difficult to predict, but time-management skills are as critical in industry as they are in college. I will assign homework and projects enough in advance that you will have some flexibility in when you schedule your work, but you are responsible for budgeting your time wisely so that you will be able to complete your assignments on time.

No late assignments (including programming projects!) will be accepted (barring EXTREME circumstances).

Check the course website ( frequently. You are responsible for this.

Collaboration and the Honor System:

This course operates in accordance with the principles of the Kalamazoo College Honor System: responsibility for personal behavior, independent thought, respect for others, and environmental responsibility. In particular, academic integrity is a fundamental principle of scholarship. Representing someone else's work as your own, in any form, constitutes academic dishonesty. Unauthorized collaboration and receiving help from others outside the bounds permitted by the instructor are also violations of the College honor code. You are responsible for working within the permitted bounds, and acknowledging any help from others or contributions from other sources. Failure to do so may result in no credit for an assignment, failure of the course, or even suspension from the College.

Programming Guidelines:

Python programs should be written according to the Python Style Guide. See the code I wrote for assignment 1, the SimpleTextGenerator (code), for example of what I consider acceptable style.

Attendance and Participation:

Regular attendance is expected of all students. Your grade will be partially based on in-class projects, discussions, and occasional quizzes, so your attendance will affect your grade. Active participation in the class means being on time, being prepared, listening to others, contributing ideas of your own, and asking questions as they come up.

Any student with a disability who needs an accommodation or other assistance in this course should make an appointment to speak with me as soon as possible.
This page is maintained by Will Fitzgerald ( It was last modified on .