Gah, stuff like this just tends to make me upset. SICP is probably still, bar none, the best text I have ever read. In any subject. Now, I'm biased towards computing and I'm sure that there are amazing texts in every field, but I would put this up against any book you can find.<p>The book touches so many fields in computing and does it in a profound, deep, yet entertaining way. Part of its ability to do so is its use of scheme, a language that doesn't give you a whole lot in conventional terms, but which also puts very few restrictions on your ability to build those things up, so you can get an understanding of them as you create them. Polymorphic method dispatch can seem magical if it has always "just worked" for you in Java, but when the text discusses a system for implementing this (several systems in fact) suddenly it all clicks, and the magic you use every day is a little bit more comprehensible.<p>And so I feel like attempts to teach SICP but in whatever the more practical language of the day is are misguided, and ultimately a little bit of a cop-out. Before you read the next few sentences let me preface them by saying that I have respect for everyone involved with these decisions even if I don't agree with them, and I don't want to come off as supposing malicious motives on their part.<p>But the overwhelming feeling I get from reading about these initiatives is that people have looked at SICP and said "Wow that is really a great book, shame about how it uses this fringe language. I know, I'll use language-x which is much more practical, and if there are areas in the text that language-x can't really handle, I'll limit the size of the recursion, or not use higher-order functions as much, etc, etc". And that misses the point. If you want to use language-x then you should probably step back and write a text using language-x that is just as amazing as SICP, and that really utilizes the strength of language-x in the same way SICP utilizes the strengths of scheme. But of course that is really, really hard work and so no one does it. Instead we get initiatives like this that dispense with the magic of using scheme and tail-recursion and lambda, and shoe-horn it into lisp, while also constraining Python to a weird lispy style doing basic things like defining your own functional binary search on a list, which is entirely against the whole reason you use python which is BATTERIES INCLUDED.<p>And thus you end up with a lazy compromise that doesn't really do justice to either the tremendous original material, or the strengths of a current language. I really think that before you decide to use SICP but with a "modern" language you should ask yourself why you are using SICP and not the amazing course material you have put together yourself to really leverage the strengths of language-x in a way that also teaches computer science. And if your answer is "Because that would be a lot of hard work, and I can just have students do list recursion in python, on small lists, and without doing too much higher-order stuff" then I submit you should abandon your plan and head back to the drawing board, with better goals, and higher standards.