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[0];
c. int temp2 = fst[fst.length];
d. fst[0] = fst[fst.length-1];
e. fst[fst.length] = fst[0];
f. fst[0] = temp2; 

There are a number of possible errors that students could make, and only two completely correct responses.

They could:

  1. Misorder lines
  2. Include distractor lines
  3. 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.)

  • $\begingroup$ (a) looks like a syntax error/typo, and without a proper (a) the problem is not a solvable. $\endgroup$
    – Erik Eidt
    Commented Feb 17, 2021 at 17:04
  • $\begingroup$ @ErikEidt Thank you for catching that! $\endgroup$
    – Ben I.
    Commented Feb 17, 2021 at 23:56
  • 3
    $\begingroup$ I'm worried that anyone with any form of dyslexia will be disadvantaged by such problems. Should I be? $\endgroup$
    – Buffy
    Commented Feb 18, 2021 at 20:09
  • $\begingroup$ @Buffy They are meant to decrease cognitive load, and there is certainly research to that effect. It could be that dyslexic individuals would have comparatively less advantage, but I would be quite surprised if the activity is purely harder than "code this method" for anyone. $\endgroup$
    – Ben I.
    Commented Feb 18, 2021 at 22:10

1 Answer 1


Personally if I was including a Parsons problem in an assessment I think I would grade it on the number of lines the student got in the correct place. For example, if you had a program in which 6 lines of code made up the correct solution you could award a mark for getting the first 2 lines in the correct place, then another for the next 2 and finally a mark for the last 2 for a total of 3 marks. Alternatively, if you wanted to make it easier for students to access some marks you could give a mark for each line for a total of 6. The route you take will depend on your students.

For students that make errors, you just look to see if they put any lines in the right place and award marks as appropriate.

Here is a practical example I did with my students earlier this year:

pw = "1234"
correct = False
attempts = 0
while not correct and attempts < 3:
    password = input("Enter your password")
    if password == pw:
        print("Password accepted")
        correct = True
        print("Incorrect password")
        attempts += 1

A possible mark scheme for this problem could be:

  • Initialise variables in the correct place = 1 point
  • Variable initialisation is followed by the while loop = 1 point
  • Input is taken from the user within the while loop before the if/else structure = 1 point
  • If/else structure is correct and follows the user input within the while loop = 1 point

You could increase the number of points for the question if you wanted by, for example, giving one for each variable initialisation or one for the if part of the if/else and one for the else part.

In this problem I didn't include any distractor lines because of the difficulty of problem I wanted to create for my students who were new to iteration. But you could do the same thing whilst including distractor lines.

I hope this is useful.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.