Course Objectives:
The goal of this course is to teach you about the theory and design of
intelligent systems, meaning programs that can take 'intelligent
action.' The course will focus on applications for the WWW, which will
also give you exposure to current Web technologies. At the conclusion
of this course, you should be able to:
Requirements
CS 245 or equivalent. You should be comfortable writing medium-sized
programs in a fairly short period of time. You should also feel
comfortable reading about and playing with a new software tool. I'll
also expect you to have some basic mathematical background;
probability is a good thing to review if you haven't taken Discrete
Math in a while.
Grading
You'll have nine assigments to complete throughout the course of the
semester, each taking between 1 and 2 weeks. Each assignment will
provide you with hands-on experience working with one or more of the
concepts covereed in class. Sometimes thes will be pen-and-paper
exercises, but most of they time they will involve programming.
The assignments will also typically contain some written questions
about the reading material.
In addition, you'll have two midterms, plus a final. These will fit the
standard format: in class, closed book, etc.
Here's how the course will be broken down:
65% assignments (see the assignments
page for more details on this.)
30% midterms/final
5% class participation (this includes both attendance and taking
part in class discussion.)
Attendance
Attendance is mandatory. That includes showing up on time at the start
of class. If you need to miss a class for a valid reason, you need to
talk with me IN ADVANCE. Lack of attendance will lead to a drop in your
grade, or your being dropped from the class altogether.
Text
Artificial Intelligence: A Modern Approach. By Stuart Russell and
Peter Norvig. 2nd edition. (Note: You cannot use the first
edition. The content has changed quite a bit, and there's been a lot
of new material added.)
From time to time, I'll also have readings for you from other
sources. I'll put these on the course web page as needed.
Late Policy
10% taken off for each day your assignment is late, starting at the
beginning of class that day. Weekends don't count, so if your
assignment is due on a Friday and you turn it in on a Monday, you get
10% off. After 3 days (30% off), the assignment is worth zero - at
that point, you're better off moving on to the next assignment rather
than getting further behind.
Collaboration
In general, I expect students to behave responsibly and do their own
work. I'm willing to assume this is the case until proven wrong. More
specifically, it is OK to talk with each other about the general
parameters or approach of the assignment. It is NOT OK to share source
code, to do part of an assignment for another person, or to directly
copy another person't work. If you are unsure as to whether something
is considered fair game or not, please ask me and we can discuss it.
A few examples:
"On question 4, are we supposed to implement DFS using a priority
queue?" This is fine; it's a clarification of the assignment. Feel
free to talk about this sort of thing with your classmates.
"I don't understand A*! Can you explain it to me?"
Also fine; you're talking about the course material generally; I think
students should help each other with this sort of thing - you're great
resources for each other.
"Question 3 is really hard. How did you do it?" Now we're getting into
a gray area. If you're talking in generalities here ("Well, we have to
filter the input, assign utilities to possible states, and select the
optimal state") that's fine; you're not telling the other person
exactly how to do the assignment, you're just discussing
approaches. If you're talking specifics ("Here's the code for
calculating expected utility.") then we're moving into
unacceptable territory. The question to ask is: does the person I'm
talking to still need to think for themselves in order to solve the
problem, or have I just given them the entire answer? I strongly
recommend erring on the conservative side here; if you're unsure
whether you're sharing too much, tell the question-asker that they
should talk to me. I'm always happy to help people with problems.
"Can I just look at/use/copy your code?" Definitely not
acceptable. Keep in mind that both participants are cheating here; the
person who is copying and the person who is allowing their friends to
copy. Students that I feel are cheating in this manner (this is
cheating) will not be treated nicely.
Also note that using code that you get off the web, from a friend,
etc. and turning it in as your own is considered plagiarism, just as
if you did it in a paper. This will result in (at least) a zero for
that assignment.
List of topics
Please see the resources page for a
detailed list of topics.