6.001 policy.
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.
A student completing 6.034 will be able to:
- Explain the basic knowledge representation, problem solving, and learning methods of Artificial Intelligence
- Assess the applicability, strengths, and weaknesses of the basic knowledge representation, problem solving, and learning methods in solving particular particular engineering problems
- Develop intelligent systems by assembling solutions to concrete computational problems
- Understand the role of knowledge representation, problem solving, and learning in intelligent-system engineering
- And many 6.034 students will, as measured by exit survey, develop an interest in the field sufficient to take more advanced subjects