4 ms·
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. I
by Jach 15y ago
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 other languages, but without tail call optimization it's going to be ugly. Then there's the whole "code as data" problem that's not easily extendable outside the s-exp world. I guess one might say the important, deeper parts of SICP work across languages, but is there an equivalent somewhere to SICP that's not in Lisp?)
- pavpanchekha 15y agoYour points. 1) MIT did not abandon SICP: it decided that it no longer wanted to teach core CS concepts. There was an interview with Abelson on HN a while back, look that up for more. SICP is not featured in the courses at all, unless you count 6.945, an advanced class with Sussman, that goes far beyond. 2) The fact that iteration is a special case of recursion is a fact that does not depend on a language. For its part, SICP distinguishes between the two specifically because most languages don't make this theoretical unity a practical one. 3) Code-as-data is not used much in SICP until the final chapters, where you implement a metacircular interpreter. It is impossible to implement a metacircular interpreter without making use of code-as-data, because that is its point. And in Python, a Scheme interpreter is just as approachable as in Scheme (a Python interpreter is not, simply due to how huge the Python langauge is). 4) There is not, AFAIK, and equivalent to SICP, because we already have SICP.
- scott_s 15y agoMIT did not abandon SICP: it decided that it no longer wanted to teach core CS concepts. Wait, what? Are you claiming that the MIT undergraduate CS program does not "teach core CS concepts"? Or are you only talking about a single introductory course?
- pavpanchekha 15y agoHaha, just 6.01, the world hasn't ended yet.
- hga 15y agoYeah, but how well is the rest of SICP transmitted in a course using Java (6.005, at least according to the original plan)? Based on what I've seen (at a distance nowadays), MIT decided fundamentally change what it means to get an EECS education and degree in a panic move when enrollment dropped by half after being steady for decades.
- neilk 15y agoYes, not even the authors of SICP defend it as a good introductory text any more. They have observed that their students don't graduate into a world where they program using the pure, low-level constructs taught in SICP. Instead they have to grapple with layers and layers of APIs written by other people, and messy real-world problems. These require different skills, and it's not bad to have to learn them in school. Still, SICP is one of the greatest computer science texts ever written, precisely because the learning curve is about as steep as it gets. Each chapter builds on the last, and by chapter three you're learning concepts that clarify some of the thorniest issues you will ever face in an average programming career. Even if you don't get to use a language like Scheme, it's sad if you don't know what SICP has to say about these problems.
- AgentConundrum 15y ago> 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/ http://eli.thegreenplace.net/category/programming/lisp/sicp/ [2] - http://eli.thegreenplace.net/2008/04/18/sicp-conclusion/ http://eli.thegreenplace.net/2008/04/18/sicp-conclusion/
- llimllib 15y agoI got up to exercise 1.18 in Haskell, and didn't have any problems with it. I knew very little haskell when I did it; I know less now. Doing the exercises in both Scheme and Haskell was a fun exercise; I should go back to it at some point. https://github.com/llimllib/personal_code/blob/master/haskell/sicp/chap1.hs https://github.com/llimllib/personal_code/blob/master/haskel... edit: the excercise the author is talking about is 1.11; my answer starts on line 51. The haskell is pretty!
- eliben 15y agoWhen I started the project, I preferred CL over Scheme. Later, however, I had some experience with PLT Scheme and really liked the programming environment, so I decided to give it a try. I figured that using both languages will help me understand the differences between them better. It was not some serious limitation of CL, in any case.
- AgentConundrum 15y ago