CS221: Artificial Intelligence: Principles and Techniques

Instructor: Percy Liang
Course assistants:
How to contact us: Please use Piazza for all questions related to lectures, homeworks, and projects. For private questions, email cs221-aut1314-staff@lists.stanford.edu.
Announcements: see Piazza.
Calendar: look here for dates/times of all lectures, sections, office hours, due dates.
What is this course about? What do web search, speech recognition, face recognition, machine translation, autonomous driving, and automatic scheduling have in common? These are all complex real-world problems, and the goal of Artificial intelligence (AI) is to tackle these with rigorous mathematical tools. In this course, you will learn the foundational principles that drive these applications and practice implementing some of these systems. Specific topics include machine learning, search, game playing, Markov decision processes, constraint satisfaction, graphical models, and logic. The main goal of the course is to equip you with the tools to tackle new AI problems you might encounter in life.
Prerequisites: This course is fast-paced and covers a lot ground, so it is important that you have a solid foundation on both the theoretical and empirical fronts. You should have taken the following classes (or their equivalents):
Reading: There is no required textbook for this class, and you should be able to learn everything from the lecture notes and homeworks. However, if you would like to pursue more advanced topics or get another perspective on the same material, here are some books: Bear in mind that some of these books can be quite dense and use different notation terminology, so it might take some effort to connect up with the material from class.
Submission: All assignments (homework problems and project milestones) are to be submitted using the submit script by 11pm. To submit, (i) copy your submission files (usually writeup.pdf and submission.py) to corn.stanford.edu and (ii) type:
      python /usr/class/cs221/WWW/submit.py <assignment ID (e.g., warmup)> <directory with your submission files>
You will receive an email confirmation about your submission. For assignments with a programming component, we will automatically sanity check your code in some basic test cases, but we will grade your code on additional test cases. Unless the assignment instructs otherwise, all of your code modifications should be in submission.py and all of your written answers in writeup.pdf. You are allowed to submit an assignment up to nine (9) times in total; each submission will replace the previous.
Late days: An assignment is $n$ days late if it was not turned in within $24(n-1)$ hours of the deadline. You have nine (9) late days that you can use across any assignments (except the final project report) without penalty. You may use at most two (2) of these late days per assignment. If you submit an assignment late but have insufficient late days remaining to account for the late submission, you will receive zero (0) points on that assignment.
Collaboration policy and honor code: You are free to form study groups and discuss homeworks and projects. However, you must write up homeworks and code from scratch independently without referring to any notes from the joint session. You should not copy, refer to, or look at the solutions in preparing their answers from previous years' homeworks. It is an honor code violation to intentionally refer to a previous year's solutions, either official or written up by another student. Anybody violating the honor code will be referred to the Office of Judical Affairs.