There are 5 research-based problem types comprising the problem interface. From left to right, they produce a “gentle slope” of increasing difficulty. The reason for offering so many ways to solve any given problem is to help learners remain in the “zone of proximal development”, a “sweet spot” that resides between things they can already do with ease and things they can only do with assistance.
Pseudocode is the first problem type. It requires learners to solve a problem by placing mixed-up blocks of plain English code descriptions in the correct order and indentation. All blocks start in a random order on the left side of the interface, called the starter list. One by one, learners move them over to the right side of the interface, called the solution list. Once learners have at least 1 block in the solution list, they can “run” their answer to check it against the expected Parsons problem solution(s) and unit tests.
Parsons is the second problem type. Like Pseudocode, it requires learners to solve a problem by placing mixed-up blocks in the correct order and indentation—only this time it displays the line of code for each block instead. Learners solve Parsons problems by dragging and dropping starter blocks from the left to the solution area on the right. They validate their work against the correct solution by clicking “run”, which provides block-based and unit test feedback.
Faded Parsons is the third problem type. Like Parsons, it displays a line of code for each block and requires learners to put jumbled blocks in the correct order and indentation—but this time some of the blocks’ text is “faded” (a.k.a missing). To solve a Faded Parsons problem, learners must fill in the blanks correctly, and validate their solution against the correct one(s). Block-based and unit test feedback are provided.
Fix Code is the fourth problem type, which provides learners with a snippet of code in need of debugging. The code might be incomplete, or contain syntax or conceptual errors. It’s up to the designer of the problem. Learners solve a Fix Code problem by correcting the errors in the code provided and running their work against the unit tests for the problem. Only unit test feedback is provided.
Write Code is the fifth and final problem type. It allows learners to write a solution from scratch, which they then run against the unit tests for the problem in order to receive feedback.