-
ForewordForeword Educators, generals, dieticians, psychologists, and parents program. Armies, students, and some societies are
-
Preface to the First EditionPreface to the First Edition A computer is like a violin. You can imagine a novice trying first a phonograph and
-
Preface to the Second EditionPreface to the Second Edition Is it possible that software is not like anything else, that it is meant to be disca
-
AcknowledgmentsAcknowledgments We would like to thank the many people who have helped us develop this book and this curriculum. Our s
-
1 Building Abstractions with ProceduresChapter 1 Building Abstractions with Procedures The acts of the mind, wherein it exerts its power over simple idea
-
1.1 The Elements of Programming1.1 The Elements of Programming A powerful programming language is more than just a means for instructing a computer t
-
1.2 Procedures and the Processes They Generate1.2 Procedures and the Processes They Generate We have now considered the elements of programming: We have used prim
-
2 Building Abstractions with DataChapter 2 Building Abstractions with Data We now come to the decisive step of mathematical abstraction: we forget
-
1.3 Formulating Abstractions with Higher-Order Procedures1.3 Formulating Abstractions with Higher-Order Procedures We have seen that procedures are, in effect, abstractions
-
2.1 Introduction to Data Abstraction2.1 Introduction to Data Abstraction In section 1.1.8, we noted that a procedure used as an element in creating a more
-
2.2 Hierarchical Data and the Closure Property2.2 Hierarchical Data and the Closure Property As we have seen, pairs provide a primitive ``glue'' that we can use to
-
2.3 Symbolic Data2.3 Symbolic Data All the compound data objects we have used so far were constructed ultimately from numbers. In this
-
2.4 Multiple Representations for Abstract Data2.4 Multiple Representations for Abstract Data We have introduced data abstraction, a methodology for structuring syst
-
2.5 Systems with Generic Operations2.5 Systems with Generic Operations In the previous section, we saw how to design systems in which data objects can be
-
3 Modularity, Objects, and StateChapter 3 Modularity, Objects, and State Mimg (Even while it changes, it stands still.) Heraclitus Plus ça c
-
3.1 Assignment and Local State3.1 Assignment and Local State We ordinarily view the world as populated by independent objects, each of which has a s
-
3.2 The Environment Model of Evaluation3.2 The Environment Model of Evaluation When we introduced compound procedures in chapter 1, we used the substitution
-
3.3 Modeling with Mutable Data3.3 Modeling with Mutable Data Chapter 2 dealt with compound data as a means for constructing computational objects th
-
3.4 Concurrency: Time Is of the Essence3.4 Concurrency: Time Is of the Essence We've seen the power of computational objects with local state as tools for mo
-
3.5 Streams3.5 Streams We've gained a good understanding of assignment as a tool in modeling, as well as an appreciation of the c
-
4 Metalinguistic AbstractionChapter 4 Metalinguistic Abstraction ... It's in words that the magic is -- Abracadabra, Open Sesame, and the rest
-
4.1 The Metacircular Evaluator4.1 The Metacircular Evaluator Our evaluator for Lisp will be implemented as a Lisp program. It may seem circular to
-
4.2 Variations on a Scheme -- Lazy Evaluation4.2 Variations on a Scheme -- Lazy Evaluation Now that we have an evaluator expressed as a Lisp program, we can experi
-
4.3 Variations on a Scheme -- Nondeterministic Computing4.3 Variations on a Scheme -- Nondeterministic Computing In this section, we extend the Scheme evaluator to support a
-
4.4 Logic Programming4.4 Logic Programming In chapter 1 we stressed that computer science deals with imperative (how to) knowledge, whereas
-
5 Computing with Register MachinesChapter 5 Computing with Register Machines My aim is to show that the heavenly machine is not a kind of divine, li
-
5.1 Designing Register Machines5.1 Designing Register Machines To design a register machine, we must design its data paths (registers and operations
-
5.2 A Register-Machine Simulator5.2 A Register-Machine Simulator In order to gain a good understanding of the design of register machines, we must tes
-
5.3 Storage Allocation and Garbage Collection5.3 Storage Allocation and Garbage Collection In section 5.4, we will show how to implement a Scheme evaluator as a re
-
5.4 The Explicit-Control Evaluator5.4 The Explicit-Control Evaluator In section 5.1 we saw how to transform simple Scheme programs into descriptions of
-
5.5 Compilation5.5 Compilation The explicit-control evaluator of section 5.4 is a register machine whose controller interprets Scheme
-
ReferencesReferences Abelson, Harold, Andrew Berlin, Jacob Katzenelson, William McAllister, Guillermo Rozas, Gerald Jay Sussman,