Faded Parsons Problems: Reconstructing Expert Solutions to Programming Problems

  • Faculty: Armando Fox, Marti Hearst
  • Students: Nate Weinman (PhD)
We’re rethinking how we can use new types of exercises to teach computer science. The ability to decompose programming problems into familiar and relevant “building blocks” which can be translated into code is critical to being an effective software engineer. Though people naturally build this catalog of “building blocks” over time, it is a slow, gradual, and inconsistent process. Traditional programming exercises are a poor way to build this catalog for a range of reasons, including that students must gain mastery of relevant code and syntax from the bottom up before abstracting these ideas into “building blocks.”
We propose (Faded) Parsons Problems as a way to rethink how we let students practice Computer Science. In Faded Parsons Problems, students are given incomplete lines of code in a scrambled order. They must correctly re-order and complete these lines of code to create a program that solves a task. In a study, we found these to be particularly effective at teaching students helpful “programming patterns” that they could extend to future problems.

Project overviews

5 minute video

Paper: Improving Instruction of Programming Patterns with Faded Parsons Problems

Help Wanted

We’re looking for Masters and ambitious undergraduates to help with various enhancements. These are a mix of research and engineering, but we’d expect many of them to lead to one or more submitted publications.
Prerequisites: Strong software development skills, including solid knowledge of Python and Javascript or the ability to pick them up fast because you’ve used other non-Python web frameworks or modern scripting languages. Self-starter, works well in a small team or as one of a pair. Ability to do significant pathfinding on your own, by researching what has been done on a particular topic, finding relevant articles online where appropriate (with your advisor’s or a senior student’s guidance), and in general getting from a high-level description of the project to a specific plan to build & execute it.
Compensation: Pay or credit may be possible, depending on the specific project.

Integration into PrairieLearn

Another project in ACELab is work on Computer-Based Testing in PrairieLearn. As more courses at Berkeley and other universities adopt this tool, so does the potential to impact the student learning experience. As we have found success in the use of Faded Parsons Problems, we are seeking students to help integrate it into PrairieLearn so it can be used more easily and more widely by instructors.

Improving the Authoring Experience

Following up on the previous project, Faded Parsons Problems can be automatically constructed from existing programming exercises with an instructor solution. To make it even easier for instructors to explore using these problems, we are seeking students to help build tools to automatically import existing problems and create new problems for students.

Envisioning New Exercises

Finally, we are continuing to research new exercises to re-envision the way we help students practice Computer Science. We are currently designing new exercises with a focus on upper-division content. As of writing, this work is in a preliminary stage with some early exciting results. We are seeking students to help prototype these exercises, develop course content, and run studies as we continue to learn.