3 ms·
I recall that when MIT stopped teaching with SICP, one of the main claims was that programming now is often not about thinking abstractions through from first p
by chongli 2y ago
I recall that when MIT stopped teaching with SICP, one of the main claims was that programming now is often not about thinking abstractions through from first principles, and creating some isolated gem of composing definitions.
Which is a category mistake that they actually address in the lectures. SICP is not a programming course, it’s a computer science course. Computer science is not about computers, let alone programming, just as geometry is not about surveying instruments and astronomy is not about telescopes.
When they stopped teaching SICP — in response to the pressure to teach more modern tools — they abandoned their scientific principles to satisfy commercial concerns. They stopped teaching computer science and became a vocational school for the tech industry.
- PittleyDunkin 2y ago> SICP is not a programming course, it’s a computer science course. I don't see what you mean by this at all. Furthermore this doesn't strike me as a useful distinction when a) it doesn't cover most topics labeled by consensus as "computer science" and b) it very clearly does teach a great deal about programming. Why not say it teaches computer science and programming skills? Why do these have to be exclusive? There's obviously a great deal of overlap in general.
- chongli 2y agoI don't see what you mean by this at all The goal of the course is not to teach programming skills, it's to teach computer science. The difference is explained quite thoroughly in the lectures. One might even say that answering the question "what is computer science?" is one of the core goals of the course and a major part of the philosophy of the professors who created the course. The argument being made by the comparisons to geometry and astronomy is that in any discipline there is a difference between means and ends: what you are attempting to achieve is distinct from the tools you're using to achieve it. Furthermore, it's a mistake to believe that the discipline is all about the tools. No, the tools are the means, not the end.
- PittleyDunkin 2y ago> The goal of the course is not to teach programming skills, it's to teach computer science. Who cares what the goal is? It teaches programming skills too. The intent is irrelevant and for the most part so too is the distinction (outside the american education system, anyway). > Furthermore, it's a mistake to believe that the discipline is all about the tools. Who outside the american education gives a damn about "the discipline", if that refers to anything meaningful outside the american education system in the first place? It's arbitrary and has no purpose or benefit aside from organizing the education system. This is a course that miraculously, against all odds, manages to teach useful skills in addition to jargon patterns of thought. Why not celebrate this? Anyway, programming is a useful pedagogical tool for teaching CS. CS is a useful pedagogical tool for teaching programming. To brag about not teaching one is just hobbling your own insight into the value you provide students. I myself have a CS degree from a prestigious institution and largely enjoyed my education. But this attitude you alude to is just jerking off for the sake of jerking off. Particularly in the case of SICP.
- imglorp 2y agoThe quote was about "programming by poking" which I take as highly relevant to actual distributed software. It meant (1) systems are more built by integrating many components, and (2) for many reasons, the components are not understood by the integrator and (3) they must resort to experimentation to validate how things actually work. Unless you have a TLA+ model of all your components and how they interact, I would argue you don't understand your distributed system either, for all inputs. https://web.archive.org/web/20160505011527/http://www.posteriorscience.net/?p=206 https://web.archive.org/web/20160505011527/http://www.poster...
- medo-bear 2y ago> They stopped teaching computer science and became a vocational school for the tech industry. Sheldon always said that MIT is a trade school
- abeppu 2y agoI'm fine with the claim that CS is not about computers as astronomy is not about telescopes, but there are pure CS courses that don't cover programming and do cover automata, turing machines, computability, complexity etc and don't cover programming. SICP is about programs in a running language rather than abstract idealized computations, and is centered around reading and writing programs as examples. I think its success stems from its grounding in exhibiting such examples that ordinarily would not become accessible to students so quickly.
- chongli 2y agoIf you watch the lecture videos they make it a point of emphasis that they’re not interested in teaching LISP and that the course is not a LISP course. To show running programs they had to select some programming language. This was a regrettable concession because some students will inevitably think the course is about that language and miss the general principles they’re trying to teach: 1. Primitive operations 2. Means of combination 3. Means of abstraction These are the three main features of programming languages, according to Sussman and Abelson. They wanted us to stop bikeshedding over the superficial details and just look at a tool for these 3 features, then be able to implement the algorithms and data structures we already know. This is how you become a wizard who can cast magic spells.
- michaeldh 2y agoYou don't think they can address both needs? What are non-MIT schools teaching when they teach CS if it's not SICP? Is everyone else just a vocational school?
- chongli 2y agoSICP isn’t the only way to teach CS, obviously, but I’ll be honest with you: some schools aren’t even trying. They just offer Java and Python programming courses and call it a day.