Kalamazoo College, Winter, 2003.
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:
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 (http://max.cs.kzoo.edu/CS495/) 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 projects: Programming projects frequently involve collaborating with others in small groups. I will try to make clear my expectations about whether a given project is meant to be the result of collaborative or individual work and what the size of a group may be, but you are responsible for consulting with me if you are in any doubt. Your program documentation should indicate all author(s) of the program. (Please hand in only one copy of each group project, not one per group member.) As a rule, I am as interested in seeing a program run as trying to figure out if it works by reading the code. Therefore, you can expect me to want you to demo your programming projects for me (this is in addition to looking at the actual code).
You may discuss the requirements and strategies of a programming assignment with others in the class, but you should not look at code belonging to anyone outside your group or make your code available to anyone else. If you have code-specific questions you should address them to computer science faculty members only. You should acknowledge any help you receive in your program documentation.
Homework assignments: You may discuss the requirements, concepts, and overall strategies related to homework assignments with your classmates, but you should write the solutions individually, using your own words. Organizing and writing up the solutions on your own ensures that you really understand the material. Submitting someone else's work does not help you learn and constitutes academic dishonesty. As always, you should acknowledge your collaborative discussions with your solutions.
Exams should be entirely your own work.
Consequences: Any violation of the above policies will result in no credit for the assignment. Depending on the severity of the incident, a report may be sent to the Dean's Office, which may result in additional consequences. Any subsequent violation will result in the immediate failure of this course.
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.