<p>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.</p>
<p>For students that make errors, you just look to see if they put any lines in the right place and award marks as appropriate.</p>
<p>Here is a practical example I did with my students earlier this year:</p>
<pre><code>pw = &quot;1234&quot;
correct = False
attempts = 0
while not correct and attempts &lt; 3:
    password = input(&quot;Enter your password&quot;)
    if password == pw:
        print(&quot;Password accepted&quot;)
        correct = True
    else:
        print(&quot;Incorrect password&quot;)
        attempts += 1
</code></pre>
<p>A possible mark scheme for this problem could be:</p>
<ul>
<li>Initialise variables in the correct place = 1 point</li>
<li>Variable initialisation is followed by the while loop = 1 point</li>
<li>Input is taken from the user within the while loop before the if/else structure = 1 point</li>
<li>If/else structure is correct and follows the user input within
the while loop = 1 point</li>
</ul>
<p>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.</p>
<p>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.</p>
<p>I hope this is useful.</p>

CC BY-SA 4.0
2021-07-29T14:20:21.423Z
2021-07-29T14:20:21.423Z
Robert Nixon
<p>I am creating an exam, and I would like to try to incorporate a few <a href="https://cseducators.stackexchange.com/questions/302/effectiveness-of-parsons-problems">Parsons Problems</a>.  I am beginning to wonder if this is reasonably possible.</p>
<p>The advantages are (1) it allows struggling students to demonstrate some of their understanding, (2) it is potentially easy to grade.</p>
<p>My question is with regards to that second item.  How could one grade a question like this:</p>
<blockquote>
<p>What ordering of these lines would create a program that swaps the first number and last number in array <code>fst</code>?  Not every line given will necessarily need to be used.</p>
<pre><code>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; 
</code></pre>
</blockquote>
<p>There are a number of possible errors that students could make, and only two completely correct responses.</p>
<p>They could:</p>
<ol>
<li>Misorder lines</li>
<li>Include distractor lines</li>
<li>Not include needed lines</li>
</ol>
<p>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.</p>
<p><sub>(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 <em>the best I reasonably can.</em>)</sub></p>

CC BY-SA 4.0
2021-02-17T17:04:13.007Z
(a) looks like a syntax error/typo, and without a proper (a) the problem is not a solvable.
Erik Eidt
CC BY-SA 4.0
2021-02-17T23:56:51.803Z
@ErikEidt Thank you for catching that!
Ben I.
CC BY-SA 4.0
2021-02-18T20:09:58.250Z
I'm worried that anyone with any form of dyslexia will be disadvantaged by such problems. Should I be?
Buffy
CC BY-SA 4.0
2021-02-18T22:10:36.727Z
@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.
Ben I.
<grading>
How should Parsons Problems be graded?
# How should Parsons Problems be graded?

(Asked by: username_0 on 2021-02-17)

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:

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.)

**Tags:** grading

> **Comments:**
> **username_1**: (a) looks like a syntax error/typo, and without a proper (a) the problem is not a solvable.  
> **username_0**: @ErikEidt Thank you for catching that!  
> **username_2**: I'm worried that anyone with any form of dyslexia will be disadvantaged by such problems. Should I be?  
> **username_0**: @username_2 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.  

---

## 1 answers

### Answer by username_3 on 2021-07-29. Score: 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
    else:
        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.


---

