> What MIT decided was to move from a curriculum organized around topics (programming paradigms, then circuits, then signal processing, then architecture) to a curriculum organized around applications (let's build and program a robot; let's build and program a cell phone).
While this is offered as an excuse for switching away from SICP, I don't like this either.
Programming paradigms are the perfect introduction to programming. First, it naturally teaches you one of the most fundamental concepts in computer science (abstraction) by example; with the SICP approach, you learn about abstractions by constructing your own idioms for abstractions within a programming paradigm!
Second, applications become easier and easier to develop the more one learns to break out of a single paradigm and borrow ideas and tools from each as needed - otherwise, it's easy to get stuck in a rut and miss a simple but elegant solution to the problem at hand. Being able to cross-pollinate features or ideas idiomatic in one language to another gives you a Leatherman instead of an x-acto knife.
Having a fundamental grasp of programming paradigms makes programming languages feel like a second skin, rather than an obstacle sitting between the brain and the binary output.
"Perhaps in time the applications-first approach will spark a revolution as profound as the one that followed SICP, but it hasn't happened yet."
Put the way he's written described it, "a curriculum organized around applications", I don't think it will. You have it right: too many trees, not enough forest.
Does anyone who has taken the new MIT curriculum have any comments?
Sorry, but what "profound revolution" followed SICP?
It was a mighty fine course and text-book. But where's the revolution?
Where are the guys that were taught SICP that went on to do "revolutionary" things?
And if they do exist, how do they compare to a control group that just learned with UNIX/C/C++ and the like?
(Downvotes? I thought we're taking compute SCIENCE here. Where's the science and the proof? If one didn't know any better he would have thought I was stoned for insulting some holy scripture...)
> Downvotes? I thought we're taking compute SCIENCE here.
From SICP:
'Underlying our approach to this subject is our conviction that "computer science" is not a science and that its significance has little to do with computers.'
(Don't know about the downvotes or anything. Just thought that was like vaguely funny.)
While this is offered as an excuse for switching away from SICP, I don't like this either.
Programming paradigms are the perfect introduction to programming. First, it naturally teaches you one of the most fundamental concepts in computer science (abstraction) by example; with the SICP approach, you learn about abstractions by constructing your own idioms for abstractions within a programming paradigm!
Second, applications become easier and easier to develop the more one learns to break out of a single paradigm and borrow ideas and tools from each as needed - otherwise, it's easy to get stuck in a rut and miss a simple but elegant solution to the problem at hand. Being able to cross-pollinate features or ideas idiomatic in one language to another gives you a Leatherman instead of an x-acto knife.
Having a fundamental grasp of programming paradigms makes programming languages feel like a second skin, rather than an obstacle sitting between the brain and the binary output.