I haven't read it yet but fully intend to over the next month or so as it seems very comprehensive and appears to have what I crave as a beginner programmer myself. Which is terms, definitions, concepts and examples that seem to provide a more holistic picture of modern programming and it's uses/potential to a new-comer than other 'teach-yourself-such-and-such' style books or reference books about a single or individual languages.
Introduced to me by 'ska' (still don't know who you really are) who also left the message below on my HomePage.
"It isn't as 'mainstream' as many books you may have seen, but it is aimed much better at your situation, I think. Also, this text is vastly superior to most introductory programming texts. In your shoes, I would seriously consider learning what programming is about before worrying too much about particular tools. HtDP won't teach you a popular language - but it will set you solidly on the road to being a real programmer. Picking one (or several) currently popular languages later at need will be easy if you have some depth of understanding. That being said, tools like DrScheme probably do everything you are likely to need in the foreseeable future, so you can choose to stick with it if you want, also. -- ska"
The blurb from the book is as follows:
How to Design Programs An Introduction to Programming and Computing Matthias Felleisen, Robert Bruce Findler, Matthew Flatt and Shriram Krishnamurthi
This book is, in many ways, a SiCp-lite. It covers similar ground as StructureAndInterpretationOfComputerPrograms (and both books use SchemeLanguage as the teaching mechanism), but the material in this book is quite a bit less daunting. Many of the examples in SiCp are drawn from other courses that your average MIT engineering student would study (lots of examples in SiCp have to deal with things like circuit simulations, problems that many non-EE's will have trouble understanding); HTDP deals with simpler problem domains.
On the other hand, SiCp (though being a shorter book) is a bit more comprehensive in the number of topics it covers. Quite a few interesting topics that SiCp covers in great depth (how to write interpreters, how to model unbounded-precision arithmetic, etc.) this book ignores or glosses over. For many programmers that won't matter much, but it's material that makes SiCp shine.
This is a big, thick book, but quite a bit of the text is examples and problems. If you skip over that, this book can be read through in a CuplaDays.
One good thing about this book is that it's rather evangelism-free with regards to its language choice.