Live data from Hacker News

Programming by poking: why MIT stopped teaching SICP

posteriorscience.net

181–190 of 245 posts

Re: Programming by poking: why MIT stopped teaching SICP

#181
post #62

As a college student who followed along Berkeley's SICP lectures online in 2015 (taught by John DeNero), I am kinda confused by the Scheme v/s Python debate. Did I miss out on something having used Python in the entire first half of the course v/s say CS61A taught completely on Scheme (like when taught by Brian Harvey)?

Yes, I believe so. I think Brian Harvey puts it aptly, "The big ideas in the book — the ones that alumni in the real world tell us they’re using in their work — express themselves best in Scheme." [1] https://www.cs.berkeley.edu/~bh/proglang.html

Ahh. Do you think it will really add value to re-take the course under Scheme exclusively?

Re: Programming by poking: why MIT stopped teaching SICP

#182
post #128

I really wish SICP had been a 2nd year course (with a requisite increase in difficulty) instead of my very first course in the EECS department. Not having had a ton of background in programming beforehand, I feel that a lot of what SICP has to offer was lost on me to some degree due my not appreciating it at the time. I suppose the same could probably be said for any intro course or just college in general...

When 6.001 was introduced, a surprisingly large number, perhaps a majority, of MIT students arrived without having leaned how to program. SCIP was their first exposure to programming. That's inconceivable to me now.

I think Berkeley's EECS curriculum starts with functional programming instead of imperative. Need someone to confirm.

Re: Programming by poking: why MIT stopped teaching SICP

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

Heh, it is also a consequence of the web limitations (can't easily replace javascript, or anything else without breaking backwards compatibility) and its associated technologies. You can only poke the browser, not understand it.

I find funny that only last year with MVC scaffolding generators I can do forms to access a database just as easily as I was doing them in Foxpro 20 years ago.

Yes, now it is client server, safe against common hacking attacks, responsive, etc. But it's been 20 years !

And the productivity valley between both points is abysmal.

Re: Programming by poking: why MIT stopped teaching SICP

#184

Reading this made me so so sad, I do agree with the reasoning. I learned to program on a course that follows SICP, I spent all my college years learning how to program from first principles, building all the pieces from scratch. Building compilers, soft threads implementations, graph parsing algorithms... and I was happy with that way of programming! Today I'm an iOS developer, I spend most of my day 'poking' at the…

Serious question: What is stopping you from going back?

I'm naive but curious and I do not want to make guesses.

I wonder how are we going to preserve knowledge about programming from first principles if, under pressure from corporations and lazy peers, no one does it anymore?

Re: Programming by poking: why MIT stopped teaching SICP

#185
post #153
post #150

Earlier quoted context omitted.

People were excited about JSON because there was a desperate need for a data format that wasn't overly complex and/or unsafe to parse. S-expressions just weren't up to snuff because there's no standard way to do key-value mapping.

Sigh. This is exactly the kind of lack of understanding that I'm talking about. > S-expressions just weren't up to snuff because there's no standard way to do key-value mapping. That's not true. There are two standard ways to do this: a-lists and p-lists.

"Two standards" isn't much different from "no standard" in this context. JSON was successful because it had a simple spec that almost anyone could implement for any language with virtually no ambiguity. It's not ubiquitous because it's good, it's good because it's ubiquitous. It's another episode in the long history of "worse-is-better".

Re: Programming by poking: why MIT stopped teaching SICP

#186
post #127

Earlier quoted context omitted.

I disagree. The field has exploded. It's becoming more and more difficult to take vertical slices of every sub-field. What should we consider fundamental? Programming languages, automata theory, set theory, compilers, assembly language programming, microprocessors and system architecture, algorithms, graph theory, category theory, artificial intelligence, machine learning, operating system, parallel and distributed p…

> What should we consider fundamental? A fair question, and a full answer would be too long for a comment (though it would fit in a blog post, which I'll go ahead and write now since this seems to be an issue). But I'll take a whack at the TL;DR version here. AI, ML, and NLP and web design are application areas, not fundamentals. (You didn't list computer graphics, computer vision, robotics, embedded systems -- all a…

A very vaguely related question: are bindings lexical or dynamic in R? Or would it be fair to say that it's actually both at the same time? Or do we need a new term altogether?

For those unfamiliar with it, in R, environments are first-class objects, and identifier lookup in them is dynamic. But the way those environments are chained for lookup purposes is defined by the lexical structure of the program (unless modified at runtime - which is possible, but unusual) - i.e. if a function's environment doesn't have a binding with a given name, the next environment that is inspected is the one from the enclosing function, and not from the caller. So R functions have closure semantics, despite dynamic nature of bindings.

It would appear that this arrangement satisfies the requirements for both dynamic scoping and for lexical scoping.

Re: Programming by poking: why MIT stopped teaching SICP

#187

Reading this made me so so sad, I do agree with the reasoning. I learned to program on a course that follows SICP, I spent all my college years learning how to program from first principles, building all the pieces from scratch. Building compilers, soft threads implementations, graph parsing algorithms... and I was happy with that way of programming! Today I'm an iOS developer, I spend most of my day 'poking' at the…

> I feel miserable doing the kind of programming I do nowadays! I wish I could go back to simpler times, where I actually had to reason about algorithms, data structures, hardware, etc.

Join the TXR project:

http://www.nongnu.org/txr

http://www.kylheku.com/cgit/txr/tree/

I made some 3000 commits all by myself since 2009. The main reason why this exists is the above: a project where I can stuff ideas, algorithms, whatever, into a coherent whole that has regular releases and is well-documented externally. And this coherent whole is useful to me in many ways.

Re: Programming by poking: why MIT stopped teaching SICP

#188

Reading this made me so so sad, I do agree with the reasoning. I learned to program on a course that follows SICP, I spent all my college years learning how to program from first principles, building all the pieces from scratch. Building compilers, soft threads implementations, graph parsing algorithms... and I was happy with that way of programming! Today I'm an iOS developer, I spend most of my day 'poking' at the…

And to make this really annoying, you still need to know low-level algorithms and data structures to make it through most interview processes. What they should really do is give you a crappy API doc and have you make it do something useful.

[deleted]

Re: Programming by poking: why MIT stopped teaching SICP

#189
post #79

Earlier quoted context omitted.

But that's exactly the point... these days, even 4 whole years isn't enough to learn "all the fundamentals", at least not while balancing things so that you learn enough practical skills to also do something useful. So what do we do, have people do a 4 year degree, and then go spend 8 weeks, or 16 weeks, or a year, learning to actually build systems? I don't know, maybe that is the answer. But I suspect the MIT guys…

> even 4 whole years isn't enough to learn "all the fundamentals" No. You are missing the point. The fundamentals are very simple and easy to learn. That's what makes them "fundamental." It's all the random shit invented by people who didn't understand the fundamentals (or chose not to apply them) that takes a long time to learn.

Amen.

How could they ever understand "simple and easy"? Their concept of simple is not based in reality.

There seems to be this idea (I wish it had a name) that one can just apply a new abstraction layer and the lower layers magically disappear or are rendered insignifcant.

And of course producing 100's or 1000's of pages of "documentation". This is disrespectful toward the reader's time. The best documentation is and will always be the source code. If I cannot read that, then for my purposes there is no documentation.

This is not to say some of these old new thing higher-level of abstraction solutions do not work well or are not easy to use or do not look great. Many people love them, I'm sure. But until I see more common sense being applied it is just not worth my time to learn. I would rather focus on more basic skills that I know will always be useful.

Re: Programming by poking: why MIT stopped teaching SICP

#190
Yes yes.

Old school, understanding based, composable via interfaces components gave us things like R4RS, Plan9, git, LuaJIT, nginx, Erlang, you name it.

That packing or poking crappy mindset produced so called eneterprise software with all its ole, jdbc, javaee, corba, NodeJS, and all the other meaningless bloatware.

BTW, this a human-universal law. Lack of understanding of grounded in reality fundamental principles will enivetably produce piles of abstract nonsense, be it philosophy (of Hegel), [Java] programming, theoretical physics or even math (500 pages Coq "proofs" of abstract nonsense).

There is the law of cancer (in terms of 4chan) - any branch of human endeavor will be ruined with enough of cosplaying idiots.

BTW2: teaching of principles is too difficult, because, like a good philosophy, which is a study of principles, it requires extraordinary trained and lucid mind habitually trying to separate underlying principles from human-made "higher" or "pure" nonsense.

This habitual mental hygiene, which guards the principles from contamination by popular memes and waves of mass hysteria is very rare trait, impossible to sell or monetize. To teach it requires a similar mindset in students. Packers would be unable to grasp what is it I am talking about.

The Motorcycle Maintenance book, and that part of Atlas about modern philosophers will be a much better illustration.

Post reply on HN