5 ms·
This made me sad. Sussman is saying -- almost literally -- that MIT just threw in the towel on teaching actual understanding of how things work and instead wen
by lisper 4y ago
This made me sad. Sussman is saying -- almost literally -- that MIT just threw in the towel on teaching actual understanding of how things work and instead went with treating engineering artifacts as magic black boxes that no one, including the people who created them, actually understands, and that this is OK. It is not just that no one does understand them, no one can understand them, and so we're stuck with them because if no one can understand them, no one can improve upon them.
Which is, of course, a self-fulfilling prophecy.
- rtpg 4y agoI heard a story once, that for a while France was teaching math to kids from first principles. Like trying to teach about number sets before diving into other topics. It was hard and abstract. They stopped. Instead they do what most people do: they teach concepts with a lot of papering over of the details. Then, once people have a stronger grasp on things, they go into first principles. It’s easier to understand commutativity if you can do addition already! Similarly, you can teach people black box stuff at first, then dive into details. it’s ok to use a high level language before understanding how to run stuff on a machine. Let’s not forget something important: Python and Lisp are basically abstracting away the important machinery anyways! Sussman has said it himself, computer science is about computers the same way that astronomy is about telescopes. And of course it’s not like SICP is the only class all these people are taking. One intro class. Meanwhile people get to do fun and engaging shit while learning. And they will learn more stuff later!
- lisper 4y agoSure, but we're not talking about elementary school here. I think Python is a fine language for teaching first graders about programming. But this is MIT. If MIT students aren't expected to understand how things work under the hood, what hope is there for the rest of humanity? What I lament here is not the fate of 6001 specifically. It probably was outdated and in need of a refresh of some sort. What I lament here is the rationale that Sussman gives and apparently buys into, that the new approach is acceptable, and it's acceptable because treating things as magic black boxes is an inherent feature of modern engineering. No one understands, no one can even be expected to understand, and that's Just The Way It Is, and it's OK. Well, no, it's not OK. People can and must be expected to understand because the magic black boxes aren't actually magic. They were created by mere mortals not that long ago, some of whom went to MIT and read SICP. If SICP is dated (and it is) the thing to do is to update and improve it, not to discard it.
- rtpg 4y agoIsn’t this literally the first class you take? Like there are. 3.5 years left to learn all the other shit? This is a class for people with little to no programming experience. And it will include many people who will not be programmers (shocking I know). “Give people tools to do shit” does not preclude “learning all the details”. And it’s not the last class people take!
- p_l 4y agoIt also expected that you have considerable earlier knowledge, just not on programming itself (For example, at least some exposure to calculus is expected, as that's what some early examples use). The early lessons of SICP are more like teaching what's 2+2 in my opinion (substition model of function application, for example). In terms of practicality of the content, honestly I'd say SICP was at least as bad as most intro lectures I've seen, and honestly should stay but be combined with something like companion labs with "battery included" builds to play with things.
- randcraw 4y agoIn the OP video, Sussman mentions that SICP was one (the first) of four core courses in EECS that introduced essential concepts in programming, circuits, signals and systems, and computer architecture. I think all four completed by the end of year two and were prerequisite for all junior/senior EECS courses thereafter. It's hard to imagine the EECS program does not still require this material to earn a BS in CS or EE, but requiring four prerequisite courses probably interfered with non-EECS students who wanted to take junior/senior level EECS courses but did not want to have to run the "gauntlet of four" before doing so.
- inimino 4y agoThe problem is that MIT used to be the high road for engineering and now it is a prestige degree and grants access to various roles etc. They gave in to the bureaucrats because it was inevitable that things would go that way anyway. At least they put the bullet in SICP and had a hand in the new curriculum. Now there is a generation of software engineers worried about losing their jobs to ChatGPT because they resigned to the fact that ChatGPT can probably glue things together better than they can long before they do the necessary work to understand ChatGPT from first principles. But this is branded as elitism, highly anti-bureaucratic.
- ThrowawayR2 4y agoIIRC the quote is from Dijkstra, not Sussman?
- rtpg 4y agoSorry, I believe I heard Sussman say it (and they probably correctly attributed it), you’re likely right
- urthor 4y agoDo you have a source for France teaching mathematics from first principles?
- randomifcpfan 4y agoSounds like you are thinking of “New Math”, which was tried in many Western countries including the US: https://en.m.wikipedia.org/wiki/New_Math https://en.m.wikipedia.org/wiki/New_Math In many ways SICP was from the same intellectual tradition as New Math.
- lanstin 4y agoAs some one who loves SICP and first principles, I had a new math curriculum and loved it. Being able to derive the laws of arithmetic is usually a lot more useful than just knowing some particular instance of calculation. To be sure, I also did math contests in high school to bump up my speed at math, and in software will do timed speed tests (self devised on certain types of small tasks) also to bump up my speed in a particular language.
- hnfong 4y agoYou do know how the "first principles" came into place, right? They had arithmetic first. People counted chickens, sheep, coins first. Then, mathematicians invented more abstract rules that incidentally were able to derive arithmetic, and called them "first" principles. Chronologically they came last.
- lanstin 4y agoI love axiomatic set theory and the history of maths and science. I love knowing how technology developed over the last few thousand years, Egyptian land measuring and trade accounting etc., and as much quantum field theory as I can understand (not that much, it's very hard). I like knowing about DNA and the history of animal husbandry. Deriving calculus and complex analysis from ZFC gives us tremendous intellectual power as far as the essentially and inherently true. Understanding how our culture has been lifting the vails of ignorance thru science and experiments and cultural evolution and so on is also important.
- whimsicalism 4y agoSounds apocryphal to me.
- deleted 4y ago[deleted]
- deleted 4y ago[deleted]
- deleted 4y ago[deleted]
- inimino 4y agoYou can read some of the story of France's experiments with Bourbakism in elementary education here, under the section about pedagogy: https://en.wikipedia.org/wiki/Andr%C3%A9_Lichnerowicz https://en.wikipedia.org/wiki/Andr%C3%A9_Lichnerowicz tl;dr: New Math began in France, and they were the first to recover from it.
- jpalomaki 4y agoI think it’s a question where do you start. It the late 90’s computers and operating systems were already so complex that you did not start CS curriculum by understanding how they really work. You took those for granted to get to the interesting topics first and then later went for the details.
- lisper 4y agoAnd what exactly were "the interesting topics"? I was a grad student in the late 80s and early 90s, and I remember having classes that took this approach. It took me years to recover and repair the damage. Understanding how a real OS works is not actually that hard. It's actually easier if you start with that than what I went through, which was a bunch of abstract academic bullshit that left me with no idea how it was supposed to make contact with reality.
- inimino 4y agoIn the late 90s? Surely OOP, code re-use through encapsulation and inheritance, the relational model (though on the way out), and making XML of all the things should have been some of the "interesting topics" at this time.
- jpalomaki 4y agoThe best way to understand how an operating system works is to build a simple one yourself. But you can't build one before you have learned how to program. I believe it's a bit similar case with many other topics nowadays. Having some basic Python skills unlocks opportunities in other fields, such as machine learning or robotics.
- urthor 4y agoExactly this. As a fulltime functional programmer... I cannot ask university graduates to learn functional programming to the depth of SICP teaches. Even the "Scala redbook" is 50-100 hours of work. Junior graduates, have so, so, so much information to cover. Bashing a "good" development workflow/flow state into them. Communicating with correct nouns. There's SO MUCH work for them to do. Plus, output they're paid to produce. Functional Programming, manipulating higher order functions, is useful for reasoning about truly complex concurrency. Hard to justify the time investment otherwise. There's SO much work to do in software development.
- thruway516 4y agoWait till GPT-10 comes around and the primary purpose of CS jockeys is to use it to write programs that make absolutely no sense but they just work.
- lisper 4y agoHappily, the insolubility of the halting problem provides guarantees full employment for software engineers until the end of time, because "just work" is undecidable.
- sirsinsalot 4y agomy junior devs have been doing that on my teams for years anyway
- kilgnad 4y agoThis is sad But not because of What you say. I think the course has merits. BUT treating engineering artifacts as magic black boxes is the ONLY way we can manage complexity. Attempting to engineer something highly complex while trying to understand everything is a fools errand.
- lisper 4y ago> treating engineering artifacts as magic black boxes is the ONLY way we can manage complexity No, it isn't. And this is exactly the kind of throwing-in-the-towel that I'm talking about. The other way to manage complexity is to include it as one of the considerations when designing a system. You can design for simplicity just as you can design for any other desirable feature (speed, cost, power consumption). Complexity is not an unavoidable consequence of the laws of physics, it a consequence of poor choices and complacency.
- kilgnad 4y agoIt is the only way. Imagine if you were designing an operating system: GNU Linux. There is no one person in the entire world who understands All of GNU Linux as a whole. Most people understand what they need and everything else is an abstraction. Sussman was right.
- Jtsummers 4y agoIt's not the only way. The alternative is to recognize when complexity is a consequence of extraneous structure versus the things actually needed for the system. Rube Goldberg devices are complex, and the bulk of their complexity is spent (though intentionally humorously) to accomplish simple tasks. Many, if not most, real world software systems are the same way. They're Rube Goldberg devices but done accidentally rather than intensionally through the accrual of many decisions (both good and bad) over years and decades with no or insufficient effort to distill and simplify them. Treating everything as "magic" black boxes as you want is tantamount to sweeping dirt under a rug. It doesn't address the problem, it just creates a wrinkle for you to trip over later.
- practal 4y agoSussman is wrong. Happens to the best.
- randcraw 4y agoI suspect Sussman told only the more palatable part of the story. Students pay for those degrees, so they have a big say in what they buy. It's likely that both EECS majors and non-EECS majors who took EECS courses believed the four course EECS basic prerequisite sequence no longer served their needs as well as it once did. Profs have only so much power to shape minds, especially if the minds are paying over a quarter of a million dollars for the only product the profs are selling.
- inimino 4y agoThe very way he tells the story practically lampshades all the behind-the-scenes intrigue that will never see the light of day.
- justin66 4y ago> Sussman is saying -- almost literally -- that MIT just threw in the towel... The truth would have been more embarrassing: he just got sick of all the fucking parentheses.
- draw_down 4y ago[dead]
- rhelz 4y ago// engineering artifacts as magic black boxes ... //. Alas, that ship has sailed a long, long, time ago. As far as the average programmer goes, CPUs have been black boxes since before they were born. There are just too many people adding too much value to keep up with everybody. Programming is changing radically (as it does every 10 years or so anyways) and I'm actually impressed that Sussman has the vision and courage to move on.
- lisper 4y agoActually, I'm not at all convinced that a lot of value is being added. Yes, there is a lot of change, but it's far from clear how much of that change represents actual progress. Instead, you get a lot of latest-and-greatest which, upon sober reflection turns out to be bullshit, to be replaced by another round of latest-and-greatest. Lather, rinse, repeat, in a cycle that takes about 5 years or so. CORBA. UML. Agile. OO. And a lot of the churn is because too few people actually understand the fundamentals, and so very few people recognize the bullshit for what it is until it has consumed vast amounts of resources.
- deleted 4y ago[deleted]