The book is not "The Structure and Interpretation of Rails/Flask/Struts/Ysod CRUD Apps" for a reason.
Also, since you've pointed out that the book is called "The Structure and Interpretation of Computer Programs", wouldn't it make more sense for the exercises to be about computer science things instead of math and physics? I own The Art Of Computer Programming by Knuth and it has plenty of exercises in it that are both computer science related and make you think about hard problems.
The problem for the poster above is that if you read SICP outside MIT or especially outside college, you're not surrounded by a bunch of science nerds who can be persuaded to explain general relativity in return for beer and a pizza. If you're not swimming in a sea of science, then problems involving the behavior of fish seem much trickier to solve. I've seen this problem iwth a few other MIT books, eg Horowitz and Hill.
For the most part I believe you're mostly complaining about chapter 1 though, maybe chapter 2 when they talk about painters and the exercise with the chessboard. Those are two that come to mind that tend to be excruciatingly long and unnecessarily difficult for beginners. I would advise you to go through the book again, and while this does come off as somewhat snooty, I would say that if you don't understand the math or physics behind some of the exercises, then you should spend time trying to figure out the algorithms for them. Most of the value of the book is actually through the exercises, as typically those are the spots where you'll eventually start to have those "aha!" moments when working with scheme.
As a disclaimer, I should point out that I had quite a bit of programming experience in C++, Python, and other OOP languages before trying SICP. Luckily, I never struggled with the math, and learning Scheme came quite naturally. However, the common problems associated with thinking in Lisp do apply, and it may take several cracks at the book before you really understand the beauty or essence of what SICP tries to teach.
My experience is that once I actually understood the section, the exercises were usually not that hard. However it was very easy to read a section and only think that I understood it.
"If it comes easy, then you're not doing it right."
The masters of every subject say stuff like this, and it's really just a type of myopia of the craftsman. I work in manufacturing and people tell you shit like this all the time.
Imagine a 19th Century Car Driver:
"People who think learning to drive should be relatively easy are missing the mastery required for match-rev shifts, air-fuel mixture, spark management - not to mention the intricacies of debugging your carburetor on the side of the road."
Programming will continue to be made more accessible, as is the apparent trend. Nearly no developers know what's really going on under the hood except people who specialize in assembly, CMOS, etc.
Of course it will become easier over time...just like everything. Consider John Carmack and what he did when writing Doom, Wolfenstein, etc...I can almost guarantee you when he was programming, programming was A LOT harder than what it is today. But the difference there is nothing more than time. Even if it's getting easier over time, my main point still stands.
Sure, a simple ray-caster isn't going to need a lot of optimization today. But when you are dealing with the sort of data that is now common. Optimization can be just as important.
While languages have have improved for the better, other things have created other challenges. Consider the PS3 Cell architecture. Considered to be a much more difficult architecture to program for than the processors of Doom's day.
I don't like that advice at all. Sure, not everything's easy, but the hard way is almost certainly not the right way. When I was learning to program (still am, as should all of us who are programmers), pointers came easy, arrays came easy, hash maps came easy. Almost every concept makes sense. I'm not some intellectual godsend either, so I know there are probably a countless amount of others who feel the same way.
I think that the most likely option is that the "teacher," or at least method of teaching, is bad.
Indeed: Hard exercises have an important purpose. They are about problem solving. But so do easy exercises. They force you to make sure you understand the basics of what you're doing, and suss out bad habits before they become ingrained.
http://shop.oreilly.com/product/0636920028857.do
I can't recommend this book enough. I'm sure some purists wouldn't put it in the same league as SICP, but I think you might like it.
The good professors also appear to be carrying that tradition into the revised course ... and the most public attention goes to the switch from scheme to python.
In some ways mathematical knowledge is even easier to obtain since the same logic underpins it as the lambda calculus upon which scheme is built.
That's not to say that some of the exercises don't rate 28 on the Knuth scale. But I don't think there are any 34's or higher...and it goes without saying that the Donald definitely throws in whatever math might be needed regardless of the reader's experience. And yet this doesn't make TAOCP inaccessible.
But if you cannot relate an exercise to the subject matter you just studied, it might also be the case that you think you understand what you just read, but don't really do. It's easy to read math superficially, honestly believing that one has understood the point, when in fact the "mental image" the authors wished to impart on you has not been grasped.
So you should not ignore the exercises, but work hard at them. They (well, some of them) are supposed to be hard. They are supposed to make you think, not just rehash what you just read. And after all that hard work, hopefully, something will click and you will be ready for the next section.
And then you will feel awesome.
http://www.amazon.com/Engineer---Training-Reference-Michael-...
That said, the book is definitely written for those who have an undeniable aesthetic sense for beautiful problems.
> Now that you've learned how to sum an arbitrary list of numbers together, use this knowledge to prove Einstein's general field of relativity.
How about instead of proving physics theories, we use our new knowledge to add together apples and oranges? That is easier for me to comprehend.
I'm not saying this to troll. I know this book is supposed to be great and I plan to read it again. But I'd like to hear why my complaint didn't bother the people here that did finish and love this book. Should I just ignore the exercises?
---
Edit: I want to clarify something. It wasn't that the exercises were too hard to answer. My complaint is that I couldn't even comprehend what some were asking me to do. To me, it was like the exercises were written in French, a language I don't speak. If I could understand what the exercises were asking for, then I could have realized I'm missing something and re-read the section. But as they were written, it made me feel like I should temporarily put the book down and re-take physics and calculus.
[1] http://www.youtube.com/watch?feature=player_detailpage&v=eSl...