Live data from Hacker News

Programming by poking: why MIT stopped teaching SICP

posteriorscience.net

31–40 of 245 posts

Re: Programming by poking: why MIT stopped teaching SICP

#31

I'm surprised and a bit dismayed to read Sussman's reasoning: "...Sussman said that in the 80s and 90s, engineers built complex systems by combining simple and well-understood parts. The goal of SICP was to provide the abstraction language for reasoning about such systems. Today, this is no longer the case. Sussman pointed out that engineers now routinely write code for complicated hardware that they don’t fully unde…

In the context of the class (The Structure and Interpretation of Computer Programs), I feel like this is not such an outlandish view. It sounds to me like the field of software engineering has simply evolved since the 80s.

Don't get me wrong, if you are going for post-graduate studies such a course will always be relevant, but it sounds like he is talking within the context of undergraduates. And in the context of undergraduates, I too would be circumspect of how useful it would be for preparing you for your first job as a Software Engineer.

Their choice to go toward a Python-based course at the undergraduate level would also seem to reaffirm this view from afar...

Re: Programming by poking: why MIT stopped teaching SICP

#33
So painfully true. This is one of the very first things I try to determine when I'm interviewing someone: do they have the capacity to actually figure out how things work, or are they doing something rote that they picked up along the way and will just blindly change code until "it works" when they hit a serious obstacle?

And I've also worked with plenty of very senior engineers who will blow smoke up your ass when you're really down in the weeds and you want to do "root cause" analysis.

Re: Programming by poking: why MIT stopped teaching SICP

#34

I'm surprised and a bit dismayed to read Sussman's reasoning: "...Sussman said that in the 80s and 90s, engineers built complex systems by combining simple and well-understood parts. The goal of SICP was to provide the abstraction language for reasoning about such systems. Today, this is no longer the case. Sussman pointed out that engineers now routinely write code for complicated hardware that they don’t fully unde…

A few years when MIT switched from SICP/Scheme to Python, Sussman had this to say:

"I asked him whether he thought that the shift in the nature of a typical programmer’s world minimizes the relevancy of the themes and principles embodied in scheme. His response was an emphatic ‘no’; in the general case, those core ideas and principles that scheme and SICP have helped to spread for so many years are just as important as they ever were"

From: https://cemerick.com/2009/03/24/why-mit-now-uses-python-inst...

If anything, I would think Sussman is more practical, and understands what the world needs/expects(now).

Literally any programmer who hasn't read SICP before will benefit from it. I think the principles still apply.

Re: Programming by poking: why MIT stopped teaching SICP

#35

I'm surprised and a bit dismayed to read Sussman's reasoning: "...Sussman said that in the 80s and 90s, engineers built complex systems by combining simple and well-understood parts. The goal of SICP was to provide the abstraction language for reasoning about such systems. Today, this is no longer the case. Sussman pointed out that engineers now routinely write code for complicated hardware that they don’t fully unde…

>libraries that ordinary programmers are stitching together

I watched the SICP videos, and I remember Abelson specifically endorsing just that.

Re: Programming by poking: why MIT stopped teaching SICP

#36
post #26

Earlier quoted context omitted.

For working as a professional programmer, SICP, sure. But TAOCP? Why?

I wrote that for anyone interested in learning CS seriously, I swear by those two books. I would recommend an entirely different set of books for someone who wants to work as a professional programmer. That being said, TAOCP really gave me a clear understanding of algorithmic analysis. It's a hard book, but after you finish it, you won't look at programming the same way again. Especially when it comes to design decis…

So, did you read the backflap and sent the email to Bill Gates as he suggested ;).. jk.. jk

How do you about working with such a hefty tome. I only use it a (light)reference. Any tips on how you went about it?

Re: Programming by poking: why MIT stopped teaching SICP

#37

I'm surprised and a bit dismayed to read Sussman's reasoning: "...Sussman said that in the 80s and 90s, engineers built complex systems by combining simple and well-understood parts. The goal of SICP was to provide the abstraction language for reasoning about such systems. Today, this is no longer the case. Sussman pointed out that engineers now routinely write code for complicated hardware that they don’t fully unde…

>Surely graduates of MIT, of all places, would be the ones building the libraries that ordinary programmers are stitching together and would still need the ability to build complex systems from fundamental CS abstractions? What's going on over there? Ordinary programmers everywhere are building those libraries, just like your assumed wunderkind are building programs out other people's libraries. The nature of program…

Yes, but the reason it has changed for everyone is that no one understands the fundamentals any more, because they aren't being taught to anyone. The ecosystem is thus becoming infested by horrible hacks which kinda-sorta work, and which everyone uses, because they kinda sorta work, and there is nothing else. The idea that programmers need to understand how to "program by poking" thus becomes a self-fulfilling prophecy.

[UPDATE:] One of the symptoms of no one understanding the fundamentals is how excited people get about things like XML and JSON, both of which are just (bad) re-inventions of S-expressions.

Re: Programming by poking: why MIT stopped teaching SICP

#38
post #37

Earlier quoted context omitted.

>Surely graduates of MIT, of all places, would be the ones building the libraries that ordinary programmers are stitching together and would still need the ability to build complex systems from fundamental CS abstractions? What's going on over there? Ordinary programmers everywhere are building those libraries, just like your assumed wunderkind are building programs out other people's libraries. The nature of program…

Yes, but the reason it has changed for everyone is that no one understands the fundamentals any more, because they aren't being taught to anyone. The ecosystem is thus becoming infested by horrible hacks which kinda-sorta work, and which everyone uses, because they kinda sorta work, and there is nothing else. The idea that programmers need to understand how to "program by poking" thus becomes a self-fulfilling prophe…

I'm not sure that it's because no one understands the fundamentals any more. (Which, BTW, the latter part I agree with.) I think it's because everything's gotten too large. You need to use too many frameworks and too many libraries just to get anything done today, and there's simply too much code there (assuming you're even allowed to look at the source!) to comprehend it.

I don't like it, but I think it's an unavoidable consequence of computing's evolution into ubiquity.

Re: Programming by poking: why MIT stopped teaching SICP

#39
post #37

Earlier quoted context omitted.

>Surely graduates of MIT, of all places, would be the ones building the libraries that ordinary programmers are stitching together and would still need the ability to build complex systems from fundamental CS abstractions? What's going on over there? Ordinary programmers everywhere are building those libraries, just like your assumed wunderkind are building programs out other people's libraries. The nature of program…

Yes, but the reason it has changed for everyone is that no one understands the fundamentals any more, because they aren't being taught to anyone. The ecosystem is thus becoming infested by horrible hacks which kinda-sorta work, and which everyone uses, because they kinda sorta work, and there is nothing else. The idea that programmers need to understand how to "program by poking" thus becomes a self-fulfilling prophe…

The ecosystem is thus becoming infested by horrible hacks which kinda-sorta work, and which everyone uses, because they kinda sorta work, and there is nothing else.

Yes, but the reason it has changed for everyone is that no one understands the fundamentals any more, because they aren't being taught to anyone.

I mostly agree with both of these statements, but with a slight twist. To some extent, I feel like the reason that "no one understands the fundamentals any more" is simply because the stack has gotten too deep (or the field has gotten too large if you'd rather visualize it that way). That is, no one has time to learn everything all the way from NAND and NOR gates, up to 7400 series IC's, to microprocessors, to assembly language, to C (portable assembly), to operating systems internals, to TCP/IP, HTTP internals, to HTML, and ultimately to Javascript, and also including a side order of databases, filesystems, machine learning/AI, etc.

As some point people just have to start treating some lower layers as black box abstractions, so they can actually work. Of course it is always beneficial to try and learn some of the lower level fundamentals, but I just don't see any that for everybody to have full knowledge of an entire application stack from end to end.

To me, the best you can do is include fundamentals in an "always keep learning" mindset. That is why, for example, I am still working on learning assembly language (x86/x64) in idle bits of spare time here and there, at the age of 42 and after 20+ years of programming. And why I still go the hackerspace and build circuits from discrete components and low level IC's for fun. But as it happens, for most of my career, not knowing assembly or how to assemble a microcomputer from individual ICs has not prevented me from getting useful stuff done.

Re: Programming by poking: why MIT stopped teaching SICP

#40
post #37

Earlier quoted context omitted.

Yes, but the reason it has changed for everyone is that no one understands the fundamentals any more, because they aren't being taught to anyone. The ecosystem is thus becoming infested by horrible hacks which kinda-sorta work, and which everyone uses, because they kinda sorta work, and there is nothing else. The idea that programmers need to understand how to "program by poking" thus becomes a self-fulfilling prophe…

The ecosystem is thus becoming infested by horrible hacks which kinda-sorta work, and which everyone uses, because they kinda sorta work, and there is nothing else. Yes, but the reason it has changed for everyone is that no one understands the fundamentals any more, because they aren't being taught to anyone. I mostly agree with both of these statements, but with a slight twist. To some extent, I feel like the reason…

> learn everything all the way from NAND and NOR gates, up to 7400 series IC's, to microprocessors, to assembly language, to C (portable assembly), to operating systems internals, to TCP/IP, HTTP internals, to HTML, and ultimately to Javascript, and also including a side order of databases, filesystems, machine learning/AI, etc.

It's called a Computer Engineering degree, sometimes called EECS (as at MIT). I did it and you can too. The Javascript and HTML were self-taught, admittedly, because they're the easiest parts of that list.

Post reply on HN