In an ideal world, this page will grow and eventually list all solutions to sicp. Suggested guidelines:


Chapter 1. Building Abstractions with Procedures

1.1 The Elements of Programming

1.2 Procedures and the Processes They Generate

1.3 Formulating Abstractions with Higher-Order Procedures

Chapter 2. Building Abstractions with Data

2.1 Introduction to Data Abstraction

2.2 Hierarchical Data and the Closure Property

2.3 Symbolic Data

2.4 Multiple Representations for Abstract Data

2.5 Systems with Generic Operations

Chapter 3. Modeling with Mutable Data

3.1 Assignment and Local State

3.2 The Environment Model of Evaluation

3.3 Modeling with Mutable Data

3.4 Concurrency: Time Is of the Essence

3.5 Streams

Chapter 4. Metalinguistic Abstraction

4.1 The Metacircular Evaluator

4.2 Variations on a Scheme -- Lazy Evaluation

4.3 Variations on a Scheme -- Nondeterministic Computing

4.4 Logic Programming

Chapter 5. Computing with Register Machines

5.1 Designing Register Machines

5.2 A Register Machine Simulator


Hey guys i have also put part of my sicp solution on blogger .I'd like to hear from you,my email is lenatis@gmail,comments and contact are welcome!!

Ivan Veselov

There is a wiki dedicated to SICP with solutions available in Scheme, Haskell and Oberon. Also discussions of solutions are present.


Some solutions I have completed

 ;;This program computes the cube root of a number. It also is in block structure 
 (define (exercise-1.8 x) 
   (define (good-enough? guess) 
     (< (abs (- (cube guess) x)) 0.0001)) 
   (define (cubert-iter guess) 
     (if (good-enough? guess) 
         (cubert-iter (improve guess)))) 
   (define (improve guess) 
     (/ (+ (/ x (* guess guess)) (* 2 guess)) 3)) 
   (define (cube y) (* y y y)) 
   (cubert-iter 1.0)) 

You might try this again after completing exercise 1.7; it has the same problems the sqrt defined in the text has.

 ;;Note f(n) is in recursive form  
 (define (f n) 
   (cond ((< n 3) n) 
         ((>= n 3) 
           (f (- n 1)) 
           (* 2 (f (- n 2))) 
           (* 3 (f (- n 3))))))) 
 (f 0) 
 (f 5) 
 (f 10) 


In the same vein, I've been posting SICP solutions on my blog:

Comments and criticism welcome.


I have solved as well most of the exercises. I tried to do them in a systematic and explanatory way so others can benefit from using them.


I began posting my "readings" and exercise solutions of SICP in my blog: The examples and solutions are rewritten in Common Lisp instead of Scheme.

Brit Butler

I've also begun blogging my SICP solutions in scheme and providing a little commentary.


My attempt to complete SICP book here


I started to post raw solutions (sometimes with debug output) here I also publish interesting things from the book and video, e.g. iterative tower of Hanoi, analysis of counting change, etc. If you tried to solve some exercises and want to discuss some solutions or details, welcome!


My solutions to the SICP book are available here:


Welcome to my github:


Just another repository with solutions: