Learning to Program from Interactive Example Code (With and Without Intentional Bugs)
Total Page:16
File Type:pdf, Size:1020Kb
LEARNING TO PROGRAM FROM INTERACTIVE EXAMPLE CODE (WITH AND WITHOUT INTENTIONAL BUGS) A Dissertation Submitted to the Temple University Graduate Board In Partial Fulfillment of the Requirements for the Degree DOCTOR OF PHILOSOPHY by Jean M. Griffin May 2018 Dissertation Advisory Committee Members: Dr. Kristie Newton, Advisory Chair, Teaching and Learning Dr. Catherine Schifter, Psychological Studies in Education (Emerita) Dr. Julie Booth, Psychological Studies in Education External Advisor: Dr. John Dougherty, Haverford College Computer Science ABSTRACT Computing education for learning to program has made great strides in the current century. Exciting educational technologies are now available and active learning pedagogies are increasingly used. Interest is strong, but the longstanding problem remains: learning to program as an analytical endeavor is quite frustrating for many. The purpose of this study is to discover ways to mitigate this frustration. It researches ways to help students comprehend code by guiding them to take it apart (through reading, tracing, completing, and debugging) as they learn to write code on their own. This study contributes to the understanding of learning from errors. It also builds upon and further develops the emergent pedagogy of de-constructionism. The de- constructionist approach involves taking things apart, practice, and learning from errors. This study applies a de-constructionist approach in an experiment with ~80 undergraduates learning Python in an introductory programming class. During weekly lab periods, students engaged with web-based interactive practice problems that emphasize reading, tracing, completing, and in some cases, debugging code. Students also wrote code for lab and homework assignments. Approximately half of the students were given some that involved learning from bugs that were intentionally placed in the provided code, while the others were not. Learning gains were assessed using pre/post tests and exams. Surveys were used to measure attitudes. Learning gains and attitudes were compared according to condition (Bugs, NoBugs), prior experience, gender, minority status, and class size. This study demonstrates that bugs can be intentionally incorporated into practice problems that students like to solve, without detrimental effects on learning or attitudes about computing. It also contributes to the literature on code comprehension. ii ACKNOWLEDGEMENTS I am grateful to the Temple College of Education community, especially to my committee members. My advisors Dr. Catherine Schifter and Dr. Kristie Newton encouraged me to conduct computer science education research that I found meaningful; Dr. Julie Booth provided valuable advice about my study’s research design and analysis. My external advisor Dr. John Dougherty provided subject matter expertise in CS education. I am thankful for my research apprenticeship with Carol Brandt and my interdisciplinary cohort of fellow graduate students. I am also grateful to my University of Pennsylvania masters of engineering advisor, Dr. Norm Badler, and my computer science teachers at Mills College. I was fortunate to have the cooperation of the teacher participants in my study and their department chair, and to have the opportunity to attend the 2015 International Computing Education Research (ICER) doctoral consortium. I am grateful to the Runestone Interactive development team for their education technology and to Barbara Ericson who encouraged me to use it. I appreciate all the teaching assistants and colleagues who worked with me over the years to find ways to make introductory programming more accessible and fun. I am very grateful for the support of my family including my parents, children, and siblings. I am lucky that many dear friends encouraged me on this journey. iii TABLE OF CONTENTS Page ABSTRACT ........................................................................................................................ ii ACKNOWLEDGEMENTS ............................................................................................... iv LIST OF FIGURES .......................................................................................................... vii LIST OF TABLES ........................................................................................................... viii CHAPTER 1. INTRODUCTION ...............................................................................................................1 Purpose ............................................................................................................................5 Significance of Study ......................................................................................................5 Definitions of Terms .......................................................................................................6 Organization ....................................................................................................................7 2. LITERATURE REVIEW ....................................................................................................8 Introduction .....................................................................................................................8 Theoretical Framework ..........................................................................................8 My Professional Experience ................................................................................10 Publications Included in This Review ..................................................................10 Learning by Taking Apart .............................................................................................11 Taking Apart Computer Programs ........................................................................11 Taking Apart the Invisible Notional Machine ................................................11 Reading and Completing Example Code .......................................................14 Pedagogies and Curricula ...............................................................................17 Interactive Practice Problems .........................................................................27 Summary .......................................................................................................39 Taking Apart Physical Machines .........................................................................40 Formal Education: Mechanical Dissection and Product Dissection .............41 Informal Education: Tod Phod Jod ................................................................44 Reverse Engineering .......................................................................................46 Summary ........................................................................................................50 Techniques for Taking Apart Examples ................................................................51 Learning Through Practice ............................................................................................64 Learning from Intentional Errors ..................................................................................69 Controversy and Culture .......................................................................................70 Theories .................................................................................................................71 Usage of Common Misconceptions and Errors .....................................................76 Intentional Errors for Learning Mathematics ........................................................78 Intentional Errors for Learning to Program ...........................................................88 Wisdom from Early Research .........................................................................90 Curricula and Educational Technologies ........................................................92 Summary .......................................................................................................106 Emotions ...............................................................................................................109 Learning by De-Constructing ......................................................................................111 A Model for Learning by De-Constructing ........................................................112 De-Constructionism & Constructionism ............................................................115 iv Gaps in the Literature ..................................................................................................116 Research Questions .....................................................................................................118 3. METHODS ......................................................................................................................119 Research Design ..........................................................................................................119 Context and Participants ..............................................................................................120 Practice Problems Created with Runestone Interactive .....................................122 Timeline .......................................................................................................................125 Fall 2015: Classroom Observations ...................................................................125 Spring 2016: Usability Study .............................................................................126 Spring 2016: Pilot