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.


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


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?

  • 4
    Using the metrics that I told the students I would use when I assigned the project, of course.
    – JeffE
    Commented Dec 16, 2013 at 12:15
  • @JeffE: I haven't assigned the project yet and the metrics aren't quite set yet. That's the reason for the above question. Assume I give them the metrics described under 4 above for code structure. I'd say any halfway dilligent student can achieve each metric to a 100%. Does that mean the metrics aren't challenging enough? What metrics would you take for number 4 above? I'd like to see a few concrete examples.
    – Lernkurve
    Commented Dec 16, 2013 at 16:53
  • 1
    You should not expect software developers in college to also be good designers. Don't make a big deal out of how pretty their UI looks, unless the focus of your course is on UI design. Also, if you are new... this sounds like an awful lot of work for a 3-week project. If you are teaching at a university, keep in mind your students have other courses. Or are these grad students?
    – user45623
    Commented May 29, 2015 at 23:23
  • 1
    If you will grade on 'error handling' on bad logic, be sure to inform them that it will be part of the grade. Commented Jun 3, 2015 at 21:44
  • @roscoe_casita: Yes, did inform them.
    – Lernkurve
    Commented Jun 4, 2015 at 14:07

2 Answers 2


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 deserves that the customer is paying its full price. For instance, I will give 10 points (over 20) for that criteria. If the software fulfil all the requirements then the student is awarded the 10 points, otherwise he/she starts losing some of the points.
  • Part of the grading is for the quality of the code (structure, naming of variable, algorithmic aspects, etc.). I give 5 points at max here.
  • The rest is for the tasks around the code: modeling, UML stuff, reports, etc. The last 5 points can be found here.
  • 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?
    – Lernkurve
    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

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.

Not the answer you're looking for? Browse other questions tagged .