This is the textbook used for the introductory CS course (CS61A) at Berkeley. The course material is available at <a href="http://cs61a.org" rel="nofollow">http://cs61a.org</a> (The course uses Python 3, Scheme, and SQL). There are some neat projects (students are working on building a Scheme interpreter now)<p>Previous Hacker News Discussions:<p><a href="https://news.ycombinator.com/item?id=3491142" rel="nofollow">https://news.ycombinator.com/item?id=3491142</a><p><a href="https://news.ycombinator.com/item?id=3141996" rel="nofollow">https://news.ycombinator.com/item?id=3141996</a><p>Full disclosure: I'm a TA for the course right now.
Overall, SICP in Python 3 is first rate. I highly recommend it to anyone wanted to improve their sophistication with Python and programming in general.<p>The exercises and demonstrations in each section quickly build from an elementary introduction up to powerful examples accompanied by clear explanations. I especially like the explanatory diagrams.<p>Thank you to the authors for your craftsmanship and for making it available on-line.
Guys I just have to give the obligatory shout out to Prof Hilfinger. The guy is legendary. My life has been made worthwhile to have been initiated into the deep mystic art of CS by him.
Berkeley CS bends to common usage, instead of holding to its own pride? Scheme is such a simple but deep language, and is really good at introducing all the concepts. It is aged, like a good single malt whisky. Now they try to serve fruit punch?
I'm currently self studying SICP (<a href="https://mitpress.mit.edu/sicp/" rel="nofollow">https://mitpress.mit.edu/sicp/</a>) and glad this is illustrated in Python.
I was kind of hoping to see python used in the functional programming section. I was playing around with a small project in python and decided I wanted to re-implement a really simple context free grammar I had done in a functional programming class. It was slightly annoying, Lisp seemed like a better choice than python. But it looks like they use scheme.
Those who have mastered principles doesn't have to memorize particulars.<p>Nevertheless I still maintain that the classic CS61a by Prof. Brian Harvey is a gold standard. It teaches the most important big ideas, such that <i>code is data</i> and hence the whole OO paradigm is mere a DSL over structured data with named slots, with a protocol to follow (inheritance).<p>It teaches the superiority of declarative over imperative approach - one defines <i>what</i> shall be done, not how it can be done.<p>It also teaches lazy evaluation, so one doesn't parrot nonsense about monads and Haskell.<p>It teaches what genetics are, and that everything could be defined as an ADT with corresponding predicates (which represents mental categories we learn from environment).