SICP sits on my shelf next to my copy of The Art of Computer Programming, both books I read from the library long before getting my own copies.
The first time I read SICP, I was a somewhat experienced programmer, both self-taught, and with some high school and college work behind me. I was interested in it because it was the classic text book for MIT’s 6.001 intro to computer science class, it was in Scheme, and I had wanted to go to MIT as a CS major since I was in high school. Since MIT said no, I’d study it on my own.
The book reads well; it’s somewhat dense, and is full of exercises, but it explains its material thoroughly. It is a thick book, and it only has 5 chapters. Those chapters cover everything from very basic introduction to computer programming to how compilers work. It easily covers more material than a traditional 1st semester computer programming text. I could easily see this book covering a year or more of undergraduate study.
It wasn’t until I got to chapter 3 did I realize how extraordinary the course was. The course had already covered recursion and iteration, higher-order functions, building and manipulating complex data structures, symbolic data (with examples of symbolic differentiation and symbolic logic). Chapter 3 introduced a new concept: state, and changing the value of variables. Nothing up to that point had utilized mutable state at all; everything had been done in a purely strict functional form without ever stating that fact explicitly.
I had not noticed; I had not missed it; I had not thought to solve any of the problems, any of the examples, using variable reassignment. When I realized this, in hindsight, my mind was blown.
The book is very good. I highly recommend it. Fortunately, it is available, legally, for free, online.
Name:
Anonymous2019-06-19 7:51
>>5 Off-topic, TC is asking as a beginner programmer.