CompSci 108
Fall 2006
Software Design and Implementation

Grading Policies

This is primarily a programming course, thus you must demonstrate that you have completed some programming during the semester in order to have a chance of receiving a passing grade. While your grade is based primarily on how well you do on several programming assignments, part of the grade is also based on written work that may be assigned during the semester and on class participation (specifically presentations, class discussions, and useful posts on the course bulletin board).

There are two kinds of programming assignment: recitation and team assignments. Recitation assignments are weekly solo projects, on which you must work by yourself according to the course collaboration policy. These mastery assignments are designed to ensure that that everyone who completes the course is "certified" as capable of writing and understanding reasonably complex programs. As such, you must complete at least one such assignment in order to receive a passing grade for the course.

All non-mastery assignments are team projects. Often team assignments will have several smaller deliverables that must be submitted electronically before the final deadline. Each submission should show "real effort and achievement" towards the final goal. These submissions will be graded on a one through three scale. One means that up to one point may be subtracted from your final project grade, two means a half-point may be subtracted, three means nothing may be substracted. Thus, if you get less than a three on any of these intermediate deliverables, you cannot earn more than a B+ on the assignment. Additionally, for each team assignment, one project artifact must be handed in.

Note, only one summary grade will be given for each team assignment. Thus your individual grade depends not only on your programming skills but on your ability to work with others. More credit will be given to programs that have minimal, but collaborative, functionality than to projects that have one piece working perfectly, but do not represent the integrated efforts of the team. In addition to the team's submission, each student must submit an individual project analysis after submitting the final version of the project. This analysis will not affect the team grade, but may impact your individual grade. For example, if the team project fails, despite your best efforts, but you write a good, concrete, and detailed analysis of why it failed you may receive a D on the project, but an A on the analysis.

A final team assignment will be assigned instead of a final exam. This final project must be completed and handed in before the course's scheduled exam time. Your final assignment will be presented in an open session, attended by your classmates, graduate students, and other faculty members during the scheduled exam period. Additionally, you may be assigned to meet with the professor as a group to demo your project and discuss its details. Plan on this demo taking approximately an hour --- everyone in the group must attend this demo.

There may be some optional assignments whose completion is required for an A+. The percentages given below assume each of the projects above is assigned. If, during the semester, a project is not assigned, they may be updated to reflect their relative weight in the course. In short, these percentages are given as guidelines -- not fixed weights.

10% Class participation, written work
20% Recitation projects
30% Team projects
25% Final team project
15% Exams, quizzes
Grading Criteria

In general, to earn an A on any assignment you must go beyond what is expected. Meeting all requirements is worth only a B+. Meeting all requirements superbly can earn an A-. Doing more than is required, or doing astonishingly good work, is the only way to earn an A.

Note that, unlike other Computer Science courses, several things contribute to the grade awarded for an assignment, not just the program's functionality. Each part will be graded on a scale of 1-5; roughly 1 is a D, 2 is a C, 3 is a B, 4 is an A-, 5 is an A. Grades of 3+, 4+, etc. are possible. Grades mean roughly the following:

1 Poor, little indication of effort
2 Okay, on track, but needs real work
3 Good, functional, some room for improvement
4 Very good, complete
5 Outstanding
No Late Submissions

This class moves at a demanding pace and getting even a few days behind can be hard to recover from since, like a domino effect, each tardiness tends to propagate through the following assignments. Late work also makes extra work for the staff since we try to get things graded as soon as possible. Thus all projects must be turned in on time. If, for some reason, you (or your group) cannot meet a specific deadline you should hand in your best effort by the deadline. You should then to make sure to write a detailed project analysis, including what you would have done if you had more time and how you will avoid such problems in the future.

This may seem overly harsh, but it is important that you do not get behind in this course, its pace is too fast. Additionally, it allows us to give you feedback as quickly as possible. The secret to successfully surviving this course is to start early and work steadily; it is not possible to cram or skim in Computer Science courses. If you are having trouble, be sure to see one of the course staff as far before the due date as possible. Do not give up, ask for help.