Rajiv's MIT Subject Evaluations
M.Eng. students will have to take advanced math classes at some point, and this counts.
8.012 - Physics I
You'll learn the same sort of equations and whatnot as 8.01, but get a deeper appreciation through deeper problem solving. I realized how much physics I didn't understand before by solving these problems. This class has a good peer group, so it's a good opportunity to learn with others.
My high school only offered Physics B, and I'm happy about that, because I might not have taken 8.012 otherwise.
They say that beauty is found by studying mathematics. If you want to understand elegance, beauty, and ingenuity by getting your hands dirty in real code, take 6.001.
I recommend this for students outside of course 6 that are interested in learning about computers.
8.022 - Physics II
This is significantly easier than 8.012. The reason is, most of the problems can be cast into math before you have to think about the physics too much.
I had Scott Hughes as professor for this class, and he was simply amazing. His energetic and clear teaching almost convinced me to switch into course 8. Markos deserves much credit for the plentiful and almost magical experiments in the class.
Again, forget about how hard 8.012 was (or how hard people said it was). This is much easier. I've heard the experience varies with the teacher, so check with your friends to see how the lecturer is.
6.004 - Computational Structures
Ever wonder how a computer works from the ground up? Starting from semiconductors, 6.004 offers you the chance to learn about (and build) a computer through all the levels of abstraction. This class is easy (about 70% of the students get A's) and there's no reason not to take it if you're remotely interested.
I TA'd this class Spring 2007 and it was a lot of fun. I was fortunate to have two great sections of students.
I recommend this for students outside of course 6 that are interested in learning about computers.
21M.301 - Harmony and Counterpoint I
The best way to understand something is to try to do it yourself. If you enjoy classical music (and preferably play an instrument), take the Harmony and Counterpoint series to get a deeper appreciation of music by writing it! This is taught by many different lecturers, and the experience varies widely depending on who you get. They're working on standardizing the course, however.
6.270 - MIT's Autonomous LEGO Robotics Competition
I enjoyed this course a lot and would recommend it to anyone who wants to spend his IAP active. I'm sure MASlab and 6.370 are fun as well. I joined the 6.270 staff for two years after taking this course. 6.270, above 6.370 and MASlab, teaches you to cope with hardware's fickle nature and real-world design challenges.
I think 6.270 is a great activity for tinkerers. Think of it as a LEGO/microcontroller playground with a contest to motivate you.
6.170 - Laboratory in Software Engineering
This class is horrible. I can handle the work, but I didn't learn anything about software design here to justify it. The problem sets didn't involve design work so much as slavish coding and documentation. This class will teach you to be a commoditized code-monkey like no other. The only fun I had here was the final project, thanks to a wonderful team and TA.
I wrote the "exact" physics engine for this project.
6.856 - Randomized Algorithms
David Karger is an amazing professor. He's one of those rare individuals that understands the subject so well that it sounds simple when he explains it. This class is very hard, but very rewarding. I can almost guarantee that I will never use an algorithm in the class in my life, but I'm glad I learned them all.
Did you like 6.046? If you want to continue with that stuff, take this and 6.854. After this class, I was going to go into theory.
6.033 - Systems Engineering
The readings in this class are indisputably well-chosen (original papers on UNIX, TCP/IP, etc.). Everything else is terrible. The tests are detail-oriented to make up for the fact that they can't think of ways to test you on any applications of the knowledge.
Here's the trick to doing well on the design projects: just make a bunch of references to the concepts learned in class and don't get too creative. Nobody really enjoys this class, which is a shame, because it is often taught by otherwise good lecturers.
6.170 and 6.033 are the strong reason to major in 6-2 rather than 6-3.
6.840 - Theory of Computation
As far as graduate classes in theory go, this one is fairly easy — evidenced by its large enrollment and low difficulty assessments in the HKN guide.
Michael Sipser is a superlative lecturer and writer. I think Sipser's textbook was the best out of any at MIT. Each proof is introduced by a high-level picture of what the gist is, and then the proof fills in the details. Sipser's lectures, while immaculately delivered, do follow his book very closely. You can't blame him too much because the class is large. If I could change anything, I'd make the class smaller and have him go on more tangents to current research.
The problem sets are really fun, in my opinion.
I can't recommend 6.840 highly enough. While I was taking it, I was convinced I wanted to go into complexity theory.
6.854
See my notes on 6.856. You can take these classes out of order; they are independent.
6.825
Blah, I didn't like this class. I just felt like we were learning the properties and major results about statistical tools without going into the thinking behind them. Not recommended. If you want to know what Bayesian networks and SVM's are, and play around with them, it's fine, but I didn't find it eye-opening.
6.115
I think everyone enjoys this class. Getting dirty with good, old-fashioned design work. There's no good reason not to take this. Leeb's personality is a wonderful tonic to the intense and often frustrating work in the course.
6.891
This was the first time Sussman taught this class. While it was unpolished, I really enjoyed it. You have to have enjoyed 6.001 far too much. It's a big discussion in thinking about programming with a brilliant peer group. If you thought there was an end to thinking about programming, think again!
The class is a self-selecting group, which is good. If you think you'd enjoy the class, you probably will. Sussman and Hanson are both extremely smart, dedicated guys that think a lot about how to program.
21M.302 - Harmony and Counterpoint II
See 21M.301 above. These classes get better and better.
6.946 - Classical Mechanics: A Computational Approach
Sussman teaches this class too. I can't recommend it highly enough. Think about physics in a whole different (computational and Lagrangian) way. The mechanics system underlying the class is a brilliant feat of engineering. To get the most out of Sussman's classes, realize that the point is to explore and figure out things as in a dialogue, not to be spoon-fed what you need to know!
6.833 - The Human Intelligence Enterprise
Patrick Winston's course on artificial intelligence, communication, and life. Lots of good reading to think critically about, lots of good discussion, and the accumulated wisdom of many people over many years about life. Aren't you looking for a class like this? Unsatisfied that you didn't learn anything about how to communicate in 6.UAT? Take this course.
21M.303
Like 21M.301 and 21M.302, a good way to develop your appreciation of music. The grade in this course was based on two, very fun projects. Shadle makes the subject very fun and is good at clarifying the development of your musical ideas. My song (a setting of William Blake) and Minuet and Trio from the course.