Learning to program using hierarchical model-based debugging

Springer Science and Business Media LLC - Tập 43 - Trang 544-563 - 2015
Leliane Nunes de Barros1, Wellington Ricardo Pinheiro2, Karina Valdivia Delgado3
1Institute of Mathematics and Statistics, University of Sao Paulo, Sao Paulo, Brazil
2Walmart eCommerce Brazil, Sao Paulo, Brazil
3School of Arts, Sciences, and Humanities, University of Sao Paulo, Sao Paulo, Brazil

Tóm tắt

Model-based Diagnosis is a well known AI technique that has been applied to software debugging for senior programmers, called Model-Based Software Debugging (MBSD). In this paper we describe the basis of MBSD and show how it can be used for educational purposes. By extending the classical diagnosis technique to a hierarchical approach, we built a programming learning system to allow a student to debug his program in different abstraction levels.

Tài liệu tham khảo

Abreu R, Zoeteweij P, van Gemund AJC (2007) On the accuracy of spectrum-based fault localization. In: Proceedings of the Testing: Academic and Industrial Conference Practice and Research Techniques - MUTATION, TAICPART-MUTATION ’07. IEEE Computer Society, Washington, DC, pp 89–98 Abreu R, Zoeteweij P, Gemund AJCv (2009) Spectrum-based multiple fault localization. In: Proceedings of the 2009 IEEE/ACM International Conference on Automated Software Engineering, ASE ’09. IEEE Computer Society, Washington, DC, pp 88–99 Barros LN, Mota APS, Delgado KV, Matsumoto PM (2005) A tool for programming learning with pedagogical patterns. In: Proceedings of the 2005 OOPSLA workshop on Eclipse technology eXchange. ACM Press Beck K (2002) Test Driven Development: By Example. Addison-Wesley Longman Publishing Co., Inc., Boston Benjamins R (1993) Problem solving methods for diagnosis. Ph.D. thesis. University of Amsterdam Benjamins R (1995) Problem solving methods for diagnosis and their role in knowledge acquisition. Int J Expert Syst Res Appl 8(2):93–120 Bergin J Patterns for selection. Retrieved 2014. http://csis.pace.edu/~bergin/patterns/Patternsv4.html Binkley D, Harman M (2004) A survey of empirical results on program slicing. Adv Comput 62:105–178 Chang KE, Chiao BC, Chen SW, Hsiao RS (2000) A programming learning system for beginners: A completion strategy approach. IEEE Trans Educ 43(2):211–220 Chittaro L, Ranon R (2004) Hierarchical model-based diagnosis based on structural abstraction. Artif Intell 155(1-2):147–182 Daly C, Horgan J (2004) An automated learning system for Java programming. IEEE Trans Educ 47(1):10–17 Delgado KV, de Barros LN (2006) In: Sichman J, Coelho H, Rezende S (eds) Diagnostic of programs for programming learning tools, Advances in Artificial Intelligence - IBERAMIA-SBIA 2006 Lecture Notes in Computer Science, vol 4140, pp 7–16. Springer, Berlin Heidelberg Hashim N, Salam S (2009) Integration of visualization techniques and completion strategy to improve learning in computer programming. In: International Conference of Soft Computing and Pattern Recognition, pp 665–669 Johnson WL, Soloway E (1984) PROUST: Knowledge-based program understanding. In: Proceedings of the 7th International Conference on Software engineering (ICSE). IEEE Press, Piscataway, pp 369–380 de Kleer J, Williams BC (1987) Diagnosing multiple faults. Artif Intell 32(1):97–130 Kȯb D, Wotawa F (2004) Introducing alias information into model-based debugging. In: Proceedings of the 16th Eureopean Conference on Artificial Intelligence (ECAI), Valencia, pp 833–837 Mateis C, Stumptner M, Wotawa F (2000) A value-based diagnosis model for Java programs. In: Proceedings of the 11th International Workshop on Principles of Diagnosis. Morelia Mayer W, Stumptner M (2003) Model-based debugging using multiple abstract models. In: Proceedings of the 5th International Workshop on Automated and Algorithmic Debugging (AADEBUG). Ghent, Belgium, pp 55–70 Mayer W, Stumptner M (2007) Model-based debugging - state of the art and future challenges. Electronic Lecture Notes in Theoretical Computer Science 171:61–82 Mayer W, Stumptner M (2008) Evaluating models for model-based debugging, In: International Conference on Automated Software Engineering (ASE), pp 128–137 Mayer W, Stumptner M, Wieland D, Wotawa F (2002) Can AI help to improve debugging substantially? debugging experiences with value-based models. In: Proceedings of the 15th Eureopean Conference on Artificial Intelligence (ECAI), Lyon, pp 417–421 Mayer W, Stumptner M, Wieland D, Wotawa F (2002) Observations and results gained from the JADE project. In: Proceedings of the 13th International Workshop on Principles of Diagnosis. Semmering Mayer W, Stumptner M, Wieland D, Wotawa F (2002) Towards an integrated debugging environment. In: Proceedings of the 15th Eureopean Conference on Artificial Intelligence (ECAI), Lyon, pp 422–426 Mozetič I (1991) Hierarchical model-based diagnosis. International Journal of Man-Machine Studies 35(3):329–362 Nica M, Nica S, Wotawa F (2013) On the use of mutations and testing for debugging. Software: Practice and Experience 43(9):1121–1142 Porter R, Calder P (2003) A pattern-based problem-solving process for novice programmers. In: Proceedings of the 5th Australasian Computing Education Conference (ACE), pp 231–238 Reiter R (1987) A theory of diagnosis from first principles. Artif Intell 32(1):57–95 Weimer W, Nguyen T, Le Goues C, Forrest S (2009) Automatically finding patches using genetic programming. In: Proceedings of the 31st International Conference on Software Engineering, ICSE ’09. IEEE Computer Society, Washington, DC, pp 364–374 Wieland D (2001) Model-based debugging of Java programs using dependencies. Phd thesis. Vienna University of Technology Winslow LE (1996) Programming pedagogy: A psychological overview. SIGCSE Bull 28(3):17–22 Wotawa F, Nica M, Moraru I (2012) Automated debugging based on a constraint model of the program and a test case. The Journal of Logic and Algebraic Programming 81(4):390–407 Zhang X, He H, Gupta N, Gupta R (2005) Experimental evaluation of using dynamic slices for fault location. ACM, New York, pp 33–42