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.
- Homeworks (60%):
There will be weekly homeworks with both written and programming parts, submitted through gradescope (including the coding part).
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. Homework is due at 11 pm. In the past, some students try submitting their assignments at 11pm (or minutes before) and face technical challenges. Please give yourself enough time to ensure that your submission is successful (to ensure fairness, we cannot give the late days back to you even if you submit a few seconds late).
Here are all the homework deadlines:
TEX FILE SPECIFIC FOR PACMAN
- 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.
Date: Tue May 28 from 6pm to 9pm
Location: Last name initial in A-L in Hewlett 200, M-Z in CEMEX Auditorium.
Note: If you cannot make it for the exam on the 28th of May, submit a request by 30th April (hard deadline). We will only offer two alternative exams (no exceptions made) and they will be before the actual exam. Travelling is not a valid excuse to take an alternative exam and we may request for documentation from you as proof for other reasons such as interviews.
For SCPD students, your exams will be distributed through the SCPD office once you have set up an exam monitor.
- 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. (Groups of four are allowed only with instructor permission)
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:
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.
Poster Fair Information:
- Where: Tressider Union's Oak Lounge (map)
- When: Monday, June 3rd 2019. 1:00pm - 5:00pm
- Session A: 1:00pm - 2:20pm
- Session B: 2:20pm - 3:40pm
- Session C: 3:40pm - 5:00pm
- Piazza:
You will be awarded with up to 2% extra credit
if you answer other students' questions in a substantial and helpful way.
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. Once again, the homeworks are due at
11pm.
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.
The programming assignments are designed to be run
in GNU/Linux environments, such
as cardinal.stanford.edu.
Most or all of the grading code may incidentally work on other
systems such as MacOS or Windows, and students may optionally
choose to do most of their development in one of these alternative
environments. However, no technical support will be provided for
issues that only arise on an alternative environment. Moreover,
no matter what environment is used during development, students
must confirm that their code (specifically, the original grader.py
script
operating on the student's submission.py
) runs
on cardinal.stanford.edu
, and must submit their
assignments from cardinal.stanford.edu
as well. The
final grading will be run on GNU/Linux servers.
The submitted code will not be graded if it has one of the following issues:
- The original
grader.py
script (operating on the
submitted submission.py
) does not exit normally
on cardinal.stanford.edu
. Note that calls such as quit()
, exit()
,
sys.exit()
, os._exit()
may cause the program to exit abnormally, as may excessive resource usage.
Also note that Python packages outside the standard library are not guaranteed to work.
- The code reads external resources other than the files given in the assignment.
- The code is malicious. This is considered a violation of the honor code.
The score of the assignment will be zero (0) and the incident will be reported to the Office of Judicial Affairs.
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, and you must acknowledge in your submission all the students you discussed with.
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 Percy or the head CA;
the consequences will be much less severe than if we approach you.
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 for p-poster, p-peer, and p-final)
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.
Regrades: If you believe that the course
staff made an objective error in grading, then you may submit a
regrade request and regrades for homework are due exactly 1 week from grade release (at 11.59pm). 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 you do choose to submit a regrade request, please submit it through gradescope. Any requests submitted
over email or in person or through piazza will be ignored. Note that we may regrade your entire submission,
so that depending on your submission you may actually lose more points
than you gain.