Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to main content

What's wrong? Understanding beginners' problems with Prolog

  • Published:
Instructional Science Aims and scope Submit manuscript

Abstract

This paper reviews psychological research on programming and applies it to the problems of learning and teaching Prolog. We present a psychological model that explains how a certain class of errors in programs comes about. The model fits quite well with the results of a small sample of students and problems. The problems that underlie these and other errors seem to be (a) the complexity of the Prolog primitives (unification and backtracking) and (b) the misfit between students' naive solutions to a problem and the constructs that are available in Prolog (e.g. iterative solutions do not map easily to recursive programs). This suggests that learning Prolog could be helped by (1) coherent and detailed instruction about how Prolog works, (2) emphasis on finding recursive solutions that do not rely on primitives such as assignment and (3) instruction in programming techniques that allow students to implement procedural solutions.

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

Access this article

Subscribe and save

Springer+ Basic
$34.99 /Month
  • Get 10 units per month
  • Download Article/Chapter or eBook
  • 1 Unit = 1 Article or 1 Chapter
  • Cancel anytime
Subscribe now

Buy Now

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

Instant access to the full article PDF.

Similar content being viewed by others

References

  • Adelson, B. (1981). Problem solving and the development of abstract categories in programming languages. Memory and Cognition, 9, 422–433.

    Google Scholar 

  • Adelson, B., Littman, D. and Soloway, E. (1984). A model of expert design. In Proceedings of the Cognitive Science Conference, Boulder.

  • Anderson, J. R. (1983). Learning to program. In Proceedings of the Eighth International Joint Conference on Artificial Intelligence, Karlsruhe, Germany.

  • Anderson, J. R., Farrell, R. and Sauers, R. (1984). Learning to program in LISP. Cognitive Science, 8, 87–129.

    Google Scholar 

  • Bonar, J. and Soloway, E. M. (1985). Pre-programming knowledge: a major source of misconceptions in novice programmers. Human-Computer Interaction, 1, 133–162.

    Google Scholar 

  • Brown, J. S. and VanLehn, K. (1980). Repair theory: a generative theory of bugs in procedural skills. Cognitive Science, 4, 379–426.

    Google Scholar 

  • Burstein, M. (1983). Concept formation by incremental analogical reasoning and debugging. In Proceedings of the Machine Learning Workshop 1983, Illinois.

  • Clocksin, W. and Mellish, C. (1981). Programming in Prolog. Berlin: Springer Verlag.

    Google Scholar 

  • Coombs, M. J. and Stell, J. G. (1984). A model for debugging PROLOG by symbolic execution: the separation of specification and procedure. Department of Computer Science, University of Strathclyde.

  • Douglas, S. A. and Moran, T. P. (1980). Learning operator semantics by analogy. In Proceedings AAAI-80, 100–103.

  • du Boulay, B., O'Shea, T. and Monk, J. (1981). The black box inside the glass box. International Journal of Man-Machine Studies 14, 237–249.

    Google Scholar 

  • Gegg-Harrison, T. S. (1989). Basic Prolog schemata. Report CS-1989–20, Department of Computer Science, Duke University, Durham, North Carolina.

    Google Scholar 

  • de Groot, A. D. (1965). Thought and choice in chess. The Hague: Mouton.

    Google Scholar 

  • Hoc, J.-M. (1981). Planning and direction of problem solving in structured programming: an empirical comparison between two methods International Journal of Man-Machine Studies, 15, 363–383.

    Google Scholar 

  • Jeffries, R., Turner, A., Polson, P. and Atwood, M. (1981). The processes involved in designing soft-ware. In J. R. Anderson (Ed.), Cognitive skills and their acquisition. Hillsdale, NJ: Lawrence Erlbaum Associates.

    Google Scholar 

  • Johnson, W. L. and Soloway, E. M. (1984). Intention-based diagnosis of programming errors. Proceedings AAAI-84, 162–168.

  • Kahney, H., (1982). An in-depth study of the cognitive behaviour of novice programmers. Human Cognition Research Laboratory Tech. Report 5, The Open University, Milton Keynes.

    Google Scholar 

  • Kowalski, R. (1982). Logic as a programming language for children. In Proceedings of the European Conference on AI 1982, 2–10.

  • Mayer, R. E. (1981). The psychology of how novices learn computer programming. Computing Surveys, 13, 121–141.

    Google Scholar 

  • McKeithen, K. B., Reitman, J. S., Rueter, H. H. and Hirtle, S. C. (1981). Knowledge organisation and skill differences in computer programmers. Cognitive Psychology, 13, 307–325.

    Google Scholar 

  • Miller, L. A. (1975). Naive programmer problems with specification of transfer-of-control. In Proceedings of AFIPS National Computer Conference, 44, 657–663.

  • Pain, H. and Bundy, A. (1987) What stories should we tell novice Prolog programmers? In R. Hawley (Ed.), Artificial intelligence programming environments. Chichester: Ellis Horwood.

    Google Scholar 

  • Perkins, D. N. and Martin, F. (1986). Fragile knowledge and neglected strategies in novice programmers. In E. M. Soloway and S. Iyengar (Eds.), Empirical studies of programmers. Norwood: Ablex.

    Google Scholar 

  • Pirolli, P. L., Anderson, J. R. and Farrell, R. (1983). Learning to program recursion. In Proceedings Cognitive Science Conference, Boulder.

  • Plummer, D. (1990). Cliché programming in Prolog. In M. Bruynooghe (Ed.), Proceedings of the 2nd Workshop on Meta-Programming in Logic, 247–256, Leuven.

  • Rist, R. S. (1986). Plans in programming: definition, demonstration and development. In E. M. Soloway and S. Iyengar (Eds.), Empirical studies of programmers. Norwood: Ablex.

    Google Scholar 

  • Shapiro, D. G. (1981). Sniffer: a system that understands bugs. AI Memo 638, MIT AI Lab.

  • Soloway, E. M. and Woolf, B. (1980). Problems, plans and programs. SIGSCE Bulletin, 12, 16–24.

    Google Scholar 

  • Soloway, E. M. and Iyengar, S. (Eds.) (1986). Empirical studies of programmers. Norwood: Ablex.

    Google Scholar 

  • van Someren, M. W. (1990). Understanding students' errors with Prolog unification. Instructional Science, this issue.

  • Spohrer, J. C., Soloway, E. and Pope, E. (1985). A goal/plan analysis of buggy Pascal programs, Human-Computer Interaction, 1, 163–207.

    Google Scholar 

  • Spohrer, J. C. and Soloway, E. M. (1986). Novice mistakes: are the folk wisdoms correct? Communications of the ACM, 29, 624–632.

    Google Scholar 

  • Taylor, J. and du Boulay, B. (1986). Studying novice programmers: why they may find learning Prolog hard. In J. Rutkowska (Ed.), Issues for developmental psychology. New York: Wiley.

    Google Scholar 

  • Tromp, D. (1989). The acquisition of expertise in computer programming. Ph.D. thesis, University of Amsterdam.

Download references

Author information

Authors and Affiliations

Authors

Rights and permissions

Reprints and permissions

About this article

Cite this article

Van Someren, M.W. What's wrong? Understanding beginners' problems with Prolog. Instr Sci 19, 257–282 (1990). https://doi.org/10.1007/BF00116441

Download citation

  • Issue Date:

  • DOI: https://doi.org/10.1007/BF00116441

Keywords