CSCI 373 Artificial Intelligence

Professor:Andrea Danyluk
email:andrea "at" cs "dot" williams "dot" edu
phone: x2178
Office:TCL 305
Office Hours:If my door is open, you're welcome to drop by. Scheduled hours Mon 1-3pm, Tue 1-2pm, Wed 11am-noon,, and by appointment.
Lectures:MWF 9:00-9: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 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; and data-mining algorithms find patterns in terabytes of data that no human could possibly analyze.

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. We will devote most of the semester to the study of core AI topics: problem solving and search, probabilistic reasoning, and learning. In the remainder of the course we will touch on a selection of related topics, primarily focusing on current research in the field (e.g., deep learning, new results in complex games). We will also spend some time discussing questions around intelligence (what is it? how can we measure it?), as well as the ethics of building and deploying intelligent agents.

During the final quarter 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 investigation of relevant literature 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. There will be no final exam. Instead, there will be a take-home exam in March.


The following is a list of lecture topics to be covered along with the relevant readings. All readings are from Russell and Norvig, unless indicated otherwise. The Sutton and Barto readings are quite consistent over the two book editions. Notation has changed, as has the formatting of some examples, but the content of those specific chapters and sections is essentially the same.

Note that this schedule is subject to change, so please consult the online version regularly. For instance, we might want to extend the time spent on certain topics if the class finds them to be especially 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. If we finish a topic early, I might post the corresponding assignment earlier. Due dates will not change, however, unless the entire class agrees. This should help you in planning your calendars for the semester.

Date Topic Reading
2/3 Introduction Ch. 1
Week of 2/6 Agents and Search Ch. 2 and 3
2/13, 15 Games Ch. 5.1-5
2/17 Winter Carnival. Andrea in Minneapolis to give a talk.
2/20 Games: Expectimax
2/22 Utility Theory and MDPs Ch. 16.1-3, Ch. 17.1, Sutton and Barto Ch. 3
2/24 Value and Policy Iteration Sutton and Barto Ch. 4
Week of 2/27 TD and Q-Learning Sutton and Barto Ch. 5.1-3, Ch. 6.1, 2, 5
3/6 Discussion TBA
3/8-10 Self-scheduled 2-hour midterm exam. Andrea at SIGCSE.
3/13 Probability Ch. 13.1-5
3/15, 17 Markov Models, HMMs Ch. 15.1, 2, 5, 6
Spring Break
4/3 Filtering Ch. 15.1, 2, 5, 6
4/5 Andrea in DC for CRA-W Board Meeting.
4/7 Learning from Examples: Neural Nets Ch. 18.1-4, 7
4/10, 12 Decision Trees
4/14 Deep Learning TBA
4/17 Discussion: RL and Deep Learning
4/19, 21 Motion Planning Ch. 25
4/24 Self-Driving Cars: 30 years of progress TBA
4/26 Discussion: Ethics
4/28, 5/1 Constraints Ch. 6
5/3 Discussion AAAI "Classic Paper" Award Winner
5/5 Discussion: Turing Test for Today's AI
5/8 Wrap Up
5/10-12 Project Presentations and Demos


Python Resources : the Python Programming Language Official Website.

Java Resources (for those doing final projects in Java)

Programming Assignments

The assigned programming exercises for this class will be done in Python (2.7). The Linux machines in TCL 312 are available for your use. (Because CS 134, 136, and 237 are so heavily enrolled this semester, I ask that you work on the Linux machines, rather than on the Macs.)

You may certainly work on your own personal computers, but please keep in mind that I'll be testing all of the programs on a machine that is set up like those in the lab. Therefore, be certain your programs run properly there before you turn them in.

I'll be grading your programs on correctness as well as on programming style. For at least two assignments, I'll ask that you meet with me for a code review/interactive grading session.

Computer science is a collaborative discipline, and knowing how to work effectively in a team is an essential skill. So I will require you to work with a partner on at least three regular assignments (i.e., not including the Python tutorial and final project). I suggest that you try working with a few different people over the course of the semester, so that you get to know others in the course, as well as their work styles.

A final but extremely important note on the programming assignments: The Pacman assignments have been developed by John DeNero and Dan Klein at UC Berkeley. In exchange for permission to use these assignments, I have promised that no one (not you, not I) will post the solutions to any part of them. These assignments are used by many instructors, so I'm sure you understand the authors' concern. Please do not share your solutions with anyone. Thanks for understanding.

Assignment Date Assigned Due Date* Code Review
Python Tutorial (Optional) 2/3 2/9 None
Search (recommended team project) 2/10 2/21 2/22-23
Games (recommended team project)2/20 3/2 3/6
Reinforcement Learning (recommended team project) 3/3 3/14 3/15
Probability/Filtering (recommended team project) 4/3 4/11 4/12-13
Classifier Learning (recommended team project) 4/12 4/18 None
Data zip archive for Classifier Learning
*Late days: You may use a maximum of four free late days on any of the above assignments, but no more than two late days on any one assignment. A free late day gives you up to 24 additional hours to complete an assignment without penalty. Use your late days wisely: Try not to use them up early in the semester. And keep in mind that both partners on a team must agree on using late days. Late days may not be used on the final project.


You will have the opportunity to explore an AI topic of your own choosing through a project that will span about three weeks (not including the proposal phase). I strongly recommend that you work in groups of two or three on this. However, I am willing to consider solo projects, if there are compelling reasons for doing so.

Keep the project in the back of your mind as you go through the semester. During the week of 4/10, talk to me about your ideas. By 4/14, you'll need to get official approval of your proposed project. Note that this is before the written proposal is due.

You will present your project and demo it for the class on 5/10, 11, 12. (Depending on the number of groups/projects, we may need to schedule an hour in the afternoon or evening.) The actual code will be due to me on 5/12. You will also write a final paper on your project. In the final paper you will need to carefully describe your project, discuss background literature related to the project, give an overview of the design, and evaluate your progress.

Milestones for the project are as follows:

Talk ideas over with meWeek of 4/10
Final date for approval4/14
Brief but thorough/clear (1-2 page) proposal due4/19
Presentations and demos5/10,11,12
Code due5/12
Final paper due5/18
A fuller description of the milestones and deliverables will be posted later in the semester.


There will be one self-scheduled examination, which you may take on 3/8, 9, or 10.


5-10%Short paper responses, written assignments, and class participation (including article discussions)
45-50%Programming assignments (10% each)
25%Final project code/demo/presentation
10%Final project write-up

All regular assignments are due at 11 PM on the given due dates unless indicated otherwise. Regular programming assignments may be submitted late without penalty if using late days as explained above. In all other cases, assignments will be accepted late, but with a penalty of 10% per day.

Much of your programming 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.

Honor Code Guidelines

Explanation of the Honor Code as it pertains to this course: The Honor Code as it applies to non-programming assignments is outlined in the Student Handbook.

Projects must contain only: code written solely by your group, code written by yourself or other CS 373 students this semester for previous assignments, and code from the starter for the assignment or from the starters for previous assignments. For the final project you may use external libraries with prior approval from me by e-mail. Code from previous assignments must be clearly credited where it is used and in a separate written note to me. It may be used only with permission of the students involved.

You are welcome to discuss design, debugging, and mathematics related to projects with other students, but you may not review the code of other students for any current assignment. Note that using previously submitted code and discussing projects is a more liberal policy than the default CS department policy for programming projects. Coursework in this class reflects your maturity and is modeled on professional research and development: we tackle hard problems, and do so together. In all cases, we acknowledge the contribution of others.

Recall that in accordance with the CS department policies, looking at any other computer user's files without permission is unacceptable, regardless of whether those files are protected on the file system.