Live data from Hacker News

Programming by poking: why MIT stopped teaching SICP

posteriorscience.net

141–150 of 245 posts

Re: Programming by poking: why MIT stopped teaching SICP

#142
post #121

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…

There is the actual complexity, and then there is the accidental complexity lamented by the poster to whom you responded to. I would claim both are a thing. Especially in projects where the true complexity is not that great and the theoretical basis of the solution is not that well documented people have a tendency to create these onion layered monstrosities (the mudball effect). If we look just traditional CRUD-kin…

> If we look just traditional CRUD-kin (i.e. database, view, domain logic) programs these seem to be the most in danger of becoming a mudballs. Which is really strange, given that they are the oldest types of programs out there and closely mimic the second use computers came used for (accounting) just after military applications.

Perhaps because this type of program is so old, it had so much time to stick lots of mud on it. :-)

Re: Programming by poking: why MIT stopped teaching SICP

#143
post #46

Earlier quoted context omitted.

> no one has time to learn everything Nonsense. The fundamentals don't take a long time to learn. And once you know them, everything else becomes much easier to learn. That's the reason that learning the fundamentals matters: it's a huge lever. Here's a single, small, very accessible book that takes you all the way from switches to CPUs: http://www.amazon.com/Code-Language-Computer-Hardware-Softwa... SICP gets you fr…

> SICP gets you from CPUs to Scheme I don't recall anything about CPUs in SICP. Its more about data driven programming and writing of intepreters. What i liked about SICP and scheme programming was that it is a pretty good environment for tinkering - the REPL makes it easy to combine functions, and to work in a bottom-up manner. (btw you had less of that in common lisp, and most other environments that teach you to w…

> I don't recall anything about CPUs in SICP.

https://mitpress.mit.edu/sicp/full-text/book/book-Z-H-30.htm...

Re: Programming by poking: why MIT stopped teaching SICP

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

It's not because no-one understands the fundamentals, it's that we require so much functionality to be built in such a short space of time and can afford so much processor time for it, that there's no time to build everything from fundamentals. Thirty years ago you'd build a text editor or modem control interface into your program. Today you need to embed an entire web browser, SQL database, AAA-level game engine etc. Most 'trivial' stitch-some-libraries-together software built today would take decades to create from scratch.

Re: Programming by poking: why MIT stopped teaching SICP

#145
post #43

Earlier quoted context omitted.

> It sounds to me like the field of software engineering has simply evolved since the 80s. What is ridiculous in the face of this "programming by experimentation" fantasy is that programming has evolved since the 1980s... to be even more about composable abstractions with provable semantics. Hindley-Milner-Damas types and monads are now everywhere.

> Hindley-Milner-Damas types and monads are now everywhere. Haven't run into those. Perhaps I know them by a different name?

Most likely you have. Or simply something very heavily inspired by either.

Re: Programming by poking: why MIT stopped teaching SICP

#146

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

In Math, you take Calculus. It's four semesters. Then you take Real Analysis which is the exact same material all over again, but you actually learn it and prove the theorems instead of just memorizing a few formulas and blindly applying them. It's the same in Economics where you take Micro and Macro and then junior or senior year you do the same all over again but this time you take it seriously with logical reasoni…

Today I learned why I hated calculus. Real analysis sounds like fun!

Re: Programming by poking: why MIT stopped teaching SICP

#147
post #114

Some day we will recognize that some areas of "programming" are very different and require different skill sets, and eventually different titles. We tend to call everything "software engineering" so that everybody can feel proud of such a title ("I'm an engineer"), but engineering is certainly not about figuring out how to vertically center divs with CSS (and it's also not about proving algebra theorems either -- eve…

Engineering (no matter whether mechanical, electrical, software...) is the process of designing an artifact to be constructed out of available materials, which meets a set of requirements while minimizing cost.

In mechanical engineering you design your artifact using off-the-shelf bearings, motors, pumps, etc.

In electrical engineering you design your artifact using off-the-shelf cables, contactors, relays, VSDs etc.

In electronic engineering you design your artifact using off-the-shelf ICs, resistors, capacitors, resonators etc.

In IC engineering you design your artifact using off-the-shelf silicon wafers, etching chemicals, core/logic designs etc.

It's turtles all the way down, and software is no different.

Re: Programming by poking: why MIT stopped teaching SICP

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

> AI, ML, and NLP and webdesign are application areas

On first thought, I do agree. However, they are fundamental applications. Category Theory is categorizing the fundamentals. It uses a lot of the fundamentals on itself, I guess, but that doesn't mean ti me it's inaccessible or useless.

Re: Programming by poking: why MIT stopped teaching SICP

#149
post #98

There's a quote I love from the book "The Idea Factory: Learning to Think at MIT": Freshman double E's take six double oh one (a.k.a. six double no fun) to learn to program in LISP... This is also where they begin to leave the rest of the world behind them in their ability solve problems and make things work. He goes on to describe how the course instills the virtues and limits of abstraction.

Would you recommend it for people thinking about institutional culture/school design?

Re: Programming by poking: why MIT stopped teaching SICP

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

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.

Post reply on HN