The separation of life into school, college, then work is completely artificial in the first place. Trying to fix "undergraduate " education is just putting a band-aid on a broken system. It even assumes the premise that the goal is to receive a degree, by completing X units of assigned work (whether over 4 years or 2.5).
People don't learn in the same ways, at the same rate, at the same age, and waiting until they're adults just wastes years of neuroplasticity. On the other end, stopping after 4 years or some other arbitrary amount is just under-utilization of adult learning capacity.
"If the colleges were better, if they really had it, you would need to get the police at the gates to keep order in the inrushing multitude. See in college how we thwart the natural love of learning by leaving the natural method of teaching what each wishes to learn, and insisting that you shall learn what you have no taste or capacity for. The college, which should be a place of delightful labor, is made odious and unhealthy, and the young men are tempted to frivolous amusements to rally their jaded spirits. I would have the studies elective. Scholarship is to be created not by compulsion, but by awakening a pure interest in knowledge. The wise instructor accomplishes this by opening to his pupils precisely the attractions the study has for himself. The marking is a system for schools, not for the college; for boys, not for men; and it is an ungracious work to put on a professor." -- Ralph Waldo Emerson
I think this is the class that inspired the infamous "Java is the SUV of programming languages" entry that got slashdotted a few years ago. Phil said that the students who picked J2EE all had to drop the class - the workload was too great for them to keep up.
At first, I was surprised to hear that MIT students were having trouble completing a program in Java, until I saw what was required and the time they'd have to complete it. I wasn't sure if I could do it in the time alloted, even without carrying a full courseload, and I knew java reasonably well at the time.
This post, along with Paul Graham's comments about Lisp, really changed the way I think about programming. Kind of like the JFK statement about seeing things as they never were, and asking yourself "why not?"
Why the hell should it take so long to go from an idea to an implementation. I was just accepting the achingly boring typing that Java had inflicted on my life as part of the cost of writing a program. Time to realize that I can't implement a chat server in half a day, and ask myself "why not?"
Anyway, I think that even the students who have to drop this course learn a valuable lesson, as long as they struggle with it for a while.
Reads okay until you realize it's an advertisement for Greenspun's class. His proof of how well it works is that most people who take it like it (not surprising, given its reputation as too much work unless you know you like it) and that most people who take it work at Microsoft and Google (he fails to note just how many MIT grads do the same thing without his course).
There was enough blatant self-interest here that I couldn't make it through to the end.
Maybe. It also borrows alot from "Teaching Software Engineering" (linked to in the article). However, I think it is very useful and has legitimacy because it's backed by experience. It's not the typical spew from 90% of the blogs out there.
Greenspun's class goes back as much the online communities started to become reality. It's among the first, if not the first in academia, for engineering internet applications in a time nobody even considered collaboration and online communities worth.
One thing it doesn't need is advertisment!
Nonetheless, your arguments collide. If the percentage of people who get employed by Goog and Ms is the same as of those MIT students not taking it, then your argument that this is advert of the course is fault. So, you cancel your own argument.
Obviously Greenspun's a webapp veteran. That doesn't mean his class doesn't need advertisement. As I alluded to in the previous post, it's not particularly popular at MIT. And to my knowledge, it's not a class like SICP that's been taken up at universities around the world.
I think at best Greenspun's inclusion of those factoids was meant to imply some causation (that his class helps people get jobs). Maybe he was just name checking for the fun of it. Either way, I suspect most of the alums who took his class and then went on to get jobs at GOOG and MSFT would have been able to without it.
You're right, 6.001 is a required course within the major. I'm not citing its internal popularity, really (although folks love the class). A number of other universities have similar courses offered, whereas I haven't heard of any other 6.171-like classes.
Excellent advice. This was particularly good: "Everything that is part of a bachelor's in CS can be taught as part of a project that has all phases of the engineering cycle, e.g., teach physics and calculus by assigning students to build a flight simulator"
Fall '03, probably one of the most useful (and brutal) courses I took. MIT's CS program leans a bit on the the theoretical side, so classes like this serve up a good dose of reality.
I was an in-class advisor for this ccourse seven years ago. From personal experience, I'm not sure I'd recommend it. It is the sort of thing you learn on the job, anyway... and you get paid for it. The higher paying entry-level jobs require knowledge of hairier stuff these days. VMWare, for instance, pays a much higher starting salary than either Microsoft or Google. However, I'm not sure what other courses one could take to prepare for this sort of work. It seemed like most of the CS students at MIT wanted to become lawyers or investment bankers (but, this was back in the dot-com bust).
I believe the key problem is that (most) students who enroll to a CS program expect to become engineers, but the CS curriculum is supposed to form scientists, not engineers. The key distinction is that in a SW Eng program the emphasis is on the process to build software (stuff like CMM, XP, quality processes, architecture methods, etc...).
Sure CS grads can make fantastic engineers, but my point here is that the difference between CS and SE is not well understood in the industry.
People don't learn in the same ways, at the same rate, at the same age, and waiting until they're adults just wastes years of neuroplasticity. On the other end, stopping after 4 years or some other arbitrary amount is just under-utilization of adult learning capacity.
"If the colleges were better, if they really had it, you would need to get the police at the gates to keep order in the inrushing multitude. See in college how we thwart the natural love of learning by leaving the natural method of teaching what each wishes to learn, and insisting that you shall learn what you have no taste or capacity for. The college, which should be a place of delightful labor, is made odious and unhealthy, and the young men are tempted to frivolous amusements to rally their jaded spirits. I would have the studies elective. Scholarship is to be created not by compulsion, but by awakening a pure interest in knowledge. The wise instructor accomplishes this by opening to his pupils precisely the attractions the study has for himself. The marking is a system for schools, not for the college; for boys, not for men; and it is an ungracious work to put on a professor." -- Ralph Waldo Emerson