ACTIVITIES | PERCENTAGES |
---|---|
Mid-term Quiz | 25% |
Final Exam | 40% |
Problem Sets | 35% |
Students should be able to:
Upon successful completion of 16.410 students will be able to:
The following policies are similar to other programming intensive courses. The following policies are adapted from those given for 6.001.
Problem sets are released weekly, and include both hand written and programming assignments. Problem sets are due in class unless otherwise indicated.
The programming assignments have been planned on the assumption that you will do the required reading and other preparation before you start programming. It is generally much more efficient to test, debug, and run a program you have planned before beginning than to try to do the planning online. Students who have taken similar subjects in previous terms report that failing to prepare ahead for programming assignments generally ensures that the assignments will take much longer than necessary.
Not only is it more efficient to begin work on each problem set soon after it is distributed, but it is advantageous to complete your computer work early. If you use the 16.410-13 Lab, you'll find that there is larger demand for the laboratory facilities and for help from the laboratory assistants just before assignments are due.
All problem sets are due in class of the day specified on the assignment. An assignment will be discounted 20% for each day late.
Your grade in 16.410 or 16.413 will be determined by the following approximate weighting (though the staff reserves the right to consider other factors such as participation in adjusting this formula):
ACTIVITIES | PERCENTAGES |
---|---|
Mid-term Quiz | 25% |
Final Exam | 40% |
Problem Sets | 35% |
ACTIVITIES | PERCENTAGES |
---|---|
Mid-term Quiz | 20% |
Final Exam | 35% |
Project | 20% |
Problem Sets | 25% |
However, you must do the problem sets to pass the course; a passing grade based on the other parts may be converted to a failing grade if you do not turn in all the problem sets, where turning in a problem set means including a serious attempt to complete each problem set.
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.
We are structuring the work this term into two types: problem sets and, for 16.413 students, the final project. Please abide by the following guidelines with regard to these different types of work. Problem sets are designed to reinforce key concepts. These should be completed by each student individually, though seeking tutoring help from Graduate Graders or other staff is perfectly appropriate. The 16.413 project is designed to be a larger scale activity, in which group activity is often a key component. For these projects, we encourage you to work with one other person. 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. We will provide further guidelines regarding the 16.413 project later in the semester.
When you hand in any 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. You are expected to write your own solutions and your own code. Do not copy any material from another class member.
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 things. You go together to a cluster and sit at adjacent machines. When one of you has a problem, the others look over your shoulder. You check after each problem to make sure that the others are all caught up. But in each case you write your own 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.
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's a very effective way of catching conceptual and other errors, and of refining one's thinking and understanding.
See the discussion of the use of "bibles" below for additional information on the use of materials in completing problem sets and projects.
We prohibit the use of bibles in the course. It is very useful for students to see problems that have been offered in the past, along with their solutions. To this end we have provided sample problem sets, exams, and projects on the Open Courseware pages of 16.410 and 16.413.
In addition, we will provide practice exams and solutions in class. However, students who indiscriminately use course "bibles" can fall into the trap of copying solutions, without developing the skills needed to solve the problems from scratch.
If you want to use your own computer, there are implementations of Java® for a wide range of platforms. See the lecture notes section for sites where this software may be downloaded.
The problem sets and project are all implemented in Java®, which is a platform independent language, allowing you to move between machines.
16.410 and 16.413 are time-consuming; but the assignments are not intended to require excessive amounts of time, and we will carefully track the classes level of effort throughout the semester. Note that the focus of this course is on the algorithms underlying autonomous systems. To ground your understanding, it is important that you implement some of these algorithms; nevertheless, this is not a programming course, it is expected that you come into this course as a competent programmer. Of course, the level of programming proficiency in the course will vary widely, and many with less proficiency have done well in the course in the past. However, if you do not have a strong proficiency in programming, you should expect to devote significant additional time, particularly at the beginning of the course, developing your proficiency. Spending enormous amounts of time on 16.410-13 is often the result of simply not asking for help when you need it. It is also possible to spend an excessive amount of time programming. This is often the result of failing to prepare properly, i.e., not developing sufficient competence with the programming language, development and debugging tools, not reading the assigned text an exercises, understanding the distributed code, developing plans to solve the questions, etc.
In addition, please be aware that prolonged computer usage combined with poor posture or improper typing habits can result in conditions such as repetitive strain injury. Remember to take frequent short breaks and to consult the medical department for more information.