Abstract
Block-based programming environments, already popular in computer science education, have been successfully used to make programming accessible to end-users in domains like robotics, mobile apps, and even DevOps. Most studies of these applications have examined small programs that fit within a single screen, yet real-world programs often grow large, and editing these large block-based programs quickly becomes unwieldy. Traditional programming language features, like functions, allow programmers to decompose their programs. Unfortunately, both previous work, and our own findings, suggest that end-users rarely use these features, resulting in large monolithic code blocks that are hard to understand. In this work, we introduce a block-based system that provides users with a hierarchical, domain-specific program structure and requires them to decompose their programs accordingly. Through a user study with 92 users, we compared this approach, which we call guided program decomposition, to a traditional system that supports functions, but does not require decomposition. We found that while almost all users could successfully complete smaller tasks, those who decomposed their programs were significantly more successful as the tasks grew larger. As expected, most users without guided decomposition did not decompose their programs, resulting in poor performance on larger problems. In comparison, users of guided decomposition performed significantly better on the same tasks. Though this study investigated only a limited selection of tasks in one specific domain, it suggests that guided decomposition can benefit end-user programmers. While no single decomposition strategy fits all domains, we believe that similar domain-specific sub-hierarchies could be found for other application areas, increasing the scale of code end-users can create and understand.
- ABB Group. 2021. Wizard easy programming. https://new.abb.com/ products/robotics/application-software/wizard.
Google Scholar
- Marwen Abbes, Foutse Khomh, Yann-Gaël Guéhéneuc, and Giuliano Antoniol. 2011. An Empirical Study of the Impact of Two Antipatterns, Blob and Spaghetti Code, on Program Comprehension. In Proceedings of the European Conference on Software Maintenance and Reengineering. 181–190.
Google Scholar
Digital Library
- Kashif Amanullah and Tim Bell. 2019. Evaluating the use of remixing in scratch projects based on repertoire, lines of code (loc), and elementary patterns. In Proceedings of the Frontiers in Education Conference (FIE). 1–8.
Google Scholar
Digital Library
- Brenna D Argall, Sonia Chernova, Manuela Veloso, and Brett Browning. 2009. A survey of robot learning from demonstration. Robotics and autonomous systems, 57, 5 (2009), 469–483.
Google Scholar
- Barbara Rita Barricelli, Fabio Cassano, Daniela Fogli, and Antonio Piccinno. 2019. End-user development, end-user programming and end-user software engineering: A systematic mapping study. Journal of Systems and Software, 149 (2019), 101–137.
Google Scholar
Cross Ref
- Daniele Benedetelli. 2013. Lego Mindstorms EV3 Laboratory: Build, Program, and Experiment with Five Wicked Cool Robots. No Starch Press.
Google Scholar
- Geoffrey Biggs and Bruce MacDonald. 2003. A survey of robot programming systems. In Proceedings of the Australasian Conference on Robotics and Automation (ACRA). 1–3.
Google Scholar
- Andrew Bragdon, Robert Zeleznik, Steven P Reiss, Suman Karumuri, William Cheung, Joshua Kaplan, Christopher Coleman, Ferdi Adeputra, and Joseph J LaViola Jr. 2010. Code Bubbles: A working set-based interface for code understanding and maintenance. In Proceedings of the Conference on Human Factors in Computing Systems (CHI). 2503–2512.
Google Scholar
Digital Library
- Benjamin Burger, Phillip M Maffettone, Vladimir V Gusev, Catherine M Aitchison, Yang Bai, Xiaoyan Wang, Xiaobo Li, Ben M Alston, Buyi Li, and Rob Clowes. 2020. A mobile robotic chemist. Nature, 583, 7815 (2020), 237–241.
Google Scholar
- Sofia Charalampidou, Apostolos Ampatzoglou, and Paris Avgeriou. 2015. Size and cohesion metrics as indicators of the long method bad smell: An empirical study. In Proceedings of the International Conference on Predictive Models and Data Analytics in Software Engineering. 1–10.
Google Scholar
Digital Library
- Chiu-Liang Chen, Shun-Yin Cheng, and Janet Mei-Chuen Lin. 2012. A study of misconceptions and missing conceptions of novice Java programmers. In Proceedings of the International Conference on Frontiers in Education: Computer Science and Computer Engineering (FECS). 1.
Google Scholar
- TIOBE The Software Quality Company. 2021. TIOBE Index. https://www. tiobe.com/tiobe-index.
Google Scholar
- Matthew John Conway. 1998. Alice: Easy-to-learn three-dimensional scripting for novices. Ph. D. Dissertation. University of Virginia.
Google Scholar
- Brian James Dorn. 2010. A case-based approach for supporting the informal computing education of end-user programmers. Ph. D. Dissertation. Georgia Institute of Technology.
Google Scholar
- Niklas Elmqvist and Jean-Daniel Fekete. 2009. Hierarchical aggregation for information visualization: Overview, techniques, and design guidelines. Transactions on Visualization and Computer Graphics (TVCG), 16, 3 (2009), 439–454.
Google Scholar
Digital Library
- Martin Fowler. 1999. Refactoring: Improving the Design of Existing Code. Addison-Wesley.
Google Scholar
Digital Library
- Neil Fraser. 2015. Ten things we’ve learned from Blockly. In Proceedings of the Blocks and Beyond Workshop (B&B). 49–50.
Google Scholar
- Neil Fraser. 2013. Blockly: A visual programming editor. https://code.google. com/p/blockly.
Google Scholar
- Mateus Carvalho Gonçalves, Otávio Neves Lara, Raphael Winckler de Bettio, and André Pimenta Freire. 2021. End-user development of smart home rules using block-based programming: A comparative usability evaluation with programmers and non-programmers. Behaviour & Information Technology, 1–23.
Google Scholar
- Thomas R. G. Green and Marian Petre. 1996. Usability analysis of visual programming environments: A ‘cognitive dimensions’ framework. Journal of Visual Languages & Computing, 7, 2 (1996), 131–174.
Google Scholar
- Brian Harvey, Daniel D Garcia, Tiffany Barnes, Nathaniel Titterton, Daniel Armendariz, Luke Segars, Eugene Lemon, Sean Morris, and Josh Paley. 2013. Snap!(build your own blocks). In Proceeding of the Technical Symposium on Computer Science Education (SIGCSE). 759–759.
Google Scholar
- Orit Hazzan. 2008. Reflections on teaching abstraction and other soft ideas. ACM SIGCSE Bulletin, 40, 2 (2008), 40–43.
Google Scholar
Digital Library
- Felienne Hermans, Kathryn T Stolee, and David Hoepelman. 2016. Smells in block-based programming languages. In Symposium on Visual Languages and Human-Centric Computing (VL/HCC). 68–72.
Google Scholar
Cross Ref
- Robert Holwerda and Felienne Hermans. 2018. A usability analysis of blocks-based programming editors using cognitive dimensions. In symposium on visual languages and human-centric computing (VL/HCC). 217–225.
Google Scholar
Cross Ref
- Mads Hvilshøj, Simon Bøgh, Ole Madsen, and Morten Kristiansen. 2009. The mobile robot “Little Helper”: Concepts, ideas and working principles. In Conference on Emerging Technologies & Factory Automation. 1–4.
Google Scholar
Cross Ref
- Beate Jost, Markus Ketterl, Reinhard Budde, and Thorsten Leimbach. 2014. Graphical programming environments for educational robots: Open roberta-yet another one? In International Symposium on Multimedia. 381–386.
Google Scholar
Digital Library
- Maria Kallia and Sue Sentance. 2017. Computing teachers’ perspectives on threshold concepts: Functions and procedural abstraction. In Proceedings of the Workshop on Primary and Secondary Computing Education. 15–24.
Google Scholar
Digital Library
- Cazembe Kennedy and Eileen T Kraemer. 2018. What are they thinking? Eliciting student reasoning about troublesome concepts in introductory computer science. In Proceedings of the Koli Calling International Conference on Computing Education Research. 1–10.
Google Scholar
- Amy J. Ko, Robin Abraham, Laura Beckwith, Alan Blackwell, Margaret Burnett, Martin Erwig, Chris Scaffidi, Joseph Lawrance, Henry Lieberman, and Brad Myers. 2011. The state of the art in end-user software engineering. ACM Computing Surveys (CSUR), 43, 3 (2011), 1–44.
Google Scholar
Digital Library
- Jeff Kramer. 2007. Is abstraction the key to computing? Commun. ACM, 50, 4 (2007), 36–42.
Google Scholar
Digital Library
- Essi Lahtinen, Kirsti Ala-Mutka, and Hannu-Matti Järvinen. 2005. A study of the difficulties of novice programmers. ACM SIGCSE Bulletin, 37, 3 (2005), 14–18.
Google Scholar
Digital Library
- John Maloney, Mitchel Resnick, Natalie Rusk, Brian Silverman, and Evelyn Eastmond. 2010. The scratch programming language and environment. ACM Transactions on Computing Education (TOCE), 10, 4 (2010), 1–15.
Google Scholar
Digital Library
- Renée McCauley, Scott Grissom, Sue Fitzgerald, and Laurie Murphy. 2015. Teaching and learning recursive programming: a review of the research literature. Computer Science Education, 25, 1 (2015), 37–66.
Google Scholar
Cross Ref
- José Miguel Mota, Iván Ruiz-Rube, Juan Manuel Dodero, and Inmaculada Arnedillo-Sánchez. 2018. Augmented reality mobile app development for all. Computers & Electrical Engineering, 65 (2018), 250–260.
Google Scholar
Cross Ref
- Zengxi Pan, Joseph Polden, Nathan Larkin, Stephen Van Duin, and John Norrish. 2010. Recent progress on programming methods for industrial robots. In International Symposium on Robotics and ROBOTIK. 1–8.
Google Scholar
- Gabriele Paolacci, Jesse Chandler, and Panagiotis G Ipeirotis. 2010. Running experiments on amazon mechanical turk. Judgment and Decision making, 5, 5 (2010), 411–419.
Google Scholar
- Michael Pradel and Koushik Sen. 2015. The good, the bad, and the ugly: An empirical study of implicit type conversions in JavaScript. In 29th European Conference on Object-Oriented Programming (ECOOP 2015).
Google Scholar
- Nico Ritschel, Vladimir Kovalenko, Reid Holmes, Ron Garcia, and David C Shepherd. 2020. Comparing Block-based Programming Models for Two-armed Robots. IEEE Transactions on Software Engineering (TSE).
Google Scholar
- Gregorio Robles, Jesús Moreno-León, Efthimia Aivaloglou, and Felienne Hermans. 2017. Software clones in scratch projects: On the presence of copy-and-paste in computational thinking learning. In International Workshop on Software Clones (IWSC). 1–7.
Google Scholar
Cross Ref
- Simon Rose, MP Jacob Habgood, and Tim Jay. 2017. An exploration of the role of visual programming tools in the development of young children’s computational thinking. Electronic journal of e-learning, 15, 4 (2017), pp297–309.
Google Scholar
- Christopher Scaffidi, Mary Shaw, and Brad Myers. 2005. The ‘55m end-user programmers’ estimate revisited. Institute for Software Research, International, Carnegie Mellon University.
Google Scholar
- Roland Siegwart, Illah Reza Nourbakhsh, and Davide Scaramuzza. 2011. Introduction to autonomous mobile robots. MIT press.
Google Scholar
- Universal Robots. 2013. PolyScope Manual.
Google Scholar
- US Department of Labor. 2021. Occupational outlook handbook. https://www.bls.gov/ooh/.
Google Scholar
- David Weintrop. 2019. Block-based programming in computer science education. Commun. ACM, 62, 8 (2019), 22–25.
Google Scholar
Digital Library
- David Weintrop, Afsoon Afzal, Jean Salac, Patrick Francis, Boyang Li, David C Shepherd, and Diana Franklin. 2018. Evaluating CoBlox: A comparative study of robotics programming environments for adult novices. In Proceedings of the Conference on Human Factors in Computing Systems (CHI). 1–12.
Google Scholar
- David Weintrop and Nathan Holbert. 2017. From blocks to text and back: Programming patterns in a dual-modality environment. In Proceeding of the Technical Symposium on Computer Science Education (SIGCSE). 633–638.
Google Scholar
Digital Library
- David Weintrop, David C Shepherd, Patrick Francis, and Diana Franklin. 2017. Blockly goes to work: Block-based programming for industrial robots. In Proceedings of the Blocks and Beyond Workshop (B&B). 29–36.
Google Scholar
Cross Ref
- Susan Wiedenbeck, Patti L Zila, and Daniel S McConnell. 1995. End-user training: An empirical study comparing on-line practice methods. In Proceedings of the Conference on Human Factors in Computing Systems (CHI). 74–81.
Google Scholar
Digital Library
- David Wolber, Hal Abelson, Ellen Spertus, and Liz Looney. 2011. App Inventor. O’Reilly Media, Inc..
Google Scholar
Index Terms
Can guided decomposition help end-users write larger block-based programs? a mobile robot experiment
Recommendations
Enabling end-users to implement larger block-based programs
ICSE '22: Proceedings of the ACM/IEEE 44th International Conference on Software Engineering: Companion ProceedingsBlock-based programming, already popular in computer science education, has been successfully used to make programming accessible to end-users in applied domains such as the field of robotics. Most prior work in these domains has examined smaller ...
Program Decomposition and Complexity in CS1
SIGCSE '15: Proceedings of the 46th ACM Technical Symposium on Computer Science EducationInexperienced and novice programmers in CS 1 are often faced with the expectation that they will be able to decompose a problem into subproblems, solve these subproblems independently, and then recompose these solutions. As with programming in general, ...
Block-based Comprehension: Exploring and Explaining Student Outcomes from a Read-only Block-based Exam
SIGCSE '19: Proceedings of the 50th ACM Technical Symposium on Computer Science EducationThe success of block-based programming environments like Scratch and Alice has resulted in a growing presence of the block-based modality in classrooms. For example, in the United States, a new, nationally-administered computer science exam is ...






Comments