One of the primary goals of this course is to teach you how to produce well-designed code. Towards this end, we use a mastery learning approach for your projects. Mastery learning requires that you master a topic before moving on to the next. Applied to your projects, this means your current project must by fully functional and well-designed before you can move on to the next project.
The projects you must work on for this course are:
The following sections provide more detail on how your projects will be graded, and the project submission process.
You do not receive a partial grade for partially functional projects. Instead, you must continue to resubmit your project until it (1) generates the correct results and (2) is well-designed and passes the code review.
As such, individual project grades are determined by the number of times you submitted that project before passing the code review. Your final course grade will largely depend on the number of projects you complete.
You are allowed two free submissions with every project (one submission after getting correct results, one submission to addressing comments from the code review). Additional submissions will result in a 5 point deduction per submission (up to a maximum of 20 points).
You will be provided with scripts to test your project submission. These scripts will test that your project produces correct results. You should run these scripts on the lab computers. This will require you to login remotely to a lab computer, checkout your code from SVN, and run the provided scripts on that lab computer.
You must pass these tests before your code is eligible for code review. Please see the teacher assistant or instructor for help if you are unable to pass these tests.
Once your code passes these tests, commit your code to SVN. You must use the exact SVN repository location provided in the project specification. Do not forget to include Javadoc comments, a readme.txt file, and a functional project jar file!
Next, fill out the Project Submission form on the course website. Once received, the teacher assistant will verify that your project is properly submitted and produces correct results. If not, you will automatically be required to resubmit the project. This counts towards your total number of submissions, so be certain you have tested your submission!
If your code passes the verification stage, the teacher assistant will let you and the instructor know that your project is ready for code review.
Your code design will be evaluated by the instructor during the code review. During the code review, the instructor will examine whether your code takes an object-oriented, encapsulated, generalized, and efficient approach. The instructor will also examine your code style, formatting, and commenting. Do not waste a submission on poorly formatted or commented code!
After each code review, you will receive a detailed set of comments and either a PASS, WARN, or FAIL. If you receive a PASS, you may move on to the next project. If you receive a WARN, you may move on to the next project but MUST address the code review comments in the next project.
If you receive a FAIL, you must address the comments provided and resubmit the current project. Specifically, you must sign up for another code review after you have addressed the comments and re-tested your code for correctness. You may NOT move on to the next project until you pass the code review process.
You are allowed one interactive code review per project. Click here to schedule a code review appointment. During this appointment, you will come to instructor's office for the code review. This will allow you to watch the code review process and ask questions.
Keep in mind, it is expected that you will have to resubmit your project after the first code review. You are not expected to achieve well-designed code on the first try!
Each project has a suggested deadline, shown on the schedule, that you should work towards. If you meet the suggested deadlines, you are on track to complete all five projects by the end of the semester. However, since you must resubmit each project (one project at a time), there are no hard deadlines for individual projects. (There is, however, an overall cutoff date.)
As an extra incentive to meet the suggested deadlines, you will receive 5 points extra credit for each project submitted and verified by the suggested deadline. You receive these points even if your project does not pass the code review by the suggested deadline. If you submit the project but it fails the verification stage, you do not receive these points.
Projects will no longer be accepted via the online form after Wednesday, May 8, 2013 at 11:59pm. You may NOT submit more than one project at once. (For example, you may not wait until the end of the semester and then submit the first three projects at once, even if they are all functional.) There are no exceptions to this rule.
Your last incomplete project will be graded interactively at the end of the semester and will be assigned a partial grade. For students making good progress, this will be the search engine project. Otherwise, it will be whichever project has not yet passed the code review process. (For example, if you submit project 3 by the cutoff date and it passes the code review, then your final project will be project 4. If it does not pass the code review, then your final project will still be project 3.)
Final project interactive grading will occur on May 13 and May 14. Signup forms will be posted towards the end of the semester. No matter which project you are working on, you MUST sign up for final project interactive grading.