Skip to main content
Log in

Learning to program using hierarchical model-based debugging

  • Published:
Applied Intelligence Aims and scope Submit manuscript

Abstract

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.

This is a preview of subscription content, log in via an institution to check access.

Access this article

Price excludes VAT (USA)
Tax calculation will be finalised during checkout.

Instant access to the full article PDF.

Institutional subscriptions

Fig. 1
Fig. 2
Fig. 3
Fig. 4
Fig. 5
Fig. 6
Fig. 7
Fig. 8
Fig. 9
Fig. 10
Fig. 11
Fig. 12
Fig. 13
Fig. 14

Similar content being viewed by others

Notes

  1. Parsimony is the principle that the simplest explanation is to be preferred.

  2. We used the term test case to denote the examples of inputs and outputs for the student’s program; and test problem to verify the soundness of the Dr. Java Pro.

References

  1. 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

  2. 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

  3. 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

  4. Beck K (2002) Test Driven Development: By Example. Addison-Wesley Longman Publishing Co., Inc., Boston

    Google Scholar 

  5. Benjamins R (1993) Problem solving methods for diagnosis. Ph.D. thesis. University of Amsterdam

  6. Benjamins R (1995) Problem solving methods for diagnosis and their role in knowledge acquisition. Int J Expert Syst Res Appl 8(2):93–120

    Google Scholar 

  7. Bergin J Patterns for selection. Retrieved 2014. http://csis.pace.edu/~bergin/patterns/Patternsv4.html

  8. Binkley D, Harman M (2004) A survey of empirical results on program slicing. Adv Comput 62:105–178

    Article  Google Scholar 

  9. 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

    Article  Google Scholar 

  10. Chittaro L, Ranon R (2004) Hierarchical model-based diagnosis based on structural abstraction. Artif Intell 155(1-2):147–182

    Article  MATH  MathSciNet  Google Scholar 

  11. Daly C, Horgan J (2004) An automated learning system for Java programming. IEEE Trans Educ 47(1):10–17

    Article  Google Scholar 

  12. 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

  13. 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

  14. 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

  15. de Kleer J, Williams BC (1987) Diagnosing multiple faults. Artif Intell 32(1):97–130

    Article  MATH  Google Scholar 

  16. 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

  17. 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

  18. 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

  19. 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

    Article  Google Scholar 

  20. Mayer W, Stumptner M (2008) Evaluating models for model-based debugging, In: International Conference on Automated Software Engineering (ASE), pp 128–137

  21. 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

  22. 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

  23. 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

  24. Mozetič I (1991) Hierarchical model-based diagnosis. International Journal of Man-Machine Studies 35(3):329–362

    Article  Google Scholar 

  25. Nica M, Nica S, Wotawa F (2013) On the use of mutations and testing for debugging. Software: Practice and Experience 43(9):1121–1142

    Google Scholar 

  26. 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

  27. Reiter R (1987) A theory of diagnosis from first principles. Artif Intell 32(1):57–95

    Article  MATH  MathSciNet  Google Scholar 

  28. 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

  29. Wieland D (2001) Model-based debugging of Java programs using dependencies. Phd thesis. Vienna University of Technology

  30. Winslow LE (1996) Programming pedagogy: A psychological overview. SIGCSE Bull 28(3):17–22

    Article  Google Scholar 

  31. 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

    Article  MATH  MathSciNet  Google Scholar 

  32. Zhang X, He H, Gupta N, Gupta R (2005) Experimental evaluation of using dynamic slices for fault location. ACM, New York, pp 33–42

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Karina Valdivia Delgado.

Rights and permissions

Reprints and permissions

About this article

Check for updates. Verify currency and authenticity via CrossMark

Cite this article

de Barros, L.N., Pinheiro, W.R. & Delgado, K.V. Learning to program using hierarchical model-based debugging. Appl Intell 43, 544–563 (2015). https://doi.org/10.1007/s10489-015-0659-9

Download citation

  • Published:

  • Issue Date:

  • DOI: https://doi.org/10.1007/s10489-015-0659-9

Keywords

Navigation