Generally speaking, each assignment is arranged in the same way. First, you will complete a beta release of the assignment, implement a set of regression tests, and submit a written report along with your code and tests. Within a couple of days, the course staff will run all of the submitted code against all the tests, as well as do performance testing. You will be graded on code correctness, code cleanliness, documentation, performance, and test coverage. Over the week following your submission, you will sit down for a design and code review with one of our brave Masters in the Practice of Software Systems Engineering (MITPOSSE). Finally, about two weeks after the beta release, you will resubmit a final release of your code and documentation for a second evaluation.
Detailed grading policy (PDF)
The teaching assistants will grade your beta submission. You will get points for correctness, documentation, code cleanliness, test coverage, and performance. More detailed information will be provided with each assignment.
Your documentation should include a short but thorough "executive summary" to describe your submission. With regard to testing, if someone else's submission passes your tests but has a bug, you will lose points. If you find a bug that no or few others find, you will receive extra points.
After examining the results of the beta, the course staff will set a performance goal for each problem. This goal will typically be set so that few of the initial submissions meet it. Any submission which has not met this performance goal will get a portion of the available points, depending on how close to the goal the submission is.
You will submit code by pushing it back into the upstream repository in the course locker (that is, by typing git push after committing your changes). You will submit your written reports in PDF format electronically via the course website.
You will arrange a meeting with your assigned Master in the week following the beta submission's due date and provide them with a copy of your submission. When you meet with your Master (for about an hour), you will walk them through everything you did and answer any questions they have. Review your "executive summary" with them at the beginning of your meeting. Your Master is not grading you, and what they think of your efforts has no impact on your grade (although your attendance and participation does). They are only providing you with personalized advice and suggestions to help improve your grade and, of course, become a better programmer. They are also not there to write code for you or to provide exact answers or algorithmic suggestions. You should, however, feel free to ask them for critiques of your coding technique and for general advice. Although your Master's feedback does not directly impact your grade, should you fail to attend a design review, your grade for that project will be impacted adversely.
The final submission will generally be due about two weeks after the due date for the beta. To receive full credit, you must meet or exceed the performance goal announced previously and maintain (or achieve) a perfect correctness score. We will share the set of all the (correct) tests that you and your classmates produced with you for use in your regression testing.
Since this course also covers software-engineering issues related to code cleanliness, if we pointed out any non-performance-related issues with your beta (such as problems with code readability or organization), you should also correct those for the final submission. If you fail to correct these issues, you will lose points.
With the final submission, please submit a brief, informal write-up in PDF format electronically via the course website. Highlight the changes you have made so that we can be sure to examine them and give you credit.