CS 221
Artificial Intelligence: Principles & Techniques
Handout #1: Course Information

Meeting Times and Locations

Lecture

Tue/Thu 9:30 AM - 10:45 AM, Gates B01

Discussion section (optional attendance)

Fri 1:15 PM - 2:05 PM, Terman auditorium (The first section, on 9/25, will be in Building 200, room 034.)

Teaching Staff

Professor

Andrew Ng
Office: Gates 156.
Office hours: Fridays 9-10am, except 11/6. Extra office hours on 11/9, 1.30-2.30pm
Fax: (650) 725-1449

Teaching Assistants

Chris Archibald
Office: Gates 132  
Office hours: Wednesdays 10-11am
Phone: (650) 723-3994

Paul Baumstarck
Office: Gates B24A  
Office hours: Mondays 3-4pm
Phone: (650) 725-4385

Ian Goodfellow
Office: Gates B24A  
Office hours: Wednesdays 7-8pm
Phone: (650) 725-4385

Olga Russakovsky (head TA)
Office: Gates B24A  
Office hours: Fridays 2:30-3:30pm (instead of 2:15-3:15)
Phone: (650) 725-4385

Staff mailing address: cs221qa@cs.stanford.edu.

Extra Office Hours

In addition to the individual office hours above, there will be extra office hours in weeks when problem sets are due.

  1. Sunday from 7-9pm (Room: Gates 100)
  2. Monday from 7-9pm (Room: Gates 100)
  3. Tuesday from 7-9pm (Room: Gates B12)

SCPD students ONLY: There is no phone available which you can call, but there are two ways for you to contact us during the extra office hours.

  1. Gchat (cs221qa@gmail.com): we will tell you your place in line and will answer your questions on your turn, or
  2. E-mail your phone number to cs221qa@cs.stanford.edu (or tell us in chat), and we'll give you a call ourselves

Communication with the teaching staff

We strongly encourage students to come to office hours. We also strongly encourage the use of the newsgroup (su.class.cs221) for discussing questions with other students and forming project groups. Clarifications to the homeworks will also be posted on the FAQ. It is each student's responsibility to check the FAQ on a regular basis. Major changes (e.g., bugs in the homework) will also be posted to the class mailing list. If a homework clarification is posted after a student has completed an assignment, the student should contact us as soon as possible to check if the assumptions s/he made are going to be accepted. In addition, questions about the class, including questions about homeworks, can also be addressed to the course staff list, cs221qa@cs.stanford.edu, which is read by the TAs and the professor. Please do not mail questions to the instructor or to the individual TAs. By having questions available to all of the staff, you will get answers much more quickly. Of course, more personal questions can still be sent directly to Prof. Ng or the relevant TA.

Do not email assignments to the cs221qa address. Off-campus (SCPD) students should submit assignments by faxing it to the fax number given above, and write "ATTN: CS221" on the cover page. Regular, non-SCPD students should submit all assignments only in hardcopy.

Please do not e-mail us with grading questions. If you want us to explain why we took points off, you can talk to us after class or during office hours. If you want a regrade, please write an explanation and drop the homework and the explanation into the submission box located at the bottom of the stairwell in Gates A wing, or hand them to the TAs during office hours.

For specific questions regarding a particular programming assignment within the homework, please try to attend the office hours of the TA listed as being responsible for that assignment, since they will be the most able to assist you efficiently.

Course Information

Description

This course provides a broad technical introduction and a survey of core concepts of artificial intelligence (AI). Topics include: history of AI, agents (environments, reactive agents), search (search space, uninformed and informed search, constraint satisfaction), probabilistic models (uncertainty, Bayesian networks, MRFs), machine learning (inductive learning, linear separators, decision trees, reinforcement learning), and perception and cognition (natural language processing, computer vision, robotics).

Prerequisites

Students are expected to have the following background:

  1. Knowledge of basic computer science principles and skills at the level of CS103. Ability to understand and analyze fairly complicated algorithms and data structures. The course will assume familiarity with such concepts as: big-O notation, queues and stacks, graphs, etc. It will also assume the ability to understand and manipulate abstract algorithms.
  2. Familiarity with the basic concepts of probability and statistics (CS109 or Stat116 is sufficient but not necessary; it also suffices to read and understand Chapter 13 and Appendix and A.3 of Russell and Norvig), and knowledge of basic linear algebra (vectors and matrices, and simple operations on them; CS 51 is sufficient but not necessary).
  3. Basic knowledge of logic. (CS103, CS157, or Phil 160A are sufficient but more than necessary; it also suffices to read and understand Chapters 7.3-7.5 and 8.1,8.2 of Russell and Norvig.)
  4. Programming skills in C/C++, at a level sufficient to write a non-trivial computer program.

The prerequisites for the class are important, but only up to a point. The real prerequisite for this course is the ability to solve abstract problems, to understand nontrivial algorithms, and to think in mathematical terms. To some people these skills come by more easily, whereas others get them by taking the corresponding classes. If you feel that you have these skills, you can easily make up for the prerequisites on your own.

Course Materials

Required Text:

S. Russell and P. Norvig, Artificial Intelligence: A Modern Approach, Second Edition,
Prentice Hall 2003, ISBN: 0-13-790395-2.

Course handouts and other materials may be downloaded from http://cs221.stanford.edu/handouts.html

Online Resources

  1. WWW Home Page: http://cs221.stanford.edu/
  2. Newsgroup: su.class.cs221
  3. Staff mailing list: cs221qa@cs.stanford.edu (for questions)
    NOTE: When asking a question about an assignment, please make clear in the subject line which particular assignment and which problem the email refers to (e.g. Subject: HW3 Q1). To ask about multiple homework problems, please send multiple emails.
Coursework

Problem Sets

There will be four homeworks. Each homework will contain written questions and a programming assignment that will require limited programming or running pre-existing code to analyze its behavior. We will provide some of the necessary software infrastructure for the programming assignment.

Students will be allowed to work together on written homeworks. Students may discuss the homework to understand the problem and reach a solution. However, each student must write down the solution independently, and without referring to written notes from the joint session. In other words, each student must understand the solution well enough in order to reconstruct it by him/herself. In addition, each student must write on the problem the set of people with whom s/he collaborated.

For the programming assignment portion of each homework and for the final project competition, you can work in groups of up to three students. For these, each group should submit one solution set.

We try very hard to make questions unambiguous, but some ambiguities may remain. Ask if confused or state your assumptions explicitly. Reasonable assumptions will be accepted in case of ambiguous questions.

Important note on the honor code: As we occasionally reuse problem set questions from previous years, we expect the students NOT to copy, refer to, or look at any materials from previous years, including any published solutions or graded homework assignments. It is an honor code violation to use or refer to solutions from previous years. Additionally, you are free to use online resources for learning more about the material covered in class; however, you should not look online for solutions to questions in the problem sets.

For additional information about programming in UNIX we recommend the following sources:

  1. The Distributed Computer Consulting Page is a good general reference. Here is a useful list of UNIX commands.
  2. You might also like to program in UNIX from your PC. Instructions detailing how to do this using SecureCRT can be found here. For this you will also have to download an X Windows System such as Xming.

Project

Students are required to complete a significant project. Students will be given a choice of two open-ended challenge problems, which will be difficult AI problems, set up as competitions. Details on the challenge problems will be announced in class. Students will pick one of the two problems and try to solve it as well as possible. Your solution will be judged both in terms of its performance (at the final project competition held at the end of the quarter), and in terms of the quality and novelty of your ideas (as described in your writeup).

For each of the two challenge problems, at the final project competition we will declare a winning and a runner-up team. Each member of the winning team will receive 3% extra credit; each member of the runner-up team will receive 1.5% extra credit. You will also submit a final writeup describing your solution to the challenge problem.

Most students are expected to choose and work on one of the two challenge problems. However, students wishing to instead propose a different AI research project for their team are welcome to do so (subject to your proposal being approved). We expect that only a small minority of students will do this, and that projects of this type will all be significant AI research projects, with a significant chance of leading to a publication. If you'd like to do this, please feel free to talk with the instructor about project ideas.

Sections

Attendance at the Friday discussion sections is optional. The sections will be used to review material from the prerequisites, provide background information for the material covered in lectures, give details of the algorithms and concepts ("walking through" algorithms to give you a better understanding of them), and discuss advanced concepts that further extend the ones covered in the main lectures. An announcement will be made in class whenever one of these discussion sections is held. Note that sections are also recorded and televised.

Grading

The course will have an open-book, open notes midterm exam, which will encompass material covered in the lectures/sections and assigned in the readings. The midterm will be on 11/12, and it will cover material up to and including the 11/5 lecture.

Late homeworks: Recognizing that students may face unusual circumstances and require some flexibility in the course of the quarter, each student will have a total of seven free late (calendar) days to use as s/he sees fit. Once these late days are exhausted, any homework turned in late will be penalized 20% per late day. However, no homework will be accepted more than four days after its due date. Each 24 hours or part thereof that a homework is late uses up one full late day. If the homework has a programming assignment part and a written part, the submission date will be the date of latest submission of either part (no double penalization if both the homework and the programming assignment are late). Late days are not permitted for the final project code or the final project writeup, but are permitted for the milestone. For work done in teams, late days apply individually to all of the team members. Late homeworks should be handed in as follows: Write the date and time on the assignment and then (for regular, non-SCPD students) place it in the submission box at the bottom of the Gates A wing (West) stairwell, or (for SCPD students only) fax it to CS221 staff (at the fax number above). It is an honor code violation to write down the wrong time.

Course grades will be based 40% on homeworks (10% each), 20% on the midterm, and 40% on the project.

Extra credit will be given to the top performers in the project challenge problems. It may also be given to some projects that go substantially above and beyond the requirements in finding creative solutions to the task. A small amount of extra credit may also be awarded for class participation. Note that extra credit is always added to the grade after the grading curve is set.

Midterm

The midterm will be open book, open-notes and cover the material of the first part of the course. It will be held on Thursday, 11/12, at 6-9pm.

Final project competition

The final project competition will be on Friday, 12/11, 12:15-3:15pm.

Miscellaneous

Although the course is listed as 4 units, it is possible for graduate students only to enroll for 3 units. This is allowed because of the limit graduate students often have on units per quarter, but has no effect on the requirements or workload for the course.

CS221 is also cross-listed as SYMSYS 221, and cross-listed as EE294A.