Artificial intelligence (2nd ed.)
Artificial intelligence (2nd ed.)
The little LISPer
Anatomy of LISP
Teaching Children to be Mathematicians vs. Teaching About Mathematics
Teaching Children to be Mathematicians vs. Teaching About Mathematics
LISP 1.5 Programmer's Manual
Tapping into tacit programming knowledge
CHI '82 Proceedings of the 1982 Conference on Human Factors in Computing Systems
Data structures through plan instantiation
SIGSCE '84 Proceedings of the fifteenth SIGCSE technical symposium on Computer science education
Chick sexing and novice programmers: explicit instruction of problem solving strategies
ACE '06 Proceedings of the 8th Australasian Conference on Computing Education - Volume 52
Supporting CS1 with a program beacon recognition tool
Proceedings of the 2007 annual research conference of the South African institute of computer scientists and information technologists on IT research in developing countries
Hi-index | 0.00 |
An important learning skill is the ability to make abstractions, i.e., to construct classification schemes which highlight similarities and differences. In this paper we shall outline the content of a undergraduate course which attempts to teach this skill in the context of teaching introductory LISP programming and problem solving. The key to this enterprise has been the development of: 1. a taxonomy of problems, i.e., a classification scheme which groups problems into classes based on specific criteria, and 2. a set of plans, i.e., abstractions, each of which captures the essential features of a class of problems, and corresponding solution programs. We begin by developing a scheme for classifying the problems usually offered as exercises in introductory LISP courses. We then examine the LISP programs which solve problems in the various classes and abstract higher level structures called 'plans.' Here we view a plan as a program template plus comments describing the goals and reasons for the various expressions in the template. Next, we build on the set of plans to include new problems. Finally, we speculate briefly on the utility of our taxonomy with respect to programming in languages such as FORTRAN, APL, or PASCAL.