Live data from Hacker News

SICP is Under Attack

vedantk.tumblr.com

21–30 of 207 posts

Re: SICP is Under Attack

#21
I think that starting with Python is a fine choice. Please keep in mind that it's just the introductory course-- these students are going to be battered with CS theory later on.

We are graduating around 20% fewer students in CS than we were in 2004. We need to find a way to make CS more accessible. I'm not saying that we should make the whole degree easier, but I think that having an easier & more practical first course would be good. The students might not learn as much theory, but they'll get the adrenaline rush of being able to code quickly and do some real damage with their code.

## EDIT: It was a 36% drop from 2004 to 2008. Here is my source: http://marketing.dice.com/pdf/Dice_TechTalentCrunch.pdf

Re: SICP is Under Attack

#22
post #4

Even MIT abandoned SICP for its introductory course in favor of Python. But I believe it's featured in its second course, no? I don't consider that a mistake. If you're getting rid of it from the curriculum altogether, though, that's a mistake. This article didn't say if that was the case or not. (Also the point of SICP being language agnostic is fairly false. I mean sure you can implement iteration as recursion in o…

> Also the point of SICP being language agnostic is fairly false.

I remember reading a bit of Eli Bendersky's SICP blog posts[1], where he started with the premise that he was going to work through SICP using Common Lisp rather than Scheme. I think that lasted through about half of the first chapter before he moved back to Scheme because he found it too hard to handle the differences between the two - I don't remember what specifically Common Lisp was lacking, but I remember he made it seem like a huge stumbling block.

[Disclaimer: This comment is based on a half-remembered perusal of only a couple of blog posts well over a year ago. Contents may not adequately reflect reality.]

Edit: I may have been badly misremembering. From Eli's "Conclusion" post[2]:

> Also, I originally planned to reimplement all the code do all the exercises in Common Lisp. Later I changed my mind and decided to use PLT Scheme for some of them. Eventually, I’ve been using both languages interchangeably, which is a good thing, as I got some practice with both.

[1] - http://eli.thegreenplace.net/category/programming/lisp/sicp/

[2] - http://eli.thegreenplace.net/2008/04/18/sicp-conclusion/

Re: SICP is Under Attack

#23
post #16
post #9

Earlier quoted context omitted.

That is not possible or desirable. Scheme-specific constructions are woven throughout the text -- tail calls, closures, and more. And the main value of SICP, at least for its fans, is the pedagogic value of the language. It starts off with pure functional programming and then introduces assignment much later, and discusses its tradeoffs.

How are tail calls and closures in any way Scheme-specific? The "main value" cited also assumes "pure functional programming" is worthwhile. That is not an uncontroversial opinion, and does little to make the case for SICP to people not already convinced.

Well, the question was about Python, which definitely doesn't have those things. If you want to me to justify Scheme, how about code-as-data, which is the entirety of chapter 4?

> That is not an uncontroversial opinion, and does little to make the case for SICP to people not already convinced.

That was not an unconsidered viewpoint, if you read what I wrote. I said "for its fans". I am not attempting to make the case for SICP; that book doesn't need my help.

Re: SICP is Under Attack

#24
I love SICP as much as the next person. I've spent vacations devouring it while despairing girlfriends try to get my attention. Seriously, it is awesome.

But, being realistic, an incredible amount of value is currently being created by software engineering. Value to society, and (hence) value to those who can practice the craft. I'm not surprised that so many schools are teaching software engineering, instead of computer science.

Re: SICP is Under Attack

#25
post #8

So did anyone else look at the challenge problem, see f(n-3), f(n-2), and f(n-1), then immediately think "oh. A three element array would solve that"? Took me less than 60 seconds... I'm a little worried that I'm so good at imperative programming, though, since it might indicate that I'm "crippled" when it comes to functional programming. I bet one of you could code circles around me when it comes to e.g. implementin…

> Anyone have advice about how I'd go about "diving into functional programming"?

http://groups.csail.mit.edu/mac/classes/6.001/abelson-sussma...

Re: SICP is Under Attack

#26
post #2

The obvious solution: rewrite SICP to use Python rather than Scheme. It is CC attribution and non-commercial, so I don't see any legal barrier to outsider revision.

SCIP winds up making sure that you understand what is going on by writing Scheme interpreter in Scheme. How would your translation handle that material?

Writing a Scheme interpreter in Python would force people to learn all of that Scheme anyways, and it wouldn't feel like such a revelation that you understand what the interpreter is actually doing.

Writing a Python interpreter in Python would force people to learn a lot more about parsing techniques. That would add a lot more material, and the code would be substantially more complex, thereby obscuring the pedagogical point.

Re: SICP is Under Attack

#27
post #23
post #16

Earlier quoted context omitted.

How are tail calls and closures in any way Scheme-specific? The "main value" cited also assumes "pure functional programming" is worthwhile. That is not an uncontroversial opinion, and does little to make the case for SICP to people not already convinced.

Well, the question was about Python, which definitely doesn't have those things. If you want to me to justify Scheme, how about code-as-data, which is the entirety of chapter 4? > That is not an uncontroversial opinion, and does little to make the case for SICP to people not already convinced. That was not an unconsidered viewpoint, if you read what I wrote. I said "for its fans". I am not attempting to make the case…

CPython doesn't have built-in tail call optimization, but that's not a fundamental property of the language, just a limit of that particular implementation. One that can even be hacked around in Python with a decorator. A decorator, by the way, is a Python feature that depends on closures, which are themselves quite commonly used in Python.

You have some very strange ideas about Python that appear to have little relation to reality.

Re: SICP is Under Attack

#28
post #6
post #3

So SICP is awesome. The article makes that assertion in the third paragraph, and then continues making that point for most of the rest of the article. It does not, however, make a good, convincing argument for why "Dive Into Python" is significantly worse, especially as an introductory text. > It’s just.. it’s just not the same. Never say this . Horrible people (like me?) will point to it as you admitting that your a…

"Stop. Take a deep breath. Think about all that you have just discovered (or if you have already discovered it all, reflect on how awesome it is). By page 45 of SICP, you will have; Translated recursive definitions into iterative processes Examined the differences in the space requirements of various processes Used tail-recursion to implement efficient iterative procedures Seen that iteration can be thought of as a s…

A single paragraph insulting a work does not a convincing argument make (perhaps the fact that it starts off very slow is good in introductory textbooks?). Nor does an assertion of how Scheme is "considerably less complicated and idiosyncratic than Python" convince me that all Python textbooks must, by necessity, be worse than Scheme textbooks.

I'm entirely willing to admit that SICP is better than Dive Into Python (well, I would be if I had a copy of it around so that I could verify this). I'm just saying that the article does little to convince me of that (and quoting parts of it at me does even less to convince me - if you think that I didn't read it thoroughly enough, just come out and say so).

Re: SICP is Under Attack

#29
The new 61a will still try to (roughly) follow the old 61a/SICP curriculum. Dive into Python will (I think) probably just be used in the beginning to introduce the language.

http://www.eecs.berkeley.edu/~bh/61a.html Specifically where it says "in 2011-12, 61A will be taught ... using lecture notes based on SICP".

Re: SICP is Under Attack

#30
SICP is a great book. Its abandonment is a sad reflexion of the gradual descent of programming teaching from principled discipline into an introduction to the process of trial and error. While most developers probably spend the majority of their time experimentally cobbling together applications from blackbox components, this they can and probably must learn on the job. What SICP tries to teach they cannot -- the most fundamental idea in programming: The evaluator, which determines the meaning of expressions in a programming language, is just another program.

We are starting to embrace again more featureful languages and regrettably accepting that the majority of programmers will use multiple languages regularly. Therefore SICP seems more appropriate than ever!

Post reply on HN