Implementing a More Challenging Parsons Problem Interface for Teaching Computer Science
Nathaniel Weinman, Brian Hsu, Alexia Camacho · 2020
Parsons Problems, in which students unscramble provided lines of code, are an exciting innovation for teaching introductory Computer Science. Prior work has shown that students can learn more efficiently by solving Parsons Problems compared to writing code and can learn more effectively by solving Parsons Problems compared to worked examples. Though Parsons Problems have been found effective, there is some evidence that students can use syntactic heuristics to help them solve these problems without full understanding, confirmed to be in use by mature CS1 students in our pilot study. To address this limitation, we propose Faded Parsons Problems, a variation of Parsons Problems where parts of the provided code are incomplete. We built a Flask app that supports Python programming exercises - traditional code writing, standard Parsons Problems, and Faded Parsons Problems - as well as survey and simple comprehension questions (multiple choice and short answer questions). The system can log anonymized data from participants, enforce time limits, and randomize treatment selection. Exercises support an autograder, implemented as a separate worker using RQ that safely executes arbitrary code. Students can run pre-configured tests as frequently as they want to receive detailed output from the test cases: function arguments, expected output, actual output, print statement output, raised exceptions, and custom messages configured by the instructor. Exercise descriptions, provided code lines (including blanks), initial code, and test cases may be configured from YAML files. The system has been used successfully with 50 simultaneous users. A demo can be viewed at https://codestyle.herokuapp.com/sigcse-demo