The 6.009 of your field

MIT has an introductory programming subject called 6.009 ("six double-oh nine"). Its title is "Fundamentals of Programming," and it's a remarkable class.

6.009 is remarkable because it teaches people how to code. There's no theory to cram and flush. Lectures are effectively optional. But the problem sets are interesting and involved, and require doing real programming for eight or ten hours a week. If you take 6.009, you've understood the essence of what it's like to be a programmer. In this sense, 6.009 is the essential course of its field.

6.009 is sandwiched between two other types of courses. Before it, you take 6.0001 (Intro to CS). You need 6.0001 to understand 6.009. But 6.0001 doesn't get into the weeds; it doesn't go deep enough to arrive at the essence of the subject. 6.0001 is an intro course.

After 6.009, you get a whole bunch of specialized classes. 6.036, which deals with machine learning. 6.858, which deals with security. 6.006, which deals with algorithms. Each of these subjects teaches you about a niche of computer science. But they don't deal with the core experience of programming. These are specialized courses.

Other fields seem similar in structure. In math, 18.02 (multivariate calculus) is an intro course. You learn the steps to find the intersection of two planes, but there are no proofs. The subject isn't deep enough to understand what doing math is about. 18.745 (Lie Groups and Lie Algebras I) seems to be a specialized course--you learn about a subfield of math, but the focus is on the subfield, and not on math itself. My bet is that the essential course in math is either 18.100 (Real Analysis) or 18.701 (Algebra I).

Likewise, in physics, 8.01 (Mechanics) and 8.02 (Electricity and Magnetism) are intro subjects. Everyone has to take them, but they feel watered down, almost like "Physics for Liberal Arts Majors." Then I'm certain there are specialized courses like 8.324 (Relativistic Quantum Field Theory II), whose purpose is to learn about Quantum Field Theory, not physics itself. My friends tell me that 8.033 (Relativity) is the essential class: the first class where you really see the essence of physics.

Intro classes, taken by themselves, tend to be unmemorable. I took intro Chemistry in high school, but I didn't understand the essence of the subject. As a result, the knowledge sort of floated around in the aether of my mind until I eventually forgot it.

Specialized classes are interesting and good for making friends, but the subject matter is so niche that it's hard to imagine them having any effect on your life in 5 years. Lots of professional programmers would fail the 6.858 final, or the 6.046 final, or the 6.036 final. Even the ones who took those classes while they were in college.

But essential classes nail the 80/20 of their subject. If you took 6.009, you'd be well prepared to understand what programmers are talking about at a party, understand what sorts of things are easy and difficult to program, and interact with programmers professionally. You'll forever be able to view the world with the mindset of a programmer.

There's something that feels delightful about collecting these mindsets, in the way that travelling and conversation are delightful. When you travel, you shade in your mental map of what it's like to live in Portugal, or China, or Brazil. When you converse, you shade in your mental map of what it's like to live in someone else's shoes, to be in their situation and feel their emotions. And when you take essential classes, you shade in the map of what it's like to do electrical engineering or physics or programming.

So I don't know what the 6.009 of economics, or mechanical engineering, electrical engineering, or chemistry or biology is, but I increasingly feel a want to find these classes and take them before I leave MIT.

Here's my working list of essential courses. If you're knowledgeable about a field and can suggest its essential MIT course(s), please send me a message!

4.140: How to Make (Almost) Anything. 6.009: Fundamentals of Programming. 18.701: Algebra I. 8.033: Relativity. 6.1151: Microcomputer Project Laboratory.