Read Structure and Interpretation of Computer Programs Online
Authors: Harold Abelson and Gerald Jay Sussman with Julie Sussman
Borning, Alan. 1977. ThingLab – An object-oriented system for
building simulations using constraints. In
Proceedings of the 5th
International Joint Conference on Artificial Intelligence.
Borodin, Alan, and Ian Munro. 1975.
The Computational
Complexity of Algebraic and Numeric Problems.
New York: American
Elsevier.
Chaitin, Gregory J. 1975. Randomness and mathematical proof.
Scientific American
232(5):47-52.
Church, Alonzo. 1941.
The Calculi of Lambda-Conversion.
Princeton, N.J.: Princeton University Press.
Clark, Keith L. 1978. Negation as failure. In
Logic and Data
Bases.
New York: Plenum Press, pp. 293-322.
Clinger, William. 1982. Nondeterministic call by need is neither
lazy nor by name. In
Proceedings of the ACM Symposium on Lisp and
Functional Programming,
pp. 226-234.
Clinger, William, and Jonathan Rees. 1991. Macros that work. In
Proceedings of the 1991 ACM Conference on Principles of
Programming Languages,
pp. 155-162.
Colmerauer A., H. Kanoui, R. Pasero, and P. Roussel. 1973. Un système
de communication homme-machine en français. Technical report,
Groupe Intelligence Artificielle, Université d'Aix Marseille,
Luminy.
Cormen, Thomas, Charles Leiserson, and Ronald Rivest. 1990.
Introduction to Algorithms.
Cambridge, MA: MIT Press.
Darlington, John, Peter Henderson, and David Turner. 1982.
Functional Programming and Its Applications.
New York: Cambridge
University Press.
Dijkstra, Edsger W. 1968a. The structure of the “THE”
multiprogramming system.
Communications of the ACM
11(5):341-346.
Dijkstra, Edsger W. 1968b. Cooperating sequential processes. In
Programming Languages
, edited by F. Genuys. New York: Academic Press, pp.
43-112.
Dinesman, Howard P. 1968.
Superior Mathematical Puzzles
. New
York: Simon and Schuster.
deKleer, Johan, Jon Doyle, Guy Steele, and Gerald J. Sussman. 1977.
AMORD: Explicit control of reasoning. In
Proceedings of the ACM
Symposium on Artificial Intelligence and Programming Languages,
pp.
116-125.
Doyle, Jon. 1979. A truth maintenance system.
Artificial
Intelligence
12:231-272.
Feigenbaum, Edward, and Howard Shrobe. 1993. The Japanese National
Fifth Generation Project: Introduction, survey, and evaluation. In
Future Generation Computer Systems,
vol. 9, pp. 105-117.
Feeley, Marc. 1986. Deux approches à l'implantation du
language Scheme. Masters thesis, Université de Montréal.
Feeley, Marc and Guy Lapalme. 1987. Using closures for code
generation.
Journal of Computer Languages
12(1):47-66.
Feller, William. 1957.
An Introduction to Probability Theory
and Its Applications,
volume 1. New York: John Wiley & Sons.
Fenichel, R., and J. Yochelson. 1969. A Lisp garbage collector for
virtual memory computer systems.
Communications of the ACM
12(11):611-612.
Floyd, Robert. 1967. Nondeterministic algorithms.
JACM,
14(4):636-644.
Forbus, Kenneth D., and Johan deKleer. 1993.
Building Problem
Solvers.
Cambridge, MA: MIT Press.
Friedman, Daniel P., and David S. Wise. 1976. CONS should not
evaluate its arguments. In
Automata, Languages, and Programming:
Third International Colloquium,
edited by S. Michaelson and R.
Milner, pp. 257-284.
Friedman, Daniel P., Mitchell Wand, and Christopher T. Haynes. 1992.
Essentials of Programming Languages.
Cambridge, MA: MIT
Press/McGraw-Hill.
Gabriel, Richard P. 1988. The Why of
Y
.
Lisp Pointers
2(2):15-25.
Goldberg, Adele, and David Robson. 1983.
Smalltalk-80: The
Language and Its Implementation.
Reading, MA: Addison-Wesley.
Gordon, Michael, Robin Milner, and Christopher Wadsworth. 1979.
Edinburgh LCF.
Lecture Notes in Computer Science, volume 78. New
York: Springer-Verlag.
Gray, Jim, and Andreas Reuter. 1993.
Transaction Processing:
Concepts and Models.
San Mateo, CA: Morgan-Kaufman.
Green, Cordell. 1969. Application of theorem proving to problem
solving. In
Proceedings of the International Joint Conference on
Artificial Intelligence,
pp. 219-240.
Green, Cordell, and Bertram Raphael. 1968. The use of
theorem-proving techniques in question-answering systems. In
Proceedings of the ACM National Conference,
pp. 169-181.
Griss, Martin L. 1981. Portable Standard Lisp, a brief overview.
Utah Symbolic Computation Group Operating Note 58, University of Utah.
Guttag, John V. 1977. Abstract data types and the development of
data structures.
Communications of the ACM
20(6):397-404.
Hamming, Richard W. 1980.
Coding and Information Theory.
Englewood Cliffs, N.J.: Prentice-Hall.
Hanson, Christopher P. 1990. Efficient stack allocation for
tail-recursive languages. In
Proceedings of ACM Conference on
Lisp and Functional Programming,
pp. 106-118.
Hanson, Christopher P. 1991. A syntactic closures macro facility.
Lisp Pointers,
4(3).
Hardy, Godfrey H. 1921. Srinivasa Ramanujan.
Proceedings of
the London Mathematical Society
XIX(2).
Hardy, Godfrey H., and E. M. Wright. 1960.
An Introduction to
the Theory of Numbers.
4th edition. New York: Oxford University
Press.
Havender, J. 1968. Avoiding deadlocks in multi-tasking systems.
IBM Systems Journal
7(2):74-84.
Hearn, Anthony C. 1969. Standard Lisp. Technical report AIM-90,
Artificial Intelligence Project, Stanford University.
Henderson, Peter. 1980.
Functional Programming: Application and
Implementation.
Englewood Cliffs, N.J.: Prentice-Hall.
Henderson. Peter. 1982. Functional Geometry. In
Conference Record
of the 1982 ACM Symposium on Lisp and Functional Programming,
pp. 179-187.
Hewitt, Carl E. 1969. PLANNER: A language for proving theorems in
robots. In
Proceedings of the International Joint Conference on
Artificial Intelligence,
pp. 295-301.
Hewitt, Carl E. 1977. Viewing control structures as patterns of
passing messages.
Journal of Artificial Intelligence
8(3):323-364.
Hoare, C. A. R. 1972. Proof of correctness of data representations.
Acta Informatica
1(1).
Hodges, Andrew. 1983.
Alan Turing: The Enigma.
New York: Simon
and Schuster.
Hofstadter, Douglas R. 1979.
Gödel, Escher, Bach: An Eternal
Golden Braid.
New York: Basic Books.
Hughes, R. J. M. 1990. Why functional programming matters. In
Research Topics in Functional Programming
, edited by David Turner.
Reading, MA: Addison-Wesley, pp. 17-42.
IEEE Std 1178-1990. 1990.
IEEE Standard for the Scheme
Programming Language.
Ingerman, Peter, Edgar Irons, Kirk Sattley, and Wallace Feurzeig;
assisted by M. Lind, Herbert Kanner, and Robert Floyd. 1960. THUNKS:
A way of compiling procedure statements, with some comments on
procedure declarations. Unpublished manuscript. (Also, private
communication from Wallace Feurzeig.)
Kaldewaij, Anne. 1990.
Programming: The Derivation of
Algorithms.
New York: Prentice-Hall.
Kohlbecker, Eugene Edmund, Jr. 1986. Syntactic extensions in the
programming language Lisp. Ph.D. thesis, Indiana University.
Konopasek, Milos, and Sundaresan Jayaraman. 1984.
The TK!Solver
Book: A Guide to Problem-Solving in Science, Engineering, Business,
and Education.
Berkeley, CA: Osborne/McGraw-Hill.
Knuth, Donald E. 1973.
Fundamental Algorithms.
Volume 1 of
The Art of Computer Programming.
2nd edition. Reading, MA:
Addison-Wesley.
Knuth, Donald E. 1981.
Seminumerical Algorithms.
Volume 2 of
The Art of Computer Programming.
2nd edition. Reading, MA:
Addison-Wesley.
Kowalski, Robert. 1973. Predicate logic as a programming language.
Technical report 70, Department of Computational Logic, School of
Artificial Intelligence, University of Edinburgh.
Kowalski, Robert. 1979.
Logic for Problem Solving.
New York:
North-Holland.
Lamport, Leslie. 1978. Time, clocks, and the ordering of events in a
distributed system.
Communications of the ACM
21(7):558-565.
Lampson, Butler, J. J. Horning, R. London, J. G. Mitchell, and G. K.
Popek. 1981. Report on the programming language Euclid. Technical
report, Computer Systems Research Group, University of Toronto.
Landin, Peter. 1965. A correspondence between Algol 60 and Church's
lambda notation: Part I.
Communications of the ACM
8(2):89-101.
Lieberman, Henry, and Carl E. Hewitt. 1983. A real-time garbage
collector based on the lifetimes of objects.
Communications of
the ACM
26(6):419-429.
Liskov, Barbara H., and Stephen N. Zilles. 1975. Specification
techniques for data abstractions.
IEEE Transactions on Software
Engineering
1(1):7-19.
McAllester, David Allen. 1978. A three-valued truth-maintenance
system. Memo 473, MIT Artificial Intelligence Laboratory.
McAllester, David Allen. 1980. An outlook on truth maintenance.
Memo 551, MIT Artificial Intelligence Laboratory.
McCarthy, John. 1960. Recursive functions of symbolic expressions
and their computation by machine.
Communications of the ACM
3(4):184-195.
McCarthy, John. 1967. A basis for a mathematical theory of
computation. In
Computer Programing and Formal Systems
, edited
by P. Braffort and D. Hirschberg. North-Holland.
McCarthy, John. 1978. The history of Lisp. In
Proceedings of
the ACM SIGPLAN Conference on the History of Programming Languages.
McCarthy, John, P. W. Abrahams, D. J. Edwards, T. P. Hart, and M. I.
Levin. 1965.
Lisp 1.5 Programmer's Manual.
2nd edition.
Cambridge, MA: MIT Press.
McDermott, Drew, and Gerald Jay Sussman. 1972. Conniver reference
manual. Memo 259, MIT Artificial Intelligence Laboratory.
Miller, Gary L. 1976. Riemann's Hypothesis and tests for primality.
Journal of Computer and System Sciences
13(3):300-317.
Miller, James S., and Guillermo J. Rozas. 1994. Garbage collection is
fast, but a stack is faster. Memo 1462, MIT Artificial Intelligence
Laboratory.
Moon, David. 1978. MacLisp reference manual, Version 0. Technical
report, MIT Laboratory for Computer Science.
Moon, David, and Daniel Weinreb. 1981. Lisp machine manual.
Technical report, MIT Artificial Intelligence Laboratory.
Morris, J. H., Eric Schmidt, and Philip Wadler. 1980. Experience
with an applicative string processing language. In
Proceedings
of the 7th Annual ACM SIGACT/SIGPLAN Symposium on the Principles of
Programming Languages.
Phillips, Hubert. 1934.
The Sphinx Problem Book
. London: Faber
and Faber.
Pitman, Kent. 1983. The revised MacLisp Manual (Saturday evening
edition). Technical report 295, MIT Laboratory for Computer Science.
Rabin, Michael O. 1980. Probabilistic algorithm for testing primality.
Journal of Number Theory
12:128-138.
Raymond, Eric. 1993.
The New Hacker's Dictionary.
2nd edition.
Cambridge, MA: MIT Press.
Raynal, Michel. 1986.
Algorithms for Mutual Exclusion.
Cambridge, MA: MIT Press.
Rees, Jonathan A., and Norman I. Adams IV. 1982. T: A dialect of Lisp
or, lambda: The ultimate software tool. In
Conference Record of
the 1982 ACM Symposium on Lisp and Functional Programming,
pp.
114-122.
Rees, Jonathan, and William Clinger (eds). 1991. The revised
4
report on the algorithmic language Scheme.
Lisp Pointers,
4(3).
Rivest, Ronald, Adi Shamir, and Leonard Adleman. 1977. A method for
obtaining digital signatures and public-key cryptosystems. Technical
memo LCS/TM82, MIT Laboratory for Computer Science.
Robinson, J. A. 1965. A machine-oriented logic based on the
resolution principle.
Journal of the ACM
12(1):23.
Robinson, J. A. 1983. Logic programming – Past, present, and future.
New Generation Computing
1:107-124.
Spafford, Eugene H. 1989. The Internet Worm: Crisis and aftermath.
Communications of the ACM
32(6):678-688.
Steele, Guy Lewis, Jr. 1977. Debunking the “expensive procedure
call” myth. In
Proceedings of the National Conference of the
ACM,
pp. 153-62.
Steele, Guy Lewis, Jr. 1982. An overview of Common Lisp. In
Proceedings of the ACM Symposium on Lisp and Functional Programming,
pp. 98-107.
Steele, Guy Lewis, Jr. 1990.
Common Lisp: The Language.
2nd
edition. Digital Press.
Steele, Guy Lewis, Jr., and Gerald Jay Sussman. 1975. Scheme: An
interpreter for the extended lambda calculus. Memo 349, MIT
Artificial Intelligence Laboratory.
Steele, Guy Lewis, Jr., Donald R. Woods, Raphael A. Finkel, Mark R.
Crispin, Richard M. Stallman, and Geoffrey S. Goodfellow. 1983.
The Hacker's Dictionary.
New York: Harper & Row.
Stoy, Joseph E. 1977.
Denotational Semantics.
Cambridge, MA:
MIT Press.
Sussman, Gerald Jay, and Richard M. Stallman. 1975. Heuristic
techniques in computer-aided circuit analysis.
IEEE Transactions
on Circuits and Systems
CAS-22(11):857-865.