Semi-Automatically Mining Students’ Common Scratch Programming Behaviors

In this paper, we introduce a semi-automatic approach to enable scalable data collection and analysis of students’ programming processes in Scratch. We describe a logging tool that records students’ interactions with the Scratch environment as they code. We analyze these programming interaction logs using a combination of automated and manual techniques to uncover patterns that provide insights into common programming behaviors among users during the coding process. We demonstrate this semi-automatic logging and mining approach with a case study, in which students performed the same open-ended coding task in two college courses introducing programming (37 Education and Human Development majors taking an Ed Tech course and 44 non-CS majors taking a general introductory CS course). Our findings demonstrate that we can uncover patterns that help identify which constructs students commonly used for a given task, various types of tinkering behavior within a given task, and some indications of students’ levels of understanding of the blocks. This kind of information is a valuable starting point for where and how to direct teaching efforts.

[1]  Eric Rosenbaum,et al.  Scratch: programming for all , 2009, Commun. ACM.

[2]  Ben Shneiderman,et al.  Exploratory experiments in programmer behavior , 1976, International Journal of Computer & Information Sciences.

[3]  Thomas W. Price,et al.  Defining Tinkering Behavior in Open-ended Block-based Programming Assignments , 2019, SIGCSE.

[4]  Francisco J. García-Peñalvo,et al.  Clickstream for learning analytics to assess students' behavior with Scratch , 2019, Future Gener. Comput. Syst..

[5]  Stephen H. Edwards,et al.  ProgSnap2: A Flexible Format for Programming Process Data , 2019, ITiCSE.

[6]  Johannes Schneider,et al.  Mining Sequences of Developer Interactions in Visual Studio for Usage Smells , 2017, IEEE Transactions on Software Engineering.

[7]  ResnickMitchel,et al.  Programming by choice , 2008 .

[8]  Gilbert Ritschard,et al.  Analyzing and Visualizing State Sequences in R with TraMineR , 2011 .

[9]  Shuchi Grover,et al.  Measuring Student Learning in Introductory Block-Based Programming: Examining Misconceptions of Loops, Variables, and Boolean Logic , 2017, SIGCSE.

[10]  Sze Yee Lye,et al.  Case Studies of Elementary Children’s Engagement in Computational Thinking Through Scratch Programming , 2018 .

[11]  Antonio Gomariz,et al.  SPMF: a Java open-source pattern mining library , 2014, J. Mach. Learn. Res..

[12]  Peeratham Techapalokul,et al.  Sniffing Through Millions of Blocks for Bad Smells , 2017, SIGCSE.

[13]  Felienne Hermans,et al.  How Kids Code and How We Know: An Exploratory Study on the Scratch Repository , 2016, ICER.

[14]  Mordechai Ben-Ari,et al.  Habits of programming in scratch , 2011, ITiCSE '11.

[15]  Diana Franklin,et al.  Hairball: lint-inspired static analysis of scratch projects , 2013, SIGCSE '13.

[16]  Adam S. Carter,et al.  IDE-Based Learning Analytics for Computing Education , 2017, ACM Trans. Comput. Educ..

[17]  David J. Malan,et al.  Scratch for budding computer scientists , 2007, SIGCSE.

[18]  Gregorio Robles,et al.  Dr. Scratch: Automatic Analysis of Scratch Projects to Assess and Foster Computational Thinking , 2015 .

[19]  J. H. Ward Hierarchical Grouping to Optimize an Objective Function , 1963 .

[20]  Klaus Berberich,et al.  Mind the gap: large-scale frequent sequence mining , 2013, SIGMOD '13.

[21]  Ryan S. Baker,et al.  Educational Data Mining and Learning Analytics , 2014 .

[22]  Neil Brown,et al.  Blackbox, Five Years On: An Evaluation of a Large-scale Programming Data Collection Project , 2018, ICER.

[23]  Thomas W. Price,et al.  iSnap: Towards Intelligent Tutoring in Novice Programming Environments , 2017, SIGCSE.

[24]  Daniel D. Garcia,et al.  The beauty and joy of computing , 2015, Inroads.

[25]  Mitchel Resnick,et al.  Programming by choice: urban youth learning programming with scratch , 2008, SIGCSE '08.