CSCI 373: Artificial Intelligence

Assignments and Exams

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/18, 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:

4/10-18: Talk ideas over with me
4 PM Thu, 4/20:Brief but thorough (2-3 page) proposal due
11 PM Thu, 4/27:Checkpoint 1
11 PM Thu, 5/4:Checkpoint 2
5/10, 11, 12:Presentations and demos
4 PM, Fri, 5/12:Final code due
4 PM, Thu, 5/18:Final paper due
A fuller description of the milestones and deliverables is posted here.

You might also find it helpful to skim this excellent final project proposal from an earlier offering of AI. I organized the final project quite differently that semester. Students had to write a much longer proposal, which needed to include references to relevant research articles. Though your deliverables are different, Zina's paper will give you ideas for how you might organize the proposal as well as how you might approach the related work section of your final paper.


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

You can find a sample exam here.


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.