6.034 introduces representations and algorithms used to build
artificial intelligence systems in robotics, language,
This is the only formal pre-requisite but we will depend on it
strongly. In particular, we assume that you can programs in
Python, that you understand search algorithms (depth-first,
breadth-first, uniform-cost, A*) and basic probability and state
estimation to the level covered in 6.01
We will assume that you know what the chain rule is and partial
derivatives and dot products. If you have not taken 18.02 (or
are not taking it concurrently), you should really wait to take
6.034 until you have.
The course covers the following areas:
Inference (8 lectures)
Planning (8 lectures)
Machine learning (8 lectures)
Textbook (available at Quantum
& Amazon) is
Russell & Norvig, AI: A Modern Approach (3rd ed is preferred, 2nd ed is acceptable).
1 recitation with TA (on Fridays, at 10, 11, 12, or 3 in 26-328)
15% Midterm 1
15% Midterm 2
10% Recitation Participation
You cannot take this class if you have a
schedule conflict with another class; the midterms
will be in class.
You must complete all projects to pass the course.
You have a total of 5 grace days for late submission of projects.
The 6.034 collaboration policy is based on the old
Most people learn more effectively when they study in small groups and
cooperate in various other ways on homework. This can be particularly
true in programming assignments, where working with a partner often
helps to avoid careless errors. We are very much in favor of this kind
of cooperation, so long as all participants actively involve
themselves in all aspects of the work - not just split up the
assignment and each do only a fraction.
The projects in 6.034 are designed to be large scale activities, in
which group activity in brainstorming and design is often a key
component. For these projects, we encourage you to work with one or
two other people. When you turn in your project, you must identify
with whom you worked. We expect, however, that you are involved in all
aspects of the project, that you write and comment your own set of
code, and that you write up your results separately. When you hand in
material with your name on it, we assume that you are certifying that
this is your work and that you were involved in all aspects of it. Do
not just turn in a copy of a single file; write your own version. This
means that you create this file yourself, and not just annotate a copy
that you received from someone else. We know that this may sound like
replication of work, but an important part of learning the material is
making the process an active one, particularly with respect to
editing, executing, and debugging software, which you do by ensuring
that you create and explain your solution.
Here is an example scenario of how a good collaboration might work:
Both (all) of you sit down with pencil and paper and together
plan how you're going to solve and test things. You go together to a
cluster and sit at adjacent machines. You check after each project to
make sure that the others have working implementations and are all
caught up. When one of you has a problem, the others look over your
shoulder. For example, your partner has a bug on one part, and you are
able to point out where the bug is and how to fix it. On each part of
the project, you write your own code and solution, seeking help from
the others when you have difficulties. On the write-up, each of you
lists the names of all of your collaborators.
Here is an example of an inappropriate collaboration:
Your send your friend a copy of your code so far. She works on
it to complete the procedure you had not finished, and she fixes a bug
in another procedure. You each submit this shared code and
solution. Even though you list the names of each other as
collaborators, this is inappropriate collaboration because you were
not both involved in all aspects of the work - you did not each write
your own implementation even if to a common plan, and you shared a
common set of code and writeup.
Not listing the name of a collaborator will be deemed
cheating. Similarly, remember that copying another person's work and
representing it as one's own work is a serious academic offense and
will be treated as such.
In general, we strongly encourage you to work as a group. It is a
very effective way of catching conceptual and other errors, and of
refining one's thinking and understanding. Also note that if you are
having trouble solving a project, please take advantage of the Teaching
Assistants. Part of their responsibility is to answer questions and
provide advice and guidance on the course material.
It is NOT legitimate to use bibles or an on-line source of code or
solutions to any of the projects. Doing so is not only likely to
hinder your learning the material, it is intellectually dishonest and
a form of cheating. Do the projects on your own, work on the projects
in an appropriate fashion consistent with the collaboration policy, or
get assistance from the teaching staff.