This course will introduce the basic ideas and techniques underlying the design of intelligent computer systems. A specific emphasis will be on the statistical and decision-theoretic modeling paradigm.
By the end of this course, you will have built autonomous agents that efficiently make decisions in fully informed, partially observable and adversarial settings. Your agents will draw inferences in uncertain environments and optimize actions for arbitrary reward structures. Your machine learning algorithms will classify handwritten digits and photographs. The techniques you learn in this course apply to a wide variety of artificial intelligence problems and will serve as the foundation for further study in any application area you choose to pursue.
This course has substantial elements of both programming and mathematics, because these elements are central to modern AI. You should be prepared to review basic probability on your own if it is not fresh in your head. You should also be very comfortable programming on the level of CS 61B even though it is not strictly required.
CS61A AND CS61B AND CS70 is the recommended background.
Course programming assignments will be in Python. We do not assume that students have previous experience with the language, but we do expect you to learn the basics very rapidly. See the programming page for details.
Projects: Programming projects are a significant portion of the coursework. Projects may be completed and submitted alone or in teams of two (submission instructions). These projects will initially be graded automatically for correctness, though we will review projects individually as necessary to ensure that they receive the credit they deserve. The autograder is never the final word on whether your solution is correct!
Written homeworks: Homeworks will consist of questions similar to those that have appeared on previous semesters' exams. They can be discussed in groups, but must be written up individually. Written assignments will be submitted electronically (submission instructions).
Written fix: After a written is submitted you will receive solutions at the next lecture and have a few days to submit explanations of your errors, gaining 33.33% of the credit for each part that is correctly explained. For examples and details see the submission instructions.
Slip days: Programming projects must be turned in electronically by 11:59pm on the listed due date. You will have 5 slip days for these projects, up to two of which can be used for each assignment. Written assignments do not have late days!
Ethics: Submissions should acknowledge all collaborators and sources consulted. All code and written responses should be original. we trust you all to submit your own work, but to protect the integrity of the course from anyone who doesn't want to play by the rules, we will actively be checking for code plagiarism (both from current classmates and previous semesters). I'm not lenient about cheating; I sympathize with Kris Pister's policy.
Overall grades will be determined from:
Grades are on the following fixed scale:
[90 -- 100]%
[85 -- 90]%
[80 -- 85)%
[75 -- 80)%
[70 -- 75)%
[65 -- 70)%
[60 -- 65)%
[55 -- 60)%
[50 -- 55)%
[45 -- 50)%
[40 -- 45)%
[0 -- 40)%
These cutoffs represent grade minimums. We may adjust grades upward based on class participation, extra credit, etc. The grade of A+ will be awarded at the professor's discretion based on exceptional performance.
The required course textbook is Russell and Norvig, Artificial Intelligence: A Modern Approach, THIRD Edition (blue cover). The first edition (red cover) is too different to be used in this course. The second edition (green cover) is substantially closer to the third. We recommend the third edition, but much of what you need is in the second. The third has particularly improved pseudocode and treatment of learning. Any other readings will be made available online.
Here are the policies that govern admission into classes, and here are some answers to frequently asked questions about admission. The course staff does not control enrollment!