Improving Scratch Programming with CRC-Card Design

Scratch and other block-based programming environments are popular and successful in engaging young learners with basic concepts of programming. It is common, and intentional, that programming with Scratch is done using an explorative "tinkering" approach, where blocks are selected from toolboxes and assembled. However, this type of bottom-up programming behaviour is generally associated with code quality issues, makes it difficult to create more complex programs, and may impede the learning of fundamental concepts. In order to investigate whether a more structured approach is feasible, we adapted the object-oriented design methodology of CRC cards (class-responsibility-collaboration) to Scratch programs, such that learners first plan the central aspects of their programs (i.e., the sprites and their interactions), before writing the code. We applied this methodology in the context of a pilot study with two school classes to investigate how this affects the students and their resulting projects. The results of this initial investigation suggest that students are not deterred by the additional design work, and we observed a slight improvement in the completeness and correctness of the resulting programs.

[1]  Johannes Magenheim,et al.  Thinking in Objects and their Collaboration: Introducing Object-Oriented Technology , 2003, Comput. Sci. Educ..

[2]  Michal Armoni,et al.  Teaching Abstract Thinking in Introduction to Computer Science for 7th Graders , 2016, WiPSCE.

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

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

[5]  Kent Beck,et al.  A laboratory for teaching object oriented thinking , 1989, OOPSLA 1989.

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

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

[8]  Jeffrey G. Gray,et al.  Learnable programming , 2017, Commun. ACM.

[9]  Kathi Fisler,et al.  Creativity, Customization, and Ownership: Game Design in Bootstrap: Algebra , 2018, SIGCSE.

[10]  Kent L. Beck,et al.  A laboratory for teaching object oriented thinking , 1989, OOPSLA '89.

[11]  Johannes Magenheim,et al.  The design and exploration cycle as research and development framework in computing education , 2017, 2017 IEEE Global Engineering Education Conference (EDUCON).

[12]  Albert Zündorf,et al.  Teaching Modeling with Objects First , 2005 .

[13]  Michal Armoni,et al.  On Teaching Abstraction in CS to Novices , 2013 .

[14]  Jürgen Börstler,et al.  TEACHING OBJECT ORIENTED MODELLING WITH CRC-CARDS AND ROLEPLAYING GAMES , 2005 .

[15]  Michal Armoni,et al.  Learning Abstraction in Computer Science: A Gender Perspective , 2017, WiPSCE.

[16]  Diana Franklin,et al.  A Literature Review through the Lens of Computer Science Learning Goals Theorized and Explored in Research , 2017, SIGCSE.

[17]  Felienne Hermans,et al.  Do code smells hamper novice programming? A controlled experiment on Scratch programs , 2016, 2016 IEEE 24th International Conference on Program Comprehension (ICPC).

[18]  Eli Tilevich,et al.  Understanding recurring quality problems and their impact on code sharing in block-based software , 2017, 2017 IEEE Symposium on Visual Languages and Human-Centric Computing (VL/HCC).

[19]  William Marsh,et al.  Comparing K-5 teachers' reported use of design in teaching programming and planning in teaching writing , 2018, WiPSCE.

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