An MIT Education Opens Doors
Mar. 27th, 2006 10:09 pmI've heard a rant a couple of times -- around work, even -- along the lines of "why can't schools like MIT teach CS majors how to write code?" There are a couple of directions this goes. One is from interviewing too many people who did a "compiler" doctorate, and so they've spent the past six years doing type systems in ML. Another comes out of interviewing recent grads and expecting them to know C++/Python/Ruby/... and discovering that they only know Java and Scheme. "Shouldn't they have learned some real languages?"
I think the thing MIT needs to teach (not that I have any idea how to teach it) is how to learn a programming language. On some level every programming language is like Scheme or Java; perhaps it has explicit pointers (C/C++) or a stronger type system (Haskell) or is purely stack-based (PostScript) but none of these are fundamentally different. Maybe one thing that would be interesting is a 6-unit programming language overview? Spend a month on C, and a couple of weeks in Haskell/ML land, and then say "right, now here's Python and it's just like these other languages; here's Visual Basic and it's just like these other languages."
There should also be a little encouragement for side projects. If you want to learn how databases work, or how to write Makefiles, an actual project with some direction could provide inspiration. I don't know how many people graduate without taking any real programming classes besides 6.001, 6.170, and 6.034. Perhaps SIPB could produce one-sheets that say "hey, you could use MySQL and Python and the Census TIGER data to make your own maps!" or "hey, you could build Web pages using XSLT!" and provide support/hints. It's a thought.
I think the thing MIT needs to teach (not that I have any idea how to teach it) is how to learn a programming language. On some level every programming language is like Scheme or Java; perhaps it has explicit pointers (C/C++) or a stronger type system (Haskell) or is purely stack-based (PostScript) but none of these are fundamentally different. Maybe one thing that would be interesting is a 6-unit programming language overview? Spend a month on C, and a couple of weeks in Haskell/ML land, and then say "right, now here's Python and it's just like these other languages; here's Visual Basic and it's just like these other languages."
There should also be a little encouragement for side projects. If you want to learn how databases work, or how to write Makefiles, an actual project with some direction could provide inspiration. I don't know how many people graduate without taking any real programming classes besides 6.001, 6.170, and 6.034. Perhaps SIPB could produce one-sheets that say "hey, you could use MySQL and Python and the Census TIGER data to make your own maps!" or "hey, you could build Web pages using XSLT!" and provide support/hints. It's a thought.