Book review: “Structure and Interpretation of Computer Programs” by Harold Abelson, Gerald Jay Sussman

May 28th, 2008 at 7:38 am

I have the habit of writing reviews for the books I’ve read, and recently I noticed that something is missing. SICP. I’ve definitely read it, so I should probably write a review, eh ?

The real reason for my writing this review is, however, its Amazon entry. Although the first page shines with glimmering reviews by, no less, Peter Norvig and Paul Graham, the book has a 3.5 star average, which is really inexplicable. Many far inferior books have higher grades ! So I want to make my small contribution by writing SICP the review it deserves, give it the grade it deserves (5 !!!!), and post it to Amazon as well. Lets get started, then.

My first encounter with SICP was in the second year of university, where I took a course named “SICP 1″. I already had working programming experience by that time, so the course wasn’t hard, but I was struck by the beauty of the subjects it taught, by the Scheme language it used and by the long and interesting homework assignments it had. This course woke my curiosity about functional programming, and the Lisp family of languages in particular.

A few years later, with much more experience behind my back, I’ve decided to tackle SICP seriously and read the whole book, solving the vast majority of the exercises. This endeavor took about 10 months, and I enjoyed it immensely. I think SICP is a wonderful book, a seminal work in the field of programming. It is one of those rare books every programmer should read. In this review I’ll try to explain why.

In contrast with most introductory books about programming that just teach you a language, SICP takes a far better approach. The main goal of the authors is not to teach Scheme, it is to teach programming. From the beginning, the book takes an integrative path, where the basic axioms of programming are presented, and later are fortified with examples and exercises. SICP teaches about computational processes - iterative and recursive. How to use them best in each situation, and how to implement them. It also explains abstraction by functional composition. These are topics rarely presented in programming books, but SICP puts them rightly in the first chapter, because they are the real stuff programming is based on.

The example programs developed in the book are real, large, and exciting. You’ll get to develop a powerful picture language, a generic object-oriented arithmetic package including complex and polynomial arithmetic, a simulator for digital circuits, a symbolic differentiation package, an interpreter for Scheme written in Scheme, an interpreter for a logic programming language similar to Prolog, a virtual machine for a simplified pseudo-assembly DSL, an interpreter for Scheme written in this pseudo-assembly, and finally a compiler from Scheme to the assembly language. All these examples are real, well-thought out exercises for skill, taken from beginning to a very complete end. In no other book such a wealth of topics is addressed in an accessible manner.

A word about exercises in SICP. They are numerous, some of them are hard, but the exercises are the best way to really understand what the book tries to teach. In a manner, they’re as integral part of the book as the text itself. The exercises are very well prepared and lead the reader through the examples coded by the authors into greater understanding of the topics taught. At times, it feels like the exercises are specifically designed to force you to think about the essence of the topics, and not just grasp them superficially.

SICP commonly suffers from the criticism that it’s too hard for beginners. Maybe this criticism is rightful, and universities should give a simpler introductory course to programming before SICP. But this is an aspect of the educational systems, not pertaining to the book itself. I wouldn’t know, I never read SICP as a beginner. However it is being taught, SICP is an amazing book. It is by far the best programming book I have ever laid by hands on, and I seriously doubt that it will be surpassed any time soon. Reading SICP will enlighten you as a programmer, and make you a better one. I can’t imagine one programmer who won’t gain something important by reading SICP.

Related posts:

  1. SICP - conclusion
  2. Book review: “Countdown to Spanish” by Gail Stein
  3. Book review: “The Ruby way” by Hal Fulton
  4. SICP - a midway recap
  5. “TPJ’s Computer Science & Perl Programming” ed. Jon Orwant

10 Responses to “Book review: “Structure and Interpretation of Computer Programs” by Harold Abelson, Gerald Jay Sussman”

  1. TransliterationNo Gravatar Says:

    Hello Eli! Nice review I liked it.The book has now at average 3.5. I think too that it deserves more. I just started to read it and it a please to read. I’ll comment once again when I’m done with reading.

  2. moNo Gravatar Says:

    Hi. I will be starting my CS course in uni soon, however i have no backaround numerous message boards trying to get a good head start before my term begins in uni. Based on my case, would you recommend this book to a adsolute beginner?

  3. elibenNo Gravatar Says:

    mo,

    If you have absolutely no programming experience, this book can be a tad difficult for you.

  4. SameerNo Gravatar Says:

    mo,
    Start sicp after 1st year of university by which time you should be comfortable with basic programming constructs. For now, it will be good if you read “How to solve it?” by G.Polya. You’ll gain good understanding about problem solving which a programmer does all the time.

  5. DavidNo Gravatar Says:

    The book is very interesting, recommend to all

  6. vmware trainingNo Gravatar Says:

    Excellent review, ive never heard of it but i think i may have to pick up the book.

    after all its good to evolve ones own opinion.

    many thanks

  7. free domain registrationNo Gravatar Says:

    excellent book review. did you know that amazon.com has a new website that sells books? Its call windowshop.com check it out if you have time.

  8. dino delellisNo Gravatar Says:

    Nice review , thanks , your right there are a lot of programming books that can be a bit difficult to follow , Especially with those who are in the beginner to intermediate level.

    At least if they use universal or common terms it will be a lot easier for those who are new to SICP to begin their leaning with this.

  9. LioNo Gravatar Says:

    I´ve read that book, and I can really recommend it. It´s really easy to read and follow.

  10. Geeks of HogwartsNo Gravatar Says:

    i bought this after wanting to brush up on theory, algorithms, programming concepts and all the other computer science stuff but didn’t want to go back to school.

    this book really helps brush up on what you need to know and I would recommend that anyone taking comp science today get this book and work thru it in conjunction with your regular classes.

    those of you who didn’t go to comp sci should get this book too.
    You will learn a lot..but not exactly how to spell.

Leave a Reply

To post code with preserved formatting, enclose it in `backticks` (even multiple lines)


generic acomplia purchase cialis overnight delivery cheap acomplia online buy generic clomid buy cialis low price viagra without prescription where to buy cialis lowest price levitra where to buy propecia cheap cialis from canada lasix no prescription viagra without rx cheap accutane tablets viagra online without prescription viagra no rx buying cialis online zithromax viagra in uk free cialis cialis us where to buy acomplia find cialis online buy viagra lowest price accutane prescription buy cheap accutane online cialis buy buy generic cialis online acomplia order propecia online lowest price synthroid synthroid without a prescription synthroid online buy propecia online cheap levitra online where to buy levitra cialis online review synthroid prices cialis generic cialis buy drug buy viagra on line viagra pharmacy cialis for order price of levitra zithromax online where to buy synthroid soma generic generic clomid propecia online stores viagra cheap drug cheap generic soma cialis cheap zithromax online cheap order accutane online purchase zithromax online purchase viagra online buy cheap clomid cheap generic propecia zithromax pharmacy online pharmacy cialis cheapest acomplia cost of cialis no prescription viagra free viagra purchase lasix online cialis from india viagra from india order discount cialis soma online stores find no rx cialis cialis no rx required find viagra without prescription approved cialis pharmacy lasix discount