This paper describes an approach to the debugging of student Prolog programs in a Prolog Intelligent Tutoring System (PITS) that detects errors in them and proposes the corrections necessary to fix them. It proposes the use of multiple sources of expertise to analyse Prolog programs for tutoring purposes, and the collaboration of these sources for understanding student programs, detection of bugs and suggesting fixes to buggy student programs. It also demonstrates the use of a heuristic bestfirst search of the program decomposition space to parse a Prolog program into a hierarchical structure of predicate definitions, clauses, subgoals, arguments and terms. This article illustrates the merits of an algorithm-based approach supplemented by multiple sources of expertise for program debugging by showing that APROPOS2 is an effective, realistic and useful tool for program debugging. It then highlights the difficulties inherent in debugging Prolog programs and discusses the limitations of our algorithm-based approach.