CS221: Artificial Intelligence: Principles and Techniques

Logistics
Time/location:
Instructor: Percy Liang
Course assistants:
How to contact us: Please use Piazza for all questions related to lectures, homeworks, and projects. For SCPD students, email scpdsupport@stanford.edu or call 650-741-1542.
Announcements: see Piazza.
Calendar: look here for dates/times of all lectures, sections, office hours, due dates.
Content
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 of 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.
Coursework

Grading

Assignments

Written assignments: Homeworks should be written up clearly and succinctly; you may lose points if your answers are unclear or unnecessarily complicated. Here is an example of what we are looking for. You are encouraged to use LaTeX to writeup your homeworks (here's a template), but this is not a requirement.
Programming assignments: The grader runs on Python 2.7, which is not guaranteed to work with newer versions (Python 3) or older versions (below 2.7). Please use Python 2.7 to develop your codes.

Although we recommend that you use a UNIX environment (e.g., Linux or OS X), the sanity check script grader.py should work on Windows as well. Note that no matter what OS you use, you will need to submit the assignments on corn or myth machines. The final grading will be run on Linux servers.

The submitted code will not be graded if it has one of the following issues:

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 Judicial Affairs.

Submission

Electronic Submission: All assignments (homework problems and project milestones) must be submitted using the submit script by 11pm (23:00, not 23:59). To submit:
  1. Copy your submission files (usually writeup.pdf and submission.py) to corn.stanford.edu. You can use a graphical interface (SecureFX, FileZilla, Fugu) or the following command:

    scp <your submission file(s)> <your SUNetID>@corn.stanford.edu:
  2. Login to corn.stanford.edu:

    ssh <your SUNetID>@corn.stanford.edu
    For Windows, you can use SecureCRT, PuTTY, or Cygwin.
  3. Make sure the code runs correctly on corn. (Otherwise, the code will not be graded.)

  4. Type:

    /usr/bin/python /usr/class/cs221/WWW/submit.py <assignment ID> <directory with your submission files>
    For example, if the assignment ID is foundations and you are in the same directory as your submission files, type:
    /usr/bin/python /usr/class/cs221/WWW/submit.py foundations ./
Since we do not accept the assignments from other submission methods (e.g., email), please make sure you can use the submit script. Do not wait until the deadline. If anything goes wrong, please ask a question on Piazza or contact a course assistant.

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. Important: just because you pass the basic test cases, you are by no means guaranteed to get full credit on the other test cases, so you should test the program more thoroughly yourself!

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 ten (10) times in total; each submission will replace the previous.

For the project milestones, make sure the same one member of your group submits on behalf of the entire group. The submission should include a group.txt file which should contain the SUNetIDs of the entire group, one per line. Do not include your names.

Late days: An assignment is $n$ days late if it was not turned in within $24(n-1)$ hours of the deadline. You have eight (8) late days in total that can be distributed among the assignments (except the final project report) without penalty, with a maximum of two (2) per assignment. The submit script will not accept any submission after the hard deadline, which is forty-eight (48) hours after the deadline.
Regrades: If you believe that the course staff made an objective error in grading, then you may submit a regrade request. To do this, you must come in person to the owner CA in charge of the given homework or midterm problem. Any requests submitted over email or on Piazza will be ignored. Remember that even if the grading seems harsh to you, the same rubric was used for everyone for fairness, so this is not sufficient justification for a regrade. If the regrade request is valid, the CA will add your request to the list, which will get processed.
Schedule