3 ms·
I think characterizing the courses that replaced 6.001 as exercises in "pasting libraries together" is unfair. The new introductory courses 6.01 and 6.02, are
by snikolov 16y ago
I think characterizing the courses that replaced 6.001 as exercises in "pasting libraries together" is unfair. The new introductory courses 6.01 and 6.02, are focused on introducing fundamental EECS design principles, in the context of mobile robotics and digital communication systems, respectively.
Having just taken 6.01 and 6.02, I have mixed feelings. One the one hand, you had to write relatively little code within some larger skeleton that had been written for you. But the code you had to write emphasized important engineering design principles without making you write an entire mobile robotics system from scratch (which is not the point of the class).
On the other hand, the problems were somewhat contrived, and didn't allow much room for creativity. There was only really one way to fill in the blank code. This required understanding the structure of the rest of the code to figure out exactly the way in which the professors might want you to write the missing code. The intention seems to be that this is a valuable skill, but for me it was at the cost of stifling any creativity.
Time and again, I would be partnered with someone (we had randomized partners for 6.01) and I would say "this is interesting, maybe we can solve it like this" (and I would start proposing some ideas), and my partners would say something like "I don't think that's how they want us to do it." A lot of times, they were right --- and this was a successful strategy for the class. Ultimately, the final robot did cool things, but I didn't feel like I made a creative contribution to those cool things in any way.
- hga 16y agoAgreed with the first point, 6.01 and 6.02 are as you point out a lot more than that. It sounds like from what you're saying that the software component of them are as Sussman has commented, mostly "exercises in 'pasting libraries together'" with little deeper understanding of what's going on. And if you don't take 6.004 ("Computation Structures", from CMOS circuits to designing your own RISC processor)---it's not required for everyone anymore, right?---then one might graduate with an EECS degree without ever gaining that deep understanding of what's going on that starts with 6.001. The real shame, or at least what I've guessed, is that when you take the new 6.005 which is supposed to teach most of the rest of what 6.001 taught which isn't covered in 6.01/2, you'll be doing it in Java, a language which for this purpose isn't even wrong. I'd be very interested in your comments on 6.005.