Improving Instruction of Programming Patterns with Faded Parsons Problems

Learning to recognize and apply programming patterns — reusable abstractions of code — is critical to becoming a proficient computer scientist. However, many introductory Computer Science courses do not teach patterns, in part because teaching these concepts requires significant curriculum changes. As an alternative, we explore how a novel user interface for practicing coding — Faded Parsons Problems — can support introductory Computer Science students in learning to apply programming patterns. We ran a classroom-based study with 237 students which found that Faded Parsons Problems, or rearranging and completing partially blank lines of code into a valid program, are an effective exercise interface for teaching programming patterns, significantly surpassing the performance of the more standard approaches of code writing and code tracing exercises. Faded Parsons Problems also improve overall code writing ability at a comparable level to code writing exercises, but are preferred by students.

[1]  Marcia C. Linn,et al.  The Knowledge Integration Perspective on Learning and Instruction , 2005 .

[2]  Benedict duBoulay,et al.  Some Difficulties of Learning to Program , 1986 .

[3]  Patricia Haden,et al.  Parson's programming puzzles: a fun and effective learning tool for first programming courses , 2006 .

[4]  Eleanor O'Rourke,et al.  Pyrus: Designing A Collaborative Programming Game to Promote Problem Solving Behaviors , 2019, CHI.

[5]  Gavriel Salomon,et al.  T RANSFER OF LEARNING , 1992 .

[6]  J. Michael Where's the evidence that active learning works? , 2006, Advances in physiology education.

[7]  Margaret M. Burnett,et al.  Programming, Problem Solving, and Self-Awareness: Effects of Explicit Guidance , 2016, CHI.

[8]  Petri Ihantola,et al.  Open source widget for parson's puzzles , 2010, ITiCSE '10.

[9]  Landon P. Cox,et al.  Design patterns: an essential component of CS curricula , 1998, SIGCSE '98.

[10]  Jean Scholtz,et al.  Characteristics of the Mental Representations of Novice and Expert Programmers: An Empirical Study , 1993, Int. J. Man Mach. Stud..

[11]  Mordechai Ben-Ari,et al.  Learning computer science concepts with scratch , 2010, ICER '10.

[12]  Pablo Romero,et al.  Pair programming and the mysterious role of the navigator , 2008, Int. J. Hum. Comput. Stud..

[13]  Dastyni Loksa,et al.  A theory of instruction for introductory programming skills , 2019, Comput. Sci. Educ..

[14]  Laura Zavala,et al.  Precursor skills to writing code , 2017 .

[15]  Barbara Ericson,et al.  Solving parsons problems versus fixing and writing code , 2017, Koli Calling.

[16]  M. Friedman The Use of Ranks to Avoid the Assumption of Normality Implicit in the Analysis of Variance , 1937 .

[17]  Barbara Ericson,et al.  Evaluating the Efficiency and Effectiveness of Adaptive Parsons Problems , 2018, ICER.

[18]  Philip J. Guo Online python tutor: embeddable web-based program visualization for cs education , 2013, SIGCSE '13.

[19]  Jacob Cohen,et al.  The Equivalence of Weighted Kappa and the Intraclass Correlation Coefficient as Measures of Reliability , 1973 .

[20]  Beth Simon,et al.  Evaluating a new exam question: Parsons problems , 2008, ICER '08.

[21]  Marti Hearst,et al.  Exploring Challenging Variations of Parsons Problems , 2020, SIGCSE.

[22]  David Weintrop,et al.  Comparing Block-Based and Text-Based Programming in High School Computer Science Classrooms , 2017, ACM Trans. Comput. Educ..

[23]  Elliot Soloway,et al.  Novice mistakes: are the folk wisdoms correct? , 1986, CACM.

[24]  Nick Cheng,et al.  The Code Mangler: Evaluating Coding Ability Without Writing any Code , 2017, SIGCSE.

[25]  Mary Shaw,et al.  Estimating the numbers of end users and end user programmers , 2005, 2005 IEEE Symposium on Visual Languages and Human-Centric Computing (VL/HCC'05).

[26]  John Harrison,et al.  Computational Thinking: A Digital Age Skill for Everyone. , 2011 .

[27]  Marcia C. Linn,et al.  The case for case studies of programming problems , 1992, CACM.

[28]  Quintin I. Cutts,et al.  The abstraction transition taxonomy: developing desired learning outcomes through the lens of situated cognition , 2012, ICER '12.

[29]  Marja Kuittinen,et al.  An Experiment on Using Roles of Variables in Teaching Introductory Programming , 2005, Comput. Sci. Educ..

[30]  Bruria Haberman,et al.  Pattern-oriented instruction and its influence on problem decomposition and solution construction , 2007, ITiCSE.

[31]  Sandra P. Marshall,et al.  Schemas in Problem Solving , 1995 .

[32]  Thorna O. Humphries,et al.  A CS0 course using Scratch , 2011 .

[33]  Janet Rountree,et al.  Learning and Teaching Programming: A Review and Discussion , 2003, Comput. Sci. Educ..

[34]  Marcia C. Linn,et al.  Patterns and pedagogy , 1999, SIGCSE '99.

[35]  Jan Keith Farmer,et al.  Where ' s the evidence that active learning works ? , 2006 .

[36]  H. Simon,et al.  Perception in chess , 1973 .

[37]  Tanya McGill,et al.  A conceptual framework for analyzing students’ knowledge of programming , 1997 .