I have read a lot of reviews here which lament the use of Scheme for teaching the fundamental concepts in this book. People have stated that while the book pretends to be language-independent it relies solely on Scheme, which invalidates the point. I disagree strongly! I think part of the problem is that it takes a bit of time to really "grok" Scheme. If you've never been exposed to it before (as I haven't), Scheme may seem strange and unnecessarily arcane to you at first. However, after doing it for a bit you will realize (as I have) that Scheme is amazingly flexible, succinct, powerful and unbelievably elegant. It incorporates all the features that other languages such as C++ take for granted and skip over, and exposes the real machinery behind them, without introducing a whole host of obscure syntactical details. This clarity and elegance of Scheme has helped me understand all other languages I have to deal with so much better! Thus, in presenting the topics of this book in Scheme, the authors are actually succeding in making their discussions language-independent! Truly, the difference here lies in what your goals are: if you want to program in some specific language and just memorize it, this is not a book for you. However, if you actually want to understand how that language works, this will be akin to an epiphany for you. A very good book!