Earlier quoted context omitted.
I am simply expressing my preference and opinion.
Yes, and I'm asking what reasons you have for holding that opinion.
Programming by poking: why MIT stopped teaching SICP
141–150 of 245 posts
Re: Programming by poking: why MIT stopped teaching SICP
#142Earlier 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…
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
#143Earlier 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…
https://mitpress.mit.edu/sicp/full-text/book/book-Z-H-30.htm...
Re: Programming by poking: why MIT stopped teaching SICP
#144Earlier 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…
Re: Programming by poking: why MIT stopped teaching SICP
#145Earlier 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?
Re: Programming by poking: why MIT stopped teaching SICP
#146I 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…
Re: Programming by poking: why MIT stopped teaching SICP
#147Some 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…
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
#148Earlier 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…
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
#149There'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.
Re: Programming by poking: why MIT stopped teaching SICP
#150Earlier 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…
S-expressions just weren't up to snuff because there's no standard way to do key-value mapping.