LEE TIEN, ESQ.; SBN 148216
1452 Curtis Street
Berkeley, CA 94702
Tel: (510) 525-0817
Attorneys for Plaintiff
Daniel J. Bernstein
DANIEL J. BERNSTEIN )
) C 95-00582 MHP
) DECLARATION OF
v. ) HAROLD ABELSON
UNITED STATES DEPARTMENT OF )
STATE et al., ) )
I, HAROLD ABELSON, hereby declare:
1. I am Professor of Computer Science and Engineering at the Massachusetts Institute of Technology in Cambridge, Massachusetts. I give this declaration in my personal capacity and not on behalf of MIT.
2. I have been active in computer science at MIT since 1969, when I began as a graduate student. I joined the MIT Department of Electrical Engineering and Computer Science as a faculty member in 1977.
3. Since 1981, I have been charge of MIT's introductory computer science subject, "Structure and Interpretation of Computer Programs" (together with my colleague, Prof. Gerald Jay Sussman). This subject is taught at MIT each year to between 500 and 700 undergraduates.
4. Together with Gerald Jay Sussman and Julie Sussman, I am author of the textbook "Structure and Interpretation of Computer Programs," which is based on our MIT course. The first edition of this book was published by the MIT Press and the McGraw-Hill Book Company in 1985; the second edition will appear later this year.
5. Through the MIT course and the textbook, my work in computer science education has gained major visibility. Materials arising from our course are currently used at over 200 colleges and universities worldwide.
6. In recognition of my educational activities, I was named winner of 1995 Taylor L. Booth Award, given by the Institute of Electronic and Electrical Engineers (IEEE) Computer Society for outstanding contributions to computer science and engineering education. I was
cited for continued contributions to the pedagogy and teaching of introductory computer science.
7. I comment from the perspective of someone who has been active in the teaching of university computer science.
COMPUTER PROGRAMS ARE A MEDIUM OF EXPRESSION
8. The notion that computer programs are a medium of expression is widespread throughout computer science education. In particular, this notion is central to the approach to computer science used at MIT over the past fifteen years. The idea appears prominently in the preface to our textbook:
Our design of this introductory computer-science subject reflects two major concerns. First, we want to establish the idea that a computer language is not just a way of getting a computer to perform operations but rather that it is a novel formal medium for expressing ideas about methodology. Thus, programs must be written for people to read, and only incidentally for machines to execute....
COMPUTER PROGRAMS EXPRESS IDEAS ABOUT METHODOLOGY
9. Just as ordinary mathematics and logic serve as a languages for expressing ideas about truth and falsehood (so-called "declarative knowledge"), computer programs serve as languages for expressing ideas about how to do things (so-called "imperative knowledge"). The following excerpt from a paper I wrote in 1990 expands on this point (from "Computation as a Framework for Engineering Education", in Research Directions in Computer Science: An MIT Perspective, Cambridge, MA: MIT Press, 1991):
10. "To illustrate the difference between declarative and imperative knowledge, consider the following definition of a square root:
The square root of a number X is the number Y such that Y times Y equals X.
This is declarative knowledge. It tells us something that is true about square roots. But it doesn't tell us how to find a square root.
11. "In contrast, consider the following ancient algorithm, attributed to Heron of
Alexandria, for approximating square roots.
To approximate the square root of a positive number X
- Make a guess for the square root of X.
- Compute an improved guess as the average of the guess and X divided by the guess.
- Keep improving the guess until it is good enough.
12. "Heron's method doesn't say anything about what square roots are, but it does say how to approximate them. It is a piece of imperative "how to" knowledge.
13. "Computer Science is in the business of formalizing imperative knowledge -- developing formal notations and ways to reason and talk about methodology. Here is Heron's method formalized as a procedure in the notation of the Lisp computer language:
(define (sqrt x)
(define (good-enough? guess)
(<(abs (- (square guess) x)) tolerance))
(define (improve guess)
(average guess (/ x guess)))
(define (try guess)
(if (good-enough? guess)
(try (improve guess))))
14. "Certainly, if the only things we ever computed were square roots, then Computer Science would not be of much interest. Similarly, if all one ever did in geometry was surveying, then geometry would not be of much interest. In each case, the importance of having a formalism is that it provides a framework for controlling complexity, a way to think about ideas that are too involved to think about all at once. The important techniques in Computer Science are the techniques for coping with methodological complexity."