CSci 435/535: Software Engineering

Project Grading

Summary

There are two key questions to be asked when evaluating a student's project grade: The grading system in this class determines the answers to these two questions using a group grade and an individual grade. Once these grades are known, they are combined to determine a student's project grade.

As the project goes on, work that needs to be done is entered into the class issue-tracking system, either by managers (graduate students) or developers (undergraduate students). Each issue has a number of points associated with it. Students assign issues to themselves to indicate that they are working on them. After the issue is complete, the manager closes the issue, thereby indicating that the associated points have been earned.

The group grade is essentially the percentage of the total number of completed points, relative to the total number of points. For example, if there are 50 points for all issues, and 45 points for closed issues, the group grade is 45/50*100=90.

The individual grade is the percentage of points earned, relative to the average earnable points per person. For example, if there are 50 points and 10 people, the average earnable points is 5. If a student earns 4 points, their individual grade is 4/5*100=80.

The overall project grade for a student is 50% group, 50% individual. From the examples above, the student's project grade would be 90*50/100 + 80*50/100=85.

At any time, you can determine your project grade by using issue-tracker to generate a "Performance Score" report for the current milestone and the Developer group.

Individual Grade Complications

There are several details which complicate the simple computation of the individual grades above. For example, there may be points earned by people who drop the course, points earned by non-developers, and points "stolen" by people who do more than their share of the work.

Earnable Points

If a manager completes the work for an issue, the manager will assign the task to him- or herself before closing it. The points for this task are counted toward the overall group grade. However, note the effect of this on the individual grades: because the points for this task can't be earned by a developer, it makes it harder for people to earn the points they need. In other words, the manager has "stolen" points from the developers. (To avoid this, make sure managers don't need to do development work!)

On the other hand, any work done by a student who drops the class is not counted. The student's account will be marked "inactive", and the points they have earned will count toward the group grade only.

Therefore, the earnable points are computed by subtracting points earned by inactive developers from the total project points.

Computing Points for Issues

For the purposes of calculating the value of a task, each task will have an assigned Points value. The points for a particular task will be calculated based on three properties: Difficulty, Priority, and a bonus Modifier. The formula for points will be Points = (Difficulty * Priority) + Modifier. See below for manager guidelines on point values.

If a developer performs some work and feels that the difficulty or priority estimates were incorrect, the developer may ask the manager for the task to review these values, providing some justification for why they need to be changed.

Teamwork

Multiple people can sign up for the same task, in which case the total number of points will be divided evenly amongst the developers. Developers are encouraged to work in pairs, especially early on. You can often get things done more than twice as fast with a partner.

The Zero-Sum Game and Overachievers

Some people may do more than their share of the work. For example, a student may already have a 100 individual score, but a 70 group score. So the student decides to help the group (and themselves) by doing extra work. At the first order, the grading system is a zero-sum game since there are a "fixed" number of total points. By definition, when this overachiever does more than the average, someone else must suffer because they can not earn those points.

[Since any developer can create additional points for themselves by adding a new task to the system, it isn't a true zero-sum game. There are also other strategies you can use to avoid having points "stolen" from you---see the FAQ below.]

In order to encourage people to overachieve if they want to, there is an additional step in the grading process which is designed to reduce the impact of overachievers. We simply remove all points from consideration which were earned by overachievers, which results in an adjusted earnable points value.

The adjusted earnable points are used instead of the total points to compute each (non-overachiever) person's share of the work. So the target points per person is the adjusted earnable points divided by the number of remaining developers. The individual grade is then the percentage of points earned, relative to the target points per person.

Within the set of remaining people, there will still be some people who earn more than the average. That is unavoidable---at least the effect will be smaller. (Besides, these people aren't really overachievers since they didn't earn the original target average.)

Overall Grade

The overall grade is 50% group grade, 50% individual grade. If a person does absolutely nothing for the project, the best grade they can hope for is a 75. If a person gets a 100 individual grade for the project and no one else does anything, the best grade the person can hope for is slightly higher than a 75.

Group Grade Complications

One situation which may occur is that the outstanding issues may be 100% complete, but the software may still be unfinished. (This can happen if no one enters new issues to fix problems or implement missing functionality.) To take this situation into consideration, the client will estimate the percentage that the software is complete (based primarily on the stated requirements). This percentage is used to scale the group grade to compute an adjusted group grade.

For example, even if 99% of the issues points have been earned, the software may only meet 85% of its requirements. In this case, the adjusted group grade is 99*85/100 = 84.15%.

Note that Issue Tracker will use the unadjusted group grade to compute an estimate of your final grade.

Milestone Grades

Milestone grades are determined by doing the above grading for the tasks created for the given milestone. The milestone grade can be computed by selecting the appropriate milestone from the report form in the issue tracker.

Guidelines For Assigning Points to Tasks

Overview

Difficulty

The Difficulty property will be a representation of the level of effort required for the task. This will be a numeric value that will approximate the number of man-hours required to complete the task by its assigned deadline. One man-hour represents one hour of work by a single worker. The Difficulty value assigned to a task by the managers is unlikely to change over the life of the project.

Priority

The Priority property will represent the importance of the task to the project lifespan. Priority will be numeric, with the following possible values:

The Priority assigned to a given task may be raised if the task becomes more urgent to the project milestones (for example, a priority 3 task that has not been picked up and has now become a more immediate need due to dependencies may be escalated to a priority 4 to encourage volunteers for development).

Modifier

The Modifier property exists to give the managers some "wiggle room" in the number of points awarded for a task. This allows the managers to reward exceptional efforts with extra points, or to penalize incomplete efforts with less points. For example, if a student is for whatever reason unable to complete a task they have signed up for, they may ask a manager if partial credit can be applied; the manager can then decide what portion of the possible points for the task should be awarded if any.

Example

This section shows a sample performance score report. As a developer, you will only be able to view the details related to yourself. As a result, your report will look slightly different.

Example part 1

First we break the user list into developers and non-developers.

Example part 2

Next, for each task, we compute the associated points per person. Note that only closed tasks count toward your score. ("admin" is bold because this report was generated by the admin user.)

Example part 3

The overall group grade is simply the percentage of total points completed.

Example part 4

Since issue #7 was completed by someone who is no longer in the class, the points they earned do not count towards the total points that are earnable by individuals. Note that the points associated with the admin account (a manager) do not get deducted.

Example part 5

Now we compute the points earned by overachievers, and the resulting adjusted points per person. Here, developer_3_overachiever has earned 23.75 points beyond the average 120.75. So we deduct 23.75 from the total earnable points of 483, getting 459.25. The new points per person is then 114.81 instead of 120.75.

Example part 6

The individual grade is the percentage of target points earned.

Example part 7

The final grade is the average of the individual and group grades.

FAQ

  1. How many tasks can I claim? What happens if someone assigns all the tasks to themselves? What if someone joins my task but isn't working on it?

    Issue tracker will limit you to two tasks at a time. If you want to join a task with other developers already working on it, make sure it's okay with them. If you see someone abusing the task list, please notify the task manager.

  2. What if someone sneaks into a task just before it is completed?

    You should get an email notification if anyone modifies a task. You should talk to the person, and contact the task manager if that doesn't work.

  3. What if a task isn't really completed?

    Managers will have three options. If the task is incomplete due to gross negligence, the manager can reopen it, in which case the developers will lose the points until they complete it. If the developers do not wish to continue working on a task, the manager can leave the task closed but lower the number of points. If the task is done but could be done better, the manager can add a new task.

  4. What if someone actually completes all the "good" tasks?

    Early in the semester, you can be assured that there will be many more tasks added to the system. Late in the semester there may be no "good" tasks (or any at all!). The overachiever adjustment will help you in this case, making your target points per person lower. For peace of mind, it's better to earn your points early.

  5. Hey! I had a good grade and the manager added more tasks, and now my grade is bad!

    Managers add tasks for work that needs to be done. If there's more work for the developer group, then you need to do more work yourself to maintain your grade.

  6. What if a manager isn't assigning points fairly? What if a manager isn't closing issues?

    You can tell the manager why you think the points should be adjusted. If you are unhappy with their decision, you can appeal to the professor. Decisions the professor makes are final.

    If you have any problems with a manager not managing tasks properly, you can notify the professor. You'll also have a chance to evaluate all the managers at the end of the project.

  7. Another student joined my task late. It's okay by me, but do I really have to give them half the points? How about we both get 60% of the points?

    Yes. Sorry, but the system is complicated enough already.

  8. I need points, but all the remaining tasks are taken or are too hard.

  9. The slackers in the class seem okay with their low grade, but my grade is suffering because of the bad group grade. Can you protect me from slackers?

    This is by design. Everyone must share in the success (or failure) of the project. If you want a better group grade, you will need to get the slackers more involved, or you will need to cooperate with others to "pick up the slack".

  10. Another student created a task, and I did the task. But the manager lowered the points before closing it. That's not fair! I wouldn't have done the work for so few points.

    Managers always try to make the points consistently fair. If you do a task before the manager has had a chance to make the points appropriate, the manager can't do anything about that. If you are worried that this might happen, contact a manager to make sure that the points are correct before starting the work.

Back Back to CSci 435/535 Homepage.

Last changed February 03 2006 10:00:51. David Coppit, coppit@cs.wm.edu

There have been 1221263 hits since Thu Jun 9 14:49:55 2005

Valid CSS!
Valid HTML 4.01!