What are good criteria for grading programming assignments? [closed]
I'm going to be teaching a scripting and tool development class to a group of 3D animators. In amongst teaching them coding fundamentals, I plan to have them pick a repetitive task they must perform frequently and have them iteratively develop a tool to automate or simplify this task as an assignment.
What I'd like to know are some criteria that can be used for grading programming assignments such as these? Some of the criteria I came up with were:
Does It Work - Does the tool perform it's task, does it break on certain cases, etc.
Code Cleanliness - Has the code been properly indented, is their coding style consistent, etc.
Documentation - Are functions well documented, are any "clever" bits of code commented, is it under-commented or over-commented, etc.
Efficiency - Has the script been optimized to run quickly, has a lot of unnecessary optimization been done on a task that isn't r开发者_运维问答un very often, etc. (This one I'm not going to put to much emphasis on since these aren't professionally developed tools usually the tool working is more important than speed)
Are there any others?
Clarity. It's important that their code be comprehensible to anyone competent who should chance to open the file.
Does the way the student went about the exercise indicate that they have paid attention to what was taught in class?
You are right to look beyond "does it work"; look for general approach and "craftsmanship".
Do you teach the importance of testing? Look for test cases.
If they had freedom to choose their tools, did they choose wisely?
(no plagarism, obviously)
Are the invariants documented? Are there any unit tests?
Is the entire script broken up into modules or other units of about the right size? (The inability to break up codes of over 100 lines is a bugbear of beginning programmers.)
Tell Them how it is going to work in terms of file locations etc. Provide one set of data for Them to test ón and another for testing their solutions.
精彩评论