## Logistics

### Time/Location:

• Lectures: Tue/Thu 1:30-2:50 PM in STLC114
• Sections: Fri 11:30-12:20 AM in 200-203
• Office hours: See the calendar for times and locations

### Course assistants:

• Zhi Bie
• Bryan He
• Andrey Kurenkov
• Anna Wang
• Feiran Wang

Please use Piazza for all questions related to lectures, homeworks, and projects. We will also use Piazza for announcements. There is no access code required to join.

### Calendar:

Look here for times of all lectures, sections, office hours, and due dates.

### Office Hour Logistics:

We are using QueueStatus to manage office hours. When you wish to join the queue, click "Sign Up" at the CS221 queue. Be sure to enter your email when you "Sign Up"; this is a way for the CA to contact you. Look for announcements on the left panel for more information.

## 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):

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

• Homeworks (60%): There will be weekly homeworks with both written and programming parts. Each homework is centered around an application and will also deepen your understanding of the theoretical concepts. Some homeworks will have a competition component; winners will receive extra credit. Here are all the homework deadlines:
• Exam (20%): The exam is a three-hour written exam that will test your knowledge and problem-solving skills on all preceding lectures and homeworks. You cannot use any external aids except one double-sided page of notes. If you have a conflict or have an OAE exception, submit a request on Piazza to take it at another (earlier) time. Your request must be submitted by Tue May 01.

Date: Tue May 29 from 6 PM to 9 PM
Location: 420-040

• Project (20%): The final project provides an opportunity for you to use the tools from class to build something interesting of your choice. Projects should be done in groups of up to three. The project will be something that you work on throughout the course and we have set up some milestones to help you along the way:

The poster session will be held on Tue Jun 5 from 9 AM to 12 PM on the AT&T patio outside Gates.

See the project page for more details.

Regardless of the group size, all groups must submit the same basic amount of work as detailed in each milestone. Of course, the experiments may not always be successful, so we will cut the smaller groups more slack, while larger groups are expected to be more thorough in their experiments.

For inspiration, we have made previous CS221 projects available for viewing.

• Piazza: You will be awarded with up to 2% extra credit if you answer other students' questions in a substantial and helpful way.

## 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. You will receive one (1) bonus point for submitting a typed written assignment (e.g. LaTeX, Microsoft Word). We will accept scanned handwritten assignments but they will not receive the bonus point.
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 code.

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. We encourage you to use rice.stanford.edu if you need a UNIX environment. The final grading will be run on the Gradescope server. Let us know if your code runs on rice.stanford.edu but not Gradescope.

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. The following are considered to be honor code violations:
• Looking at the writeup or code of another student.
• Showing your writeup or code to another student.
• Discussing homework problems in such detail that your solution (writeup or code) is almost identical to another student's answer.
• Uploading your writeup or code to a public repository (e.g. github, bitbucket, pastebin) so that it can be accessed by other students.
• Looking at solutions from previous years' homeworks - either official or written up by another student.
When debugging code together, you are only allowed to look at the input-output behavior of each other's programs (so you should write good test cases!). It is important to remember that even if you didn't copy but just gave another student your solution, you are still violating the honor code, so please be careful. We periodically run similarity-detection software over all submitted student programs, including programs from past quarters and any solutions found online on public websites. Anyone violating the honor code will be referred to the Office of Judicial Affairs. If you feel like you made a mistake (it can happen, especially under time pressure!), please reach out to Dorsa or the head CA; the consequences will be much less severe than if we approach you.

Submission

Electronic Submission: All assignments (homework problems and project milestones) must be submitted on Gradescope by 11 PM (23:00, not 23:59).

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 <assignment ID>.pdf.

Late days: An assignment is $\lceil d \rceil$ days late if it is turned in $d$ fractional days late (note that this means if you are $1$ second late, $d = 1/(24 \times 60 \times 60)$ and it is 1 day late). You have eight (8) late days in total that can be distributed among the assignments (except the final project report) without penalty. There is a maximum of two (2) late days that can be used per assignment. If you exceed this limit by $k$ hours, then you will incur a multiplicative penalty factor of $\max(1 - k/5, 0)$. For example, if you get $40$ points and turn in your homework 2 days + 1.5 hours after the deadline, then your effective score is $40(1 - 1.5/5) = 28$. If you exceed $5$ hours, you will receive $0$ points. You get a zero after all your late days run out, but we reserve the right to give partial credit in extenuating circumstances.