Enhancing block-based programming pedagogy to promote the culture of quality from the ground up a position paper

Block-based programming has proven extraordinarily successful as a pedagogical tool for learning the fundamentals of computing via an exploratory, unconstrained, and hands-on approach. One would think that the issue of software quality is inapplicable in this programming domain. Nevertheless, as recent research shows, block-based programs, written by novice programmers, exhibit recurring quality problems. Although block-based software is not intended for production environments, poor quality can be detrimental to achieving the educational objectives the very use of blocks aims for. Specifically, as we and other researchers have been discovering, introductory programmers, as they gain proficiency, tend to retain poor programming habits, thus continuing to introduce recurring quality problems into their programs. Evidence also indicates that poorly written code is less likely to be reused, thus hindering the potential benefits of this peer-learning mechanism. These findings call for a synergistic effort from educators and tool developers to address the issue of software quality in the context of block-based programming. This effort will require innovating both in the realm of introductory computing curricula and software infrastructure to improve software quality.

[1]  Kathryn T. Stolee,et al.  Smells in block-based programming languages , 2016, 2016 IEEE Symposium on Visual Languages and Human-Centric Computing (VL/HCC).

[2]  Sayamindu Dasgupta,et al.  Remixing as a Pathway to Computational Thinking , 2016, CSCW.

[3]  Ralph E. Johnson,et al.  Drag-and-drop refactoring: Intuitive and efficient program transformation , 2013, 2013 35th International Conference on Software Engineering (ICSE).

[4]  Elliot Soloway,et al.  Learning to program = learning to construct mechanisms and explanations , 1986, CACM.

[5]  Ronald B. Heady,et al.  Improve constantly and forever , 2009 .

[6]  Gregorio Robles,et al.  Automatic detection of bad programming habits in scratch: A preliminary study , 2014, 2014 IEEE Frontiers in Education Conference (FIE) Proceedings.

[7]  Joseph Krajcik,et al.  Issues and approaches for developing lerner-centered technology , 2003, Adv. Comput..

[8]  Eli Tilevich,et al.  Understanding Recurring Software Quality Problems of Novice Programmers , 2017 .

[9]  Gregorio Robles,et al.  Software clones in scratch projects: on the presence of copy-and-paste in computational thinking learning , 2017, 2017 IEEE 11th International Workshop on Software Clones (IWSC).

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

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

[12]  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).

[13]  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).

[14]  S. Berczuk,et al.  Finding solutions through pattern languages , 1994, Computer.

[15]  Felienne Hermans,et al.  Teaching Software Engineering Principles to K-12 Students: A MOOC on Scratch , 2017, 2017 IEEE/ACM 39th International Conference on Software Engineering: Software Engineering Education and Training Track (ICSE-SEET).