I am creating an exam, and I would like to try to incorporate a few Parsons Problems. I am beginning to wonder if this is reasonably possible.
The advantages are (1) it allows struggling students to demonstrate some of their understanding, (2) it is potentially easy to grade.
My question is with regards to that second item. How could one grade a question like this:
What ordering of these lines would create a program that swaps the first number and last number in array
fst? Not every line given will necessarily need to be used.
a. fst[fst.length-1] = temp; b. int temp = fst; c. int temp2 = fst[fst.length]; d. fst = fst[fst.length-1]; e. fst[fst.length] = fst; f. fst = temp2;
There are a number of possible errors that students could make, and only two completely correct responses.
- Misorder lines
- Include distractor lines
- Not include needed lines
So, how would one award a score to such a problem? I want to devise something at least somewhat fair, and I am having trouble seeing how to award credit when there are various errors.
(NOTE: I am aware that there are richer, more meaningful ways to deeply assess student understanding. I would love to grade everything by code reviews and write-ups, but the reality of my current work situation would make this absolutely impossible. I need ways to assess, even imperfectly, some amount of student understanding in a time-efficient way. I must pick and choose what I assess deeply. I am aware that any grading rubric will be imperfect. What I wish to do is the best I reasonably can.)