6

Situation

Students have three weeks to write a little application (UI, some logic, event handling, persist data to a file). They are given one page with some requirements (input). They are supposed to hand in a compilable and running application (output). No software documentation required.

Question

How would you grade a software project? What criteria would you use? Can you give examples?

Note, I have not yet assigned this project and will communicate these expectations to the students when I do so.

Idea

There are a few areas that seem important to me.

  1. Are all the given requirements implemented?
  2. Is error handling implemented or does the application crash when the user inputs invalid data?
  3. Does the user interface look good, is it usable?
  4. Is the code well structured?
    • Each class in a separate file
    • Small methods which do one single task
    • Public methods are documented
  5. Can I save the data, quit the application, restart it again, and all the data is reloaded?

Those criteria are very vague, I know. For each of the above criteria, I don't know when to give an A and when to give an F. Any suggestions to improve the criteria and any suggestions on how to grade it?

0

2 Answers 2

6

My policy, my 2 cents:

  • Part of the grading corresponds to the expectation of the "customer". If this project is considered as an actual development project in industry, does it deserve that the customer is paying its full price? For instance, I will give 10 points (out of a total score of 20) for that criteria. If the software fulfills all the requirements then the student is awarded the 10 points, otherwise they start losing some of the points.
  • Part of the grading is for the quality of the code (structure, naming of variables, algorithmic aspects, etc.). I give, at maximum, 5 points here.
  • The rest is for the tasks around the code: modeling, UML work, reports, etc. The last 5 points can be found here.
2
  • Thank you for the concrete examples. Let's dig a bit deeper into your second bullet point: code. When do you give a point for structure and when not? The structure may be really bad (zero points) or it may be perfect (one point). So far it's pretty clear. But what if it is sort of okay. Is that zero points or one point? Or half a point? How do you decide where to draw the line and when to award the point and when not? Commented Dec 16, 2013 at 19:21
  • @Lernkurve if you need more flexibility, just award 100 points in total. That gives more room in the way of giving just 5 points for code structure in stead of 0.5 points (which you would have to round off). Commented Dec 16, 2013 at 21:34
2

Grading depends on the level of the students. The younger the student the more beneficial it is to be explicit in your grading policy. In an introductory class the grade is paramount for many people who may be taking that class to fulfill a requirement. In upper level undergraduate or graduate classes, grades seem like more of a curious administrative requirement.

For introductory classes one approach is to enumerate your requirements and give equal weight to all of them. The OP gives five domains. Give each 20 points. I assume that somewhere you specify what the "given requirements" are and what you mean by "error handling". (Are students expected to write custom error classes?)

If a domain has further divisions, such as #4, then divide that domain's points equally among the subdivisions. In this case 7,7,6.

This makes an explicit enough grading criteria that heads off undergraduate complaints about a biased system while giving the more motivated students something to do beyond writing code that checks off boxes.

You must log in to answer this question.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.