Live data from Hacker News

SICP is Under Attack

vedantk.tumblr.com

71–80 of 207 posts

Re: SICP is Under Attack

#71

Earlier quoted context omitted.

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

Let's be realistic here: there are plenty of mathematical wizards who can't code themselves out of a paper bag, and there are plenty of computer scientists who can create brilliant, elegant, and perfectly optimized algorithms but couldn't create a complete, functioning, useful piece of software to save their lives.

There is some programmatic thinking in mathematics and there is some mathematical thinking in programming, but they are very distinct disciplines and skills.

It's easy for academically-oriented people to say "oh Python is just glue, web development is just calling apis, etc. etc." But this so-called 'gluing together' of libraries and apis actually presents seriously tricky algorithmic challenges all the time, just at a higher level. The reality is that seasoned CS phds often aren't any better at solving these problems effectively than a smart and creative 19 year old with a few years of python behind him/her. I don't say this to diminish the type of thinking SICP teaches--on the contrary, I think it's extremely important and cuts to the core of good programming. BUT I do think it's a mistake to assume that you can always better train yourself for this type of thinking by doing problem sets and theorizing versus ramming your head against messy real world problems with whatever Turing-complete language is at hand.

Re: SICP is Under Attack

#72
The books that are beloved by practitioners in a field are not always the best choice in terms of pedagogy. Clearly, these professors think that another book choice will help their students really grok the material. If they're successful, great. If they're not, they'll probably recognize it and supplement with other material or switch to another text. It's certainly possible to be a competent programmer without ever having read SICP in the same way that it's possible to learn linear algebra and calculus without ever having read Strang. My CS program didn't use SICP and I don't feel like I really missed anything of critical importance. There are other very competent authors writing other very good textbooks, after all. I was still exposed to Assembly, Fortran, Pascal, C, C++, Java, Scheme, Lisp, and Prolog in my program and learned core concepts of computer science such as asymptotic complexity, recurrence relations, Boolean logic, countability, Turing machines, finite automata, parsers, interpreters, threads, data structures, grammars, Backus-Naur form, etc.

Re: SICP is Under Attack

#73
>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

Re: SICP is Under Attack

#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 in nature is built up of smaller, fundamental particles, so too understanding will be built up from atomic units. But stop and think for a moment: how many things in life are really learned that way? Isn't it more often the case that you hack around and only later come to understand what it was that you were doing? I think the fact that it is so intuitively compelling disguises the fact that this conception of learning is really quite bizarre and implausible.

Re: SICP is Under Attack

#75
post #12

Practical programming should not be the point of early computer science curricula.

Why on earth not? What's so bad about starting at a high level of abstraction and then progressively peeling the abstraction away to get to the core concepts?

Re: SICP is Under Attack

#76
post #50

Earlier quoted context omitted.

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

I agree that a programmer doesn't need a degree in CS, but to have a CS degree doesn't mean you're a programmer. A topic earlier showed that 26 of the ACM Turing Award winners had degrees in mathematics, and a lot of the theoretical CS is math anyways. If a student in college wants to acquire a CS degree, they should be exposed to fundamental ideas in CS, not just what they'll need to be a professional programmer.

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.

Re: SICP is Under Attack

#77
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 remembe…

I 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/haskel...

edit: the excercise the author is talking about is 1.11; my answer starts on line 51. The haskell is pretty!

Re: SICP is Under Attack

#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 those who aren't aware, they (the future TA's/instructors) are making lecture notes based on SICP but using Python 3).

From a TA: At the end of the day most of the reason for moving to Python (beyond the weak argument that it's a bigger community), is that there was a meeting where they realized that nobody wanted to teach the course in Scheme after Brian retires. I'm not burning him at the stake, I read his argument and I've considered it. All I'm saying is that he has bad information. Also, lambda is cool but the only difference between that and defining a function inside the body of another function is the requirement of a name. I know lambda's amazing and it's not nearly as magical when you do it in Python, but Python supports proper closures which is the real reason lambda in Scheme is so powerful.

A different TA: But the real reason it's not being taught in Scheme? My understanding is that it's not being taught is because no professor wants to teach it in Scheme.

Secondly, we talked about some concerns about whether SICP is actually a good INTRODUCTION. I don't think we dispute that there's a huge value in the course, but whether it's good for an introduction is I think, debatable

I do know that when I was a student, I raised many of these same concerns and frankly, I dont think those concerns are invalid. I think that until you have an appreciation for mathematical elegance and REALLY REALLY understand SICP, which appears to only be true for less than half of the students, much of it is lost. I know that was the case when I took the class, at least.

Should clarify. I'm not saying that 50% of the class "doesn't get it", but there's a deeper level that I think is hard to grasp for people who either don't spend 40 hours a week on this, or don't have a mathematical background.

Good example: Data directed programming. Me as a student was: WTF is this? So I always just call this 'get-data' function? What's the point? Where's the application?

The examples in Scheme are often /SO SIMPLE/ that exercises seem like they are dumb. They often look like a point docking trap in exams to students.

In my mind, SICP is better as a capstone, senior course. Think about all of us who defend it. Do we think that we could reach a better audience with that message if the audience were seniors looking for a summary/enlightenment, rather than freshmen exploring CS and engineering applications?

Here's an interesting direction to take SICP: http://ocw.mit.edu/courses​/electrical-engineering-an​d-comp...

Correct me if I'm mistaken, but my understanding is that this is essentially SICP if they were to teach a graduate-version of the course. This looked /insanely/ cool.

In any case, for future TAs and Instructors of this course: It is now up to you to make sure the spirit of SICP and CS education lives on! Not that it's been any different since the beginning of time.

Re: SICP is Under Attack

#79

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

I think the more likely explanation is that a lot of people saw insane fortunes being made from computer science in the dot-com boom and went and got their degrees, hoping to cash in as well. In the subsequent bust, the party was over and computer science reverted to being a program for those who were truly interested in it. I'd rather it stayed that way.

Re: SICP is Under Attack

#80
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…

In my mind, SICP is better as a capstone, senior course. Think about all of us who defend it. Do we think that we could reach a better audience with that message if the audience were seniors looking for a summary/enlightenment, rather than freshmen exploring CS and engineering applications?

Indeed. I read SICP while in grad school w/ the online lectures. Frankly, I'm not sure I would have appreciated SICP nearly as much in my freshman year. With that said UCB and MIT are probably the two places you'd expect to find freshman that would appreciate it. But given the fact that the text is freely available online, and there are great lectures available for free online, it might be reasonable to say that for the inquiring student, they can use MIT's Open Courseware.

Here's an interesting direction to take SICP: http

The link you posted is dead. I'm interested in what it is. Could you post a new link?

Post reply on HN