Live data from Hacker News

SICP is Under Attack

vedantk.tumblr.com

41–50 of 207 posts

Re: SICP is Under Attack

#41
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.

Scheme works great in SICP because it doesn't get in the way. After the first few pages, it doesn't feel like you're reading a programming language so much as reading the direct expression of concepts discussed in the text. The programming language learning hurdle is almost nonexistent.

That fact reduces cognitive load on the reader, freeing up mental resources that can be applied to the concepts presented.

Re: SICP is Under Attack

#42

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 co…

But engineers of the physical world variety learn the fundamentals of physics while learning the pragmatics of building codes, loads, and laws. Shouldn't software engineering aspire to the same level of preparedness?

Re: SICP is Under Attack

#43

This is one of a very very small number of programming-related articles I've ever been glad to read. Programming should be taught as an approach to problem-solving and structured logical thinking, not as an approach to a particular language. If you can understand the core concepts of programming, the individual languages begin to matter a lot less. Python is great. Java is great. C++ is great. But they are just tools…

It's not "what the school wants to teach" but more "what the student needs to know at the end of the semester". I love SICP -- for me it was a revelation which opened a new world, and is still my favorite book -- but not everyone is like that. 90% of my colleague in my university would hate that book.. (As they hated the dragon book and anything less practical). So, as they say, "Hate the game, not the gamers". What a school teaches is a reflexion of what is needed in the society and sadly what the students want.

I do hope however that great professors will still strongly suggest the book to students who want to go one step deeper.

p.s. A new version of SICP could include a couple of pages on python; i.e. make a list comprehension, yielding, etc. :)

Re: SICP is Under Attack

#44

I basically agree with the OP that Dive into python is a pale replacement, but at the same time there is something to SICP's critics. Peter Norvig seemed to think most people would get the most out of it after getting some experience, and the HtDP authors definitely have a point about how much heavy math is involved. It's still a wonderful book, and won't be lost, I'm sure. http://www.amazon.com/review/R403HR4VL71K8…

> ...and the HtDP authors definitely have a point about how much heavy math is involved. I get why people object to heavy math in programming -- it makes the entire field less accessible -- but programming is heavily based on mathematics, if not entirely a subset of mathematics. Saying, "it requires too much math to learn this" strikes me as a lot like saying "there's too much biology in learning to be a doctor".

I completely agree, but at the same time, it's a barrier to entry that I think might be unnecessary. Some college freshman haven't taken calculus, and SICP would seem a bit daunting at times to those students, I imagine. Unfortunately, I think HtDP goes too far; it's too dumbed down.

Re: SICP is Under Attack

#45
post #28
post #6

Earlier quoted context omitted.

"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 (…

> ...if you think that I didn't read it thoroughly enough, just come out and say so...

OK. I don't think you read it thoroughly enough. I wouldn't usually just come out and tell someone that, because it's likely to start a fight, and that won't help anybody. But, since you asked...

The post repeatedly makes the point that SICP primarily presents a language-agnostic approach to understanding how to solve problems in programming. The author even explains that they aren't objecting so much to Python specifically as they are to the fact that there isn't an SICP-type book which happens to include Python for its code examples. The author does make the claim that Python requires more focus on syntax than Scheme does, and exemplifies this with the "and-or trick", but that's not really central to their argument.

Their main argument is that programming should be taught as an approach to problem-solving, not as an introduction to a language, and that by removing SICP from the curricula, future programmers will lose some valuable skills.

And I happen to agree with that.

Re: SICP is Under Attack

#46

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 co…

If that's what a school wants to do, then it should just discontinue CS and rename it software engineering. Actually, my old school had such a major...

It's not an either/or. Software Engineering is a part of Computer Science.

Re: SICP is Under Attack

#47

Earlier quoted context omitted.

> ...and the HtDP authors definitely have a point about how much heavy math is involved. I get why people object to heavy math in programming -- it makes the entire field less accessible -- but programming is heavily based on mathematics, if not entirely a subset of mathematics. Saying, "it requires too much math to learn this" strikes me as a lot like saying "there's too much biology in learning to be a doctor".

I completely agree, but at the same time, it's a barrier to entry that I think might be unnecessary. Some college freshman haven't taken calculus, and SICP would seem a bit daunting at times to those students, I imagine. Unfortunately, I think HtDP goes too far; it's too dumbed down.

> Some college freshman haven't taken calculus...

Yeah, and that's a serious problem, too -- and one that I'm guilty of! ...that is, if I'd ever gone to college. :-(

I am very much not encouraged by a "race to the bottom" when it comes to education. If calculus is too difficult for the student, then perhaps the student should not consider a career in programming. I say that without any malice whatsoever; I'm not sympathetic enough to be a counselor, and I wouldn't expect counseling courses to simply disregard the importance of counseling so that I could have a job in the field.

To bring all this back to a more practical argument: I am annoyed daily by the great and heaping piles of inefficiencies and bloats and bugs and weaknesses of software. I have to, on a regular basis, explain to clients that they should throw out their old computer and get a new one, so that they can continue to do what is, to them, exactly the same thing they were doing with their old one. That can be a rather challenging thing to explain to some people.

I find it difficult to believe that this ongoing pattern of abuse of resources is not at least partly related to a greater and greater ignorance of the fundamentals of programming.

Re: SICP is Under Attack

#48
SICP is going nowhere at Berkeley. Take a gander at http://www.cs.berkeley.edu/~bh/61a.html (Brian Harvey at Cal is synonymous with 61A) and note:

"Starting with the latter, in 2011-12, 61A will be taught by John DeNero (fall) and Paul Hilfinger (spring) using lecture notes based on SICP (since its text is now available on the web with a Creative Commons license that permits such use) but with the program examples recoded in Python. This is, on its face, a strange idea; Scheme and SICP build on each other's strengths and programming in Python as if it were Scheme will surely result in some of the examples looking unlike the way a native Python speaker would code them. But the long-term plan is that over time, the 61A curriculum will gradually change to include "more modern" ideas, leaving out some of the SICP ones to make room; because of its huge collection of application libraries, the new ideas will be more easily expressed in Python than in Scheme. Also, there is currently a vibrant open-source project community using Python, and 61A students can be introduced into that community."

Re: SICP is Under Attack

#49
post #40

The merits of SICP have been debated many times. More interesting is the choice of "Dive Into Python." Is that really the best Python book for Berkeley CS?

That was my thought -- it was certainly one of the earliest books, which may explain why it was chosen, but I'm not sure if it's currently the best.

Re: SICP is Under Attack

#50
post #43

This is one of a very very small number of programming-related articles I've ever been glad to read. Programming should be taught as an approach to problem-solving and structured logical thinking, not as an approach to a particular language. If you can understand the core concepts of programming, the individual languages begin to matter a lot less. Python is great. Java is great. C++ is great. But they are just tools…

It's not "what the school wants to teach" but more "what the student needs to know at the end of the semester". I love SICP -- for me it was a revelation which opened a new world, and is still my favorite book -- but not everyone is like that. 90% of my colleague in my university would hate that book.. (As they hated the dragon book and anything less practical). So, as they say, "Hate the game, not the gamers". What…

There is a compelling argument that, in the age of nearly limitless computing resources, it doesn't matter anyway. You will in all likelihood be a glue programmer: you'll rely on APIs and libraries, most of which have been written by someone else, and you will simply string them together by applying the functions that most obviously address whatever problem you're trying to solve. Who cares, really, if you're using Quicksort or heap sort, you're just going to call sort() on your array (or map, or key-value store, or whatever), and define a callback function that will evaluate any two given values in the array to be sorted, and that's it. Who cares if one requires a little more memory than the other, or a little more time to execute?

I'd argue that such a programmer does not need a degree in computer science to do this work. How do I know? Because I don't have a degree in CS, and that's mostly what I do. And if I can sit down and learn, say, C# for a job, certainly someone that has come out of a good CS program can, too. A CS degree shouldn't be about learning a single language (or three).

Post reply on HN