Learning to program using hierarchical model-based debugging
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