Live data from Hacker News

SICP is Under Attack

vedantk.tumblr.com

151–160 of 207 posts

Re: SICP is Under Attack

#151
post #78

Whoa, stop. There's a lot of issues in this article. First of all, Berkeley is NOT getting rid of SICP and SICP ideas. This is flat out untrue. I'm a recent instructor for the course, and I've spoken to several TA's about this course. Below is a rough summary of what we've discussed. This should not be construed as the "official line", but take from it what you will. First, Berkeley are not getting rid of SICP. ‎For…

Thank you. Many of the comments here make it sound like the sky is falling. It's nice to hear from someone involved in the decision.

Re: SICP is Under Attack

#152
post #106

Earlier quoted context omitted.

Hi! As a member of the Python community, could you please pick a better textbook than Dive into Python? Think Python is a far better book, off the top of my head, but nearly anything's better than DiP for people not acquainted with the language. ( http://greenteapress.com/thinkpython/ )

Here's a Google Wave containing list of problems found in DiP: https://wave.google.com/wave/waveref/googlewave.com/w+8KfvUG...

Some of those are problems, but many of them are "I would present this material differently."

Re: SICP is Under Attack

#153
This isn't a question of whether we should teach SICP, it's a question of whether it's an appropriate introduction.

I love SICP, I think it's one of the most brilliant didactic texts ever written, but I think it's a terrible starting point for most students.

To me it appears that SICP is used as a trial by ordeal, intended in large part to scare off 'unsuitable' candidates. SICP is all about the beauty and interest of computation for it's own sake, but it doesn't really engage with solving the kinds of problems most software is written for. I think we're inadvertently dissuading people who would make great programmers, but who see computer science as a means rather than an end and need to relate algorithms and data structures to practical problems.

There is clearly value in CS for its own sake and academics are obviously inclined towards this, but I think dismissing the practical application of CS is unhelpful. If we segregate programmers into 'Computer Scientists' and 'Software Engineers', we lose the most precious part - the bit in between, where radical ideas meet great engineering.

I want to see more diversity in computing and I think SICP as an introductory course is a serious hindrance to that aim. We don't teach children to read and write by starting with linguistic theory. I think we should teach software the same way - start with Dick and Jane and work our way up to lambda calculus.

Re: SICP is Under Attack

#154

> Beautiful. I guess beauty is in the eye of the beholder. A simpler way to analyze this problem is noticing the f(n-3) term implies your function has to memorize up to 3 previous results. Then just use the coefficients from the formula to cycle the next result into memory. Using algebra and generating new coefficients as per the OP's solution is unnecessary. function f(n) if n

Nice! Also your solution makes it easy to move on to a logarithmic time solution: going from (a,b,c) to (b,c,3a+2b+c) is a linear transformation which can be expressed as a 3x3 matrix, therefore iterating it n times is equivalent to raising that matrix to the nth power, which can be done in log(n) time using square and multiply [1]. Disregard programming, study math! In fact the exact same reasoning can be used to de…

And conveniently enough for this discussion, this happens to be exercise 1.19 of SICP (http://mitpress.mit.edu/sicp/full-text/book/book-Z-H-11.html...).

Re: SICP is Under Attack

#155
I can think of at least three conflicting approaches to teach programming:

- Start with a low-level language like C (or MMIX...), possibly on embedded devices, so that students know what is going on at the hardware level and don't think that primitives in high-level languages are free.

- Start with a functional language like Lisp, so that students know the theory and the elegance of functional programming.

- Start with an easy and practical language like Python, so that students get to write (crappy) code as soon as possible, tweak it until it works, and finally see their program work and do something impressive (to them).

SICP is an excellent book, and a very good choice for the second approach, but it is not the only sensible way to discover programming.

Re: SICP is Under Attack

#156
post #113

Earlier quoted context omitted.

When 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.

Thanks for clarifying, Eli. As I said in my update, I was apparently badly misremembering a comment on your blog regarding the use of CL. You've actually inspired me to take up a similar SICP reading/blogging project, though I'm hesitant for two reasons. First is the concern over the depth of the material. I don't have a CS degree and I'm mathematically out of shape (and I never even did a calculus class), so I'm con…

IANAL. Plagiarism is only relevant in a classroom environment where you aren't doing work in the expected way. Copyright infringement is different. In the case of SICP, the entire book is available online for free, as far as I know the book doesn't contain answers to all of the exercises (so most work you do there is your own), and many of the code snippets are small enough that I don't think they would withstand a copyright claim in court. (It'd be like trying to copyright "for (int i = 0; i Of course, looking at the actual page is better for solid legal ground http://mitpress.mit.edu/sicp/ . It's licensed under http://creativecommons.org/licenses/by-nc/3.0/ so again you're fine to redistribute and modify if it's non-commercial.

re: Calculus, you could always watch a few videos at Khan Academy. ;) I don't remember needing all that much calculus, but if you don't have a concept of derivatives or integrals then some of the earlier examples of higher order functions will go over your head. You could watch some online lectures here: http://academicearth.org/courses/the-structure-and-interpret... which don't ramp up the difficulty as steeply.

Re: SICP is Under Attack

#157
post #78

Whoa, stop. There's a lot of issues in this article. First of all, Berkeley is NOT getting rid of SICP and SICP ideas. This is flat out untrue. I'm a recent instructor for the course, and I've spoken to several TA's about this course. Below is a rough summary of what we've discussed. This should not be construed as the "official line", but take from it what you will. First, Berkeley are not getting rid of SICP. ‎For…

"but Python supports proper closures" Is this a recent development? Without proper lexical scoping, don't you have to do weird stuff like creating an array if you want to update a value inside a "closure"?

One might argue you shouldn't mix functional programming with side effects. ;P

But it's not so much the case of scoping as the case of variable binding. Assignments/statements in Python don't work like they do in some other languages. So your inner function can reference the outer "x" all it wants, but you'll get problems if you try to do something like x += 1.

Re: SICP is Under Attack

#158
post #74

There is a rather breathless presumption that underlies many of the comments to this article, and it is this: that the only way to learn anything thoroughly is to learn it from the inside out: to start from first principles and gradually pile up complexity and abstraction. There is something very compelling about this approach, probably because it purports to model the mind after nature. Just like complex phenomena i…

We learn mathematics from the most basic principles and upwards. I don't think there is a way that you could start with higher level concepts and figure out the theory later. It would be incredibly confusing. Programming is quite different of course. It's not terribly difficult to write a simple program to keep a database of your puzzle collection or build a website to share your puppy photos. One could start from su…

"We learn mathematics from the most basic principles and upwards."

Interesting point, although I'm not sure it's 100% true.

For instance, we learn mathematical skills that are readily applicable to life at an early age. Solving a word problem might be the mathematical equivalent of writing a working program that actually does something. And we memorize "formulas", like the simple one to multiply large numbers, at an early age, but don't learn why it works for quite a while.

Induction and abstract algebras might be considered more fundamental, but are introduced much later.

Re: SICP is Under Attack

#159
post #138

Earlier quoted context omitted.

A topic earlier showed that 26 of the ACM Turing Award winners had degrees in mathematics The field of computer science didn't exist when they went to college. They invented it, hence the awards.

This is really the root of the problem. Computer science/programming is immature as a profession. There are not clear, broadly accepted rules for what roles exist and what requirements there are for one to fill the role. Looking at building houses (just the construction side, not the mechanical systems), we have: - Architect - Structural Engineer - Architectural Technologist - Carpenter plus construction employees no…

It's nothing to do with quality of work or education. The professional engineers have Canadian government stitched up - in almost all local and federal govt jobs only a PEng can supervise staff.

You can work for the Canadian space agency and have as many physics PhDs as you like - but you will have to be unionised employee and managed by an engineer. There is a even a campaign to remove the current exemption that university profs have, which allows them to supervise PhD students.

If a CS course doesn't qualify for PEng then nobody is going to take it.

Re: SICP is Under Attack

#160

Earlier quoted context omitted.

Nice! Also your solution makes it easy to move on to a logarithmic time solution: going from (a,b,c) to (b,c,3a+2b+c) is a linear transformation which can be expressed as a 3x3 matrix, therefore iterating it n times is equivalent to raising that matrix to the nth power, which can be done in log(n) time using square and multiply [1]. Disregard programming, study math! In fact the exact same reasoning can be used to de…

And conveniently enough for this discussion, this happens to be exercise 1.19 of SICP ( http://mitpress.mit.edu/sicp/full-text/book/book-Z-H-11.html... ).

Awesome! But actually I think my comment was inadvertently a bit more illuminating than the SICP exercise :-) Despite being on the web, SICP is a "traditional" textbook and doesn't bother to link to Wikipedia. Instead they use some sort of stone-age technology called "footnotes", stuffing all supplementary material right into the book as a couple lines of tiny text. So the student gets the feeling of following a twisty cluttered rabbit hole instead of exploring a new land.
Post reply on HN