Abstract
Novice programmers often encounter difficulties performing debugging tasks effectively. Even if modern development environments (IDEs) provide high-level support for navigating through code elements and for identifying the right conditions leading to the bug, debugging still requires considerable human effort. Programmers usually have to make hypotheses that are based on both program state evolution and their past debugging experiences. To mitigate this effort and allow novice programmers to gain debugging experience quickly, we propose an approach based on the reuse of existing bugs of open source systems to provide informed guidance from the failure site to the fault position. The goal is to help novices in reasoning on the most promising paths to follow and conditions to define. We implemented this approach as a tool that exploits the knowledge about fault and bug position in the system, as long as any bug of the system is known. The effectiveness of the proposed approach is validated through a quasi-experiment that qualitatively and quantitatively evaluates how the debugging performances of the students change when they are trained using the tool.
- Pasquale Ardimento, Mario L. Bernardi, Marta Cimitile, and Fabrizio M. Maggi. 2019. Evaluating coding behavior in software development processes: A process mining approach. In Proceedings of the International Conference on Software and System Processes (ICSSP’19). IEEE Press, Piscataway, NJ, 84--93. DOI:https://doi.org/10.1109/ICSSP.2019.00020Google Scholar
- Valerie Barr and Chris Stephenson. 2011. Bringing computational thinking to K-12: What is involved and what is the role of the computer science education community? ACM Inroads 2, 1 (Feb. 2011), 48--54. DOI:https://doi.org/10.1145/1929887.1929905Google ScholarDigital Library
- Victor R. Basili, Gianluigi Caldiera, and Dieter H. Rombach. 1994. The Goal Question Metric Approach. Vol. I. John Wiley 8 Sons.Google Scholar
- Brett A. Becker, Kyle Goslin, and Graham Glanville. 2018. The effects of enhanced compiler error messages on a syntax error debugging test. In ACM Technical Symposium on Computer Science Education (SIGCSE’18). ACM, New York, NY, 640--645. DOI:https://doi.org/10.1145/3159450.3159461Google ScholarDigital Library
- Moritz Beller, Niels Spruit, Diomidis Spinellis, and Andy Zaidman. 2018. On the dichotomy of debugging behavior among programmers. In International Conference on Software Engineering (ICSE). ACM, New York, NY. DOI:https://doi.org/10.1145/3180155.3180175Google ScholarDigital Library
- Jens Bennedsen and Carsten Schulte. 2010. BlueJ visual debugger for learning the execution of object-oriented programs? Trans. Comput. Educ. 10, 2 (June 2010), Article 8, 22 pages. DOI:https://doi.org/10.1145/1789934.1789938Google ScholarDigital Library
- Eric Bodden. 2012. Inter-procedural data-flow analysis with IFDS/IDE and soot. In ACM SIGPLAN International Workshop on State of the Art in Java Program Analysis (SOAP’12). ACM, New York, NY, 3--8. DOI:https://doi.org/10.1145/2259051.2259052Google ScholarDigital Library
- Samuel A. Brian, Richard N. Thomas, James M. Hogan, and Colin Fidge. 2015. Planting bugs: A system for testing students’ unit tests. In Proceedings of the 2015 ACM Conference on Innovation and Technology in Computer Science Education (ITiCSE’15). ACM, New York, NY, 45--50. DOI:https://doi.org/10.1145/2729094.2742631Google ScholarDigital Library
- A. Böttcher, V. Thurner, K. Schlierkamp, and D. Zehetmeier. 2016. Debugging students’ debugging process. In 2016 IEEE Frontiers in Education Conference (FIE). 1--7. DOI:https://doi.org/10.1109/FIE.2016.7757447Google ScholarDigital Library
- Rafael Caballero, Adrián Riesco, and Josep Silva. 2017. A survey of algorithmic debugging. ACM Comput. Surv. 50, 4 (Aug. 2017), Article 60, 35 pages. DOI:https://doi.org/10.1145/3106740Google ScholarDigital Library
- Elizabeth Carter. 2015. Its debug: Practical results. J. Comput.g Sci. Colleges 30, 3 (2015), 9--15.Google ScholarDigital Library
- Thomas D. Cook and Donald T. Campbell. 1986. The causal assumptions of quasi-experimental practice. Synthese 68, 1 (1 July 1986), 141--180. DOI:https://doi.org/10.1007/BF00413970Google Scholar
- S. Deitz and U. Buy. 2016. From video games to debugging code. In 2016 IEEE/ACM 5th International Workshop on Games and Software Engineering (GAS’16). 37--41. DOI:https://doi.org/10.1109/GAS.2016.015Google Scholar
- Lisa Nguyen Quang Do, Stefan Krüger, Patrick Hill, Karim Ali, and Eric Bodden. 2018. Debugging static analysis. CoRR abs/1801.04894 (2018). arxiv:1801.04894 http://arxiv.org/abs/1801.04894Google Scholar
- M. Ducassé and A.-M. Emde. 1988. A review of automated debugging systems: Knowledge, strategies and techniques. In International Conference on Software Engineering. IEEE Computer Society Press, 162--171.Google ScholarCross Ref
- Alexander Egyed, Bryan Horling, Raphen Becker, and Robert Balzer. 2003. Visualization and Debugging Tools. Springer US, Boston, MA, 33--42. DOI:https://doi.org/10.1007/978-1-4615-0363-7_4Google Scholar
- Sue Fitzgerald, Gary Lewandowski, Renée McCauley, Laurie Murphy, Beth Simon, Lynda Thomas, and Carol Zander. 2008. Debugging: Finding, fixing and flailing, a multi-institutional study of novice debuggers. Computer Science Education 18, 2 (2008), 93--116. DOI:https://doi.org/10.1080/08993400802114508 arXiv:https://doi.org/10.1080/08993400802114508Google ScholarCross Ref
- Lindsey Ann Gouws, Karen Bradshaw, and Peter Wentworth. 2013. Computational thinking in educational activities: An evaluation of the educational game light-bot. In ACM Conference on Innovation and Technology in Computer Science Education (ITiCSE’13). ACM, New York, NY, 10--15. DOI:https://doi.org/10.1145/2462476.2466518Google ScholarDigital Library
- Robert J. Grissom and John J. Kim. 2005. Effect Sizes for Research: A Broad Practical Approach (2nd ed.). Lawrence Earlbaum Associates.Google Scholar
- Philip J. Guo. 2013. Online python tutor: Embeddable web-based program visualization for CS education. In ACM Technical Symposium on Computer Science Education (SIGCSE’13). ACM, New York, NY, 579--584. DOI:https://doi.org/10.1145/2445196.2445368Google ScholarDigital Library
- Geoffrey L. Herman, Michael C. Loui, Lisa Kaczmarczyk, and Craig Zilles. 2012. Describing the what and why of students’ difficulties in boolean logic. Trans. Comput. Educ. 12, 1 (March 2012), Article 3, 28 pages. DOI:https://doi.org/10.1145/2133797.2133800Google ScholarDigital Library
- Derek Holton and David Clarke. 2006. Scaffolding and metacognition. Int. J. Math. Educ. Sci. Technol. 37, 2 (2006), 127--143. DOI:https://doi.org/10.1080/00207390500285818 arXiv:https://doi.org/10.1080/00207390500285818Google ScholarCross Ref
- Andreas Jedlitschka, Marcus Ciolkowski, and Dietmar Pfahl. 2008. Reporting experiments in software engineering. In Guide to Advanced Empirical Software Engineering. Springer, 201--228.Google Scholar
- J. Ji, G. Woo, H. Park, and J. Park. 2008. Design and implementation of retargetable software debugger based on GDB. In International Conference on Convergence and Hybrid Information Technology, Vol. 1. 737--740. DOI:https://doi.org/10.1109/ICCIT.2008.268Google Scholar
- David H. Jonassen and Woei Hung. 2006. Learning to troubleshoot: A new theory-based design architecture. Educ. Psychol. Rev. 18, 1 (2006), 77--114. http://www.jstor.org/stable/23363854.Google ScholarCross Ref
- Ahmed Khedr and Hazem Bahig. 2017. Debugging tool to learn algorithms: A case study minimal spanning tree. Int. J. Emerging Technol. Learning (iJET) 12, (2017), 90--100. http://online-journals.org/index.php/i-jet/article/view/6442Google ScholarCross Ref
- A. J. Ko and B. A. Myers. 2005. A framework and methodology for studying the causes of software errors in programming systems. J. Vis. Lang. Comput. 16, 1--2 Special Issue (2005), 41--84. DOI:https://doi.org/10.1016/j.jvlc.2004.08.003Google ScholarDigital Library
- M. J. Lee. 2014. Gidget: An online debugging game for learning and engagement in computing education. In 2014 IEEE Symposium on Visual Languages and Human-Centric Computing (VL/HCC). 193--194. DOI:https://doi.org/10.1109/VLHCC.2014.6883051Google ScholarCross Ref
- Thomas Lengauer and Robert Endre Tarjan. 1979. A fast algorithm for finding dominators in a flowgraph. ACM Trans. Program. Lang. Syst. 1, 1 (Jan. 1979), 121--141. DOI:https://doi.org/10.1145/357062.357071Google ScholarDigital Library
- Chen Li, Emily Chan, Paul Denny, Andrew Luxton-Reilly, and Ewan Tempero. 2019. Towards a framework for teaching debugging. In Australasian Computing Education Conference (ACE’19). ACM, New York, NY, 79--86. DOI:https://doi.org/10.1145/3286960.3286970Google ScholarDigital Library
- Andrew Luxton-Reilly, Emma McMillan, Elizabeth Stevenson, Ewan Tempero, and Paul Denny. 2018. Ladebug: An online tool to help novice programmers improve their debugging skills. In ACM Conference on Innovation and Technology in Computer Science Education (ITiCSE’18). ACM, New York, NY, 159--164. DOI:https://doi.org/10.1145/3197091.3197098Google ScholarDigital Library
- Ana Milanova and Jan Vitek. 2011. Static dominance inference. In International Conference on Objects, Models, Components, Patterns (TOOLS’11). Springer-Verlag, Berlin, 211--227. http://dl.acm.org/citation.cfm?id=2025896.2025912Google ScholarCross Ref
- Glenford J. Myers, Corey Sandler, and Tom Badgett. 2011. The Art of Software Testing (3rd ed.). Wiley Publishing.Google ScholarDigital Library
- Devon H. O’Dell. 2017. The debugging mindset. Queue 15, 1 (Feb. 2017), Article 50, 20 pages. DOI:https://doi.org/10.1145/3055301.3068754Google ScholarDigital Library
- Hakjoo Oh, Wonchan Lee, Kihong Heo, Hongseok Yang, and Kwangkeun Yi. 2014. Selective context-sensitivity guided by impact pre-analysis. SIGPLAN Not. 49, 6 (June 2014), 475--484. DOI:https://doi.org/10.1145/2666356.2594318Google ScholarDigital Library
- Gary M. Olson, Sylvia Sheppard, and Elliot Soloway (Eds.). 1987. Empirical Studies of Programmers: Second Workshop. Ablex Publishing Corp., Norwood, NJ.Google ScholarDigital Library
- Ljubomir Perković, Amber Settle, Sungsoon Hwang, and Joshua Jones. 2010. A framework for computational thinking across the curriculum. In Conference on Innovation and Technology in Computer Science Education (ITiCSE’10). ACM, New York, NY, 123--127. DOI:https://doi.org/10.1145/1822090.1822126Google ScholarDigital Library
- F. Petrillo, Z. Soh, F. Khomh, M. Pimenta, C. Freitas, and Y.-G. Gueheneuc. 2016. Towards understanding interactive debugging. IEEE International Conference on Software Quality, Reliability and Security (QRS’16), 152--163. DOI:https://doi.org/10.1109/QRS.2016.27Google ScholarCross Ref
- Thomas Reps, Susan Horwitz, and Mooly Sagiv. 1995. Precise interprocedural dataflow analysis via graph reachability. In ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (POPL’95). ACM, New York, NY, 49--61. DOI:https://doi.org/10.1145/199448.199462Google ScholarDigital Library
- Valerie J. Shute, Chen Sun, and Jodi Asbell-Clarke. 2017. Demystifying computational thinking. Educ. Res. Rev. 22 (2017), 142--158. DOI:https://doi.org/10.1016/j.edurev.2017.09.003Google ScholarCross Ref
- Victor Sobreira, Thomas Durieux, Fernanda Madeiral Delfim, Martin Monperrus, and Marcelo de Almeida Maia. 2018. Dissection of a bug dataset: Anatomy of 395 patches from defects4j. CoRR abs/1801.06393 (2018). arxiv:1801.06393 http://arxiv.org/abs/1801.06393Google Scholar
- Diomidis Spinellis. 2018. Modern debugging: The art of finding a needle in a haystack. Commun. ACM 61, 11 (Oct. 2018), 124--134. DOI:https://doi.org/10.1145/3186278Google ScholarDigital Library
- I. Vessey. 1986. Expertise in debugging computer programs: An analysis of the content of verbal protocols. IEEE Trans. Syst., Man, Cybern. 16, 5 (Sep. 1986), 621--637. DOI:https://doi.org/10.1109/TSMC.1986.289308Google ScholarDigital Library
- Rob Wass and Clinton Golding. 2014. Sharpening a tool for teaching: The zone of proximal development. Teaching Higher Education 19, 6 (2014), 671--684. DOI:https://doi.org/10.1080/13562517.2014.901958 arXiv:https://doi.org/10.1080/13562517.2014.901958Google ScholarCross Ref
- Jeannette M. Wing. 2006. Computational thinking. Commun. ACM 49, 3 (March 2006), 33--35. DOI:https://doi.org/10.1145/1118178.1118215Google ScholarDigital Library
Index Terms
- Reusing Bugged Source Code to Support Novice Programmers in Debugging Tasks
Recommendations
Ladebug: an online tool to help novice programmers improve their debugging skills
ITiCSE 2018: Proceedings of the 23rd Annual ACM Conference on Innovation and Technology in Computer Science EducationDebugging software is challenging, particularly for novices. Despite the importance of debugging, most novice programmers are not formally taught any debugging skills. This paper describes an online tool, Ladebug, that is designed to scaffold the ...
Debugging Debugging
COMPSACW '11: Proceedings of the 2011 IEEE 35th Annual Computer Software and Applications Conference WorkshopsWhen a program fails to accomplish its intended task, debugging is conducted to identify and remove any bugs. The debugging operation itself is not immune to flaws. Empirical evidence suggests many bugs are found after shipping, which calls into ...
What constitutes debugging? An exploratory study of debugging episodes
AbstractWhen debugging, developers engage in activities such as navigating, editing, testing, and inspecting code. Despite being the building blocks of debugging, little is known about how they constitute debugging. To address this gap, we introduce the ...
Comments