I first heard of Parsons Problems thanks to CS Teaching Tips. They define these problems as follows:

"Parsons problems are problems where students build programs from ordering small chunks of provided code."

An example can be found here.

When I research these, I see very little in terms of classroom resources. I find a handful of articles discussing them but not many examples of them in practice. On the surface, these problems -- emphasizing logic and structure separate from syntax -- could be a great activity at varying levels of experience and ability.

What skills or concepts have you used (or would you use) Parsons Problems to teach/reinforce?

  • $\begingroup$ If possible, please reference the handful of articles you refer to or a review of lit. If a user finds this question in a search, the links are very useful to them. $\endgroup$ Jul 3, 2017 at 2:01
  • $\begingroup$ Marvelous. Of course any drag-and-drop editor can be adapted to this. Scratch, for example. But you can also seek higher level "chunks" than single statements. $\endgroup$
    – Buffy
    Jul 19, 2017 at 12:41

5 Answers 5


I used a Parsons problem to teach functions. I used Google Slides to put different colored text boxes on one slide and gave the students instructions to arrange the text boxes in the proper order. A screenshot of what the activity looked like is below:

Screenshot of Parsons problem

I wanted students to have experience with the ordering of function calls in C. There are technically two correct ways to approach this, but because I specify the requirement to use each block, there's only solution here:

Solution to Parsons problem

Seeing how information gets passed from function to function and how to lay out the structure was helpful for students. Focusing on those skills outside of/separate from the syntax helped because students only had to worry about one thing at a time.

As I look ahead to next year, I want to do more of these problems, especially when teaching loops and sorting algorithms. They are quick and simple to make and differentiate instruction effectively. In the context of AP CSP, they provide great practice for the AP Exam which includes a number of code samples to read and understand.

  • $\begingroup$ I don't think I've seen a multi-function Parsons problem before. That could be a really cool category though--- then students have to think about what functionality goes in which function. $\endgroup$
    – nova
    Jul 19, 2017 at 16:35

I think Parsons problems offer a low-cognitive load way to offer practice for just about any code-writing topic. I think they are especially good when students start learning a certain code pattern, and would be overwhelmed by too many details.

Ebooks written on the Runestone platform can have Parsons problems embedded in them. Teachers can choose to use and potentially adapt one of many existing ebooks, or write their own from scratch. Multiple ebooks contain Parsons problems you could use directly or adapt:

Here's an example of the look and feel of these problems: Parsons problem example (Note that this problem provides indentation information, but others on Runestone do not, allowing students to choose their own indentation -- this is known as a 2D Parsons problem)

Recent development is in the process of adding cool new features to these Parsons problems within Runesone [reference], like

  • paired distractors - a tile that works is paired with a similar tile that doesn't work, and students must choose between them
  • dynamic adaptation - the difficulty of the problem changes based on the user's performance
  • accessibility - Parsons problems can be completed with the keyboard only, helping those who can't use a mouse

We use Parsons puzzles when teaching robotics: Parsons puzzles for Thymio robot The student has to select which of the three event blocks on the right causes the behavior specified in the question. This example is for the Thymio robot with the VPL programming environment but similar puzzles could be developed in any block environments.

  • $\begingroup$ You could expand this answer to explain why the approach is well-suited to robotics. $\endgroup$ Jun 8, 2017 at 9:21

I would use it to introduce them to working on large projects, that incorporate many parts.

Parsons Problems force the students to think how separate code segments bond and interact. They would have to think about getting those parts to work together. This teaches them the mindset of working on large projects. It can be used to teach them proper structure of projects: Every part of the project is stored in a separate package, and Parsons Problems are convenient to teach them that.

You could give them a repository of code segments, that can only be changed a bit, and they need to use some or all of those segments in order to create a program of your choosing (e.g. a simple chat with gui, hangman with gui or other programs that have more than one part).

Additionally, making it into a group-project would teach them how to work together and divide the work on the different parts between the group members.


I just started playing with these. What I have been doing is writing some code and testing it and then moving things around before giving the projects to my students to rearrange. So far I have just played with loops and decision structures. I'm using Visual Basic and C# with different classes.


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.