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.
[1]
John A. Allen,et al.
The anatomy of lisp
,
1980
.
[2]
Seymour Papert,et al.
Teaching Children to be Mathematicians vs. Teaching About Mathematics. Artificial Intelligence Memo Number 249.
,
1971
.
[3]
William H. Burge,et al.
Recursive Programming Techniques
,
1975
.
[4]
Daniel P. Friedman,et al.
The little LISPer
,
1974
.
[5]
Joachim Laubsch.
Review of "The Anatomy of LISP by John Allen," McGRAW HILL, New York, 1977
,
1978,
LISPB.
[6]
John McCarthy,et al.
LISP 1.5 Programmer's Manual
,
1962
.
[7]
Steve Hardy,et al.
Synthesis Of LISP Functions From Examples
,
1975,
IJCAI.