Live data from Hacker News

SICP is Under Attack

vedantk.tumblr.com

181–190 of 207 posts

Re: SICP is Under Attack

#181

Earlier quoted context omitted.

What does your comment have to do with what I wrote? No one is denying that many people really want a vocational education. No one is claiming that smart people should want to be academics. The point is that what people want is not computer science. Civil engineers do not enroll in physics programs and then complain that their physics professors are not teaching them anything about practical bridge construction.

Then the problem is with college departments and administration who fail to create separate programs distinguishing between CS and SE.

I'd argue that that would be a really bad idea. You can't be a good software engineer without having a good grasp of Computer Science.

Re: SICP is Under Attack

#182
post #156

Earlier quoted context omitted.

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

Right, sorry. `s/plagiarism/copyright infringement/g`. I've been reading a bit too much about education lately, and I guess it snuck in.

I knew SICP was CC-licensed, so I guess it was relatively clear that I'd be in the clear here. I have a sort of end game in mind where I build myself up enough to work through TAOCP as well (ha!), and it's certainly not CC-licensed. I rather enjoy the idea of doing something like this in public, for moral support and random acts of guidance, so it'll become important for me to know where the line is.

And yes, I'm quite familiar with Khan. I had a couple complaints about the site early on and ended up falling out of the work because of it (the main issue specifically was that I was working through the exercise section, and I had to do a geometry section for which there seemed not to be a relevant video, so I got stuck on a given node in the progress graph). The end game for that plan was to get at least through introductory calculus, since it almost feels like my geek card is illegitimate without it. I definitely need to take another run at it.

Re: SICP is Under Attack

#183
post #145

Earlier quoted context omitted.

The same could be said of any Turing-complete language (though I'll admit Scheme's macro system gives it a leg up when it comes to implementing new features.) But given that Scheme's syntax encourages thinking in terms of mathematical recursion, it seems silly that (a) I can't write something so simple as the Fibonacci function by using its traditional mathematical recursive definition, and that (b) SICP encourages t…

The difference between Scheme and any "Turing complete language", is the philosophy behind it, which is one of minimalism. That's why memoization isn't implemented for you. Scheme was also designed to encourage implementing non-recursive control structures, as well as programming with side effects. Scheme isn't supposed to be totally pure. If you encounter a problem that requires mutation, you're supposed to try to a…

>I recommend that you use SICP to learn Scheme, as it will make more sense when you actually know how to use it.

I used it my entire graduate career, under an advisor who is part of the inner circle of PLT/Racket. I'm quite familiar with it.

> P.S. If you're thinking of those problems in terms of iteration and mutation, you're probably doing it wrong :). Think more functionally.

I primarily program in Mercury and Coq (languages which are both purely functional). I can promise you I have no problem "thinking functionally". The solution presented in SICP is not structurally recursive (while the "naïve" solution is) but rather relies on an accumulator, tail calls, and a measure to terminate recursion... this is much closer in spirit to an iterative algorithm than a recursive one.

Re: SICP is Under Attack

#184
post #106

Earlier quoted context omitted.

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

The factual inaccuracies in the Strings chapter, covering encodings and Unicode, are horrific enough. Confusing UCS-4 and UTF-32, getting historical orderings wrong, completely forgetting to mention Latin-1, and worst, failing to directly outline the connection between encoded streams of bytes, and Unicode strings, in clear and direct language.

Also, the horrific RE abuse at the beginning of Chapter 6 is a remarkable standalone example of Doin' It Wrong:

  import re

  def plural(noun):          
    if re.search('[sxz]$', noun):            
        return re.sub('$', 'es', noun)        
    elif re.search('[^aeioudgkprt]h$', noun):
        return re.sub('$', 'es', noun)      
    elif re.search('[^aeiou]y$', noun):      
        return re.sub('y$', 'ies', noun)    
    else:
        return noun + 's'

Re: SICP is Under Attack

#185
post #12

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

You have to learn arithmetic before you can learn proofs.

Ehh.... I don't believe so.

I'm reasonably sure Euclidean geometry and symbolic logic do not require arithmetic.

Re: SICP is Under Attack

#187
post #98
post #43

Earlier quoted context omitted.

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…

If you make a degree a prerequisite to getting a specific job, or even a specific job at a specific (higher) pay scale, you always end up with people treating traditional four-year programs like trade schools. Especially if you also make people think of trade schools as where you go if you only barely passed high school, or if you failed high school and wound up with a GED. (And we could recurse and talk about how on…

Great point. Bookmarked.

To see how to do trade schools without the stigma, look at Germany. They do it Right.

Re: SICP is Under Attack

#188
post #181

Earlier quoted context omitted.

Then the problem is with college departments and administration who fail to create separate programs distinguishing between CS and SE.

I'd argue that that would be a really bad idea. You can't be a good software engineer without having a good grasp of Computer Science.

There's nothing to stop them from having a lot of overlap. Much like how Computer Engineering overlaps quite a bit with EE.

Re: SICP is Under Attack

#189

> 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

That's definitely the standard way to solve it. He did something unnecessarily clever (and no faster). The tail-recursive version of your loop would look about the same structurally as his bizarre change-of-variables solution.

Re: SICP is Under Attack

#190

Earlier quoted context omitted.

Why not write a python(subset) interpreter in scheme? The point is once you scan,tokenize and parse you get an AST. You already got a language that works on AST. I don't think python's AST is gonna differ a lot from scheme's.

Um, yes, actually they differ a lot. In Scheme (and Lisp in general) the code pretty much is the AST. This is not the case for Python.

I think that the point was that the AST for a Scheme program isn't that different from the AST for a Python program, even though the code looks different.

Unfortunately that point is false as well. The AST for a Python program will generally involve a lot of message dispatches that won't exist in the AST for a similar Scheme program.

To get a sense of the difference, in Python if you yield, your code actually gets turned into a class with certain methods that get called repeatedly, and restart your method at the correct place with the correct state. By contrast equivalent code in Scheme will somewhere under the hood have call-with-current-continuation, which works by very different mechanics.

Post reply on HN