ABSTRACT
Block-based programming languages like Scratch, Alice and Blockly are becoming increasingly common as introductory languages in programming education. There is substantial research showing that these visual programming environments are suitable for teaching programming concepts. But, what do people do when they use Scratch? In this paper we explore the characteristics of Scratch programs. To this end we have scraped the Scratch public repository and retrieved 250,000 projects. We present an analysis of these projects in three different dimensions. Initially, we look at the types of blocks used and the size of the projects. We then investigate complexity, used abstractions and programming concepts. Finally we detect code smells such as large scripts, dead code and duplicated code blocks. Our results show that 1) most Scratch programs are small, however Scratch programs consisting of over 100 sprites exist, 2) programming abstraction concepts like procedures are not commonly used and 3) Scratch programs do suffer from code smells including large scripts and unmatched broadcast signals.
- T. L. Alves, C. Ypma, and J. Visser. Deriving metric thresholds from benchmark data. In 26th IEEE International Conference on Software Maintenance (ICSM 2010), pages 1--10. IEEE Computer Society, 2010. Google ScholarDigital Library
- B. Boe, C. Hill, M. Len, G. Dreschler, P. Conrad, and D. Franklin. Hairball: Lint-inspired Static Analysis of Scratch Projects. In Proceeding of the 44th ACM Technical Symposium on Computer Science Education, SIGCSE '13, pages 215--220, New York, NY, USA, 2013. ACM. Google ScholarDigital Library
- K. Brennan, C. Balch, and M. Chung. Creative Computing. Harvard Graduate School of Education, 2014.Google Scholar
- M. Conway, R. Pausch, R. Gossweiler, and T. Burnette.Alice: A Rapid Prototyping System for Building Virtual Environments. In Conference Companion on Human Factors in Computing Systems, CHI '94, pages 295--296, New York, NY, USA, 1994. ACM. Google ScholarDigital Library
- S. Cooper, W. Dann, and R. Pausch. Teaching Objects-first in Introductory Computer Science. In Proceedings of the 34th SIGCSE Technical Symposium on Computer Science Education, SIGCSE '03, pages 191--195, New York, NY, USA, 2003. ACM. Google ScholarDigital Library
- S. Dasgupta, W. Hale, A. Monroy-Hernández, and B. M. Hill. Remixing as a pathway to computational thinking. In Proceedings of the 19th ACM Conference on Computer-Supported Cooperative Work & Social Computing, CSCW '16, pages 1438--1449, New York, NY, USA, 2016. ACM. Google ScholarDigital Library
- D. A. Fields, M. Giang, and Y. Kafai. Programming in the wild: Trends in youth computational participation in the online scratch community. In Proceedings of the 9th Workshop in Primary and Secondary Computing Education, WiPSCE '14, pages 2--11, New York, NY, USA, 2014. ACM. Google ScholarDigital Library
- M. Fowler. Refactoring: improving the design of existing code. Addison-Wesley Longman Publishing Co., Inc., Boston, MA, USA, 1999. Google ScholarDigital Library
- E. Glinert. Towards "Second Generation" Interactive, Graphical Programming Environments. In Proceedings of the IEEE Workshop on Visual Languages, pages 61--70, 1986.Google Scholar
- F. Hermans and E. Aivaloglou.Do code smells hamper novice programming? In Proceedings of the International Conference on Program Comprehension, 2016. to appear.Google Scholar
- F. Hermans, M. Pinzger, and A. van Deursen. Detecting and refactoring code smells in spreadsheet formulas. Empirical Software Engineering, 20(2):549--575, 2015. Google ScholarDigital Library
- J. H. Maloney, K. Peppler, Y. Kafai, M. Resnick, and N. Rusk.Programming by choice: Urban youth learning programming with scratch. In Proceedings of the 39th SIGCSE Technical Symposium on Computer Science Education, SIGCSE '08, pages 367--371, New York, NY, USA,2008. ACM. Google ScholarDigital Library
- T. J. McCabe. A complexity measure. IEEE Trans. Software Eng., 2(4):308--320, 1976. Google ScholarDigital Library
- O. Meerbaum-Salant, M. Armoni, and M. Ben-Ari. Habits of programming in scratch. In Proceedings of the 16th Annual Joint Conference on Innovation and Technology in Computer Science Education, ITiCSE '11, pages 168--172, New York, NY, USA, 2011. ACM. Google ScholarDigital Library
- O. Meerbaum-Salant, M. Armoni, and M. M. Ben-Ari. Learning Computer Science Concepts with Scratch. In Proceedings of the Sixth International Workshop on Computing Education Research, ICER '10, pages 69--76, New York, NY, USA, 2010. ACM. Google ScholarDigital Library
- J. Moreno and G. Robles. Automatic detection of bad programming habits in scratch: A preliminary study. In 2014 IEEE Frontiers in Education Conference (FIE), pages 1--4, Oct. 2014.Google ScholarCross Ref
- J. Moreno-León, G. Robles, and M. Román-González. Dr. Scratch: Automatic Analysis of Scratch Projects to Assess and Foster Computational Thinking. RED: Revista de Educación a Distancia, (46):1--23, Jan. 2015.Google Scholar
- B. Moskal, S. Cooper, and D. Lurie. Evaluating the Effectiveness of a New Instructional Approach. In Proceedings of the SIGCSE technical symposium on Computerscience education, 2005. Google ScholarDigital Library
- T. W. Price and T. Barnes. Comparing Textual and Block Interfaces in a NoviceProgramming Environment. In Proceedings of the Eleventh Annual International Conference on International Computing Education Research, ICER '15, pages 91--99, New York, NY, USA, 2015. ACM. Google ScholarDigital Library
- M. Resnick, J. Maloney, A. Monroy-Hernández, N. Rusk, E. Eastmond, K. Brennan, A. Millner, E. Rosenbaum, J. Silver, B. Silverman, and Y. Kafai. Scratch: Programming for All. Commun. ACM, 52(11):60--67, Nov. 2009. Google ScholarDigital Library
- L. Seiter and B. Foreman. Modeling the learning progressions of computational thinking of primary grade students. In Proceedings of the Ninth Annual International ACM Conference on International Computing Education Research, ICER '13, pages 59--66, New York, NY, USA, 2013. ACM. Google ScholarDigital Library
- A. Wilson, T. Hainey, and T. Connolly. Evaluation of computer games developed by primary school children to gauge understanding of programming concepts. In European Conference on Games Based Learning, page 549.Academic Conferences International Limited, 2012.Google Scholar
- D. Wolber, H. Abelson, E. Spertus, and L. Looney. App Inventor: Create Your Own Android Apps. O'Reilly Media, Sebastopol, Calif, 1 edition edition, May 2011.Google Scholar
- S. Yang, C. Domeniconi, M. Revelle, M. Sweeney, B. U. Gelman, C. Beckley, andA. Johri. Uncovering trajectories of informal learning in large online communities of creators. In Proceedings of the Second (2015) ACM Conference on Learning @Scale, L@S '15, pages 131--140, New York, NY, USA, 2015. ACM. Google ScholarDigital Library
Index Terms
- How Kids Code and How We Know: An Exploratory Study on the Scratch Repository
Recommendations
Toward Teaching Strategies for Block-based Languages: Possibilities, Challenges, and Experiences (Abstract Only)
SIGCSE '18: Proceedings of the 49th ACM Technical Symposium on Computer Science EducationSince the emergence of block-based visual programming languages as a new take on programming environments, they have served as a successful entry point into programming for novice learners. Over time, they have been developed and improved to become ...
Sniffing Through Millions of Blocks for Bad Smells
SIGCSE '17: Proceedings of the 2017 ACM SIGCSE Technical Symposium on Computer Science EducationCode smells codify poor coding patterns known to degrade software quality. Block-based languages have proven to be a viable educational and end-user programming paradigm with increasing adoption across a broad spectrum of users and domains. This rising ...
LitterBox: a linter for scratch programs
ICSE-JSEET '21: Proceedings of the 43rd International Conference on Software Engineering: Joint Track on Software Engineering Education and TrainingCreating programs with block-based programming languages like Scratch is easy and fun. Block-based programs can nevertheless contain bugs, in particular when learners have misconceptions about programming. Even when they do not, Scratch code is often of ...
Comments