My fourth semester at MIT is ending, which means it's time for me to take a moment to think about the classes that I took. I'll say a few words about what each class is, why I took it, what I got out of it, and what I thought of it.
This semester, I wanted to practice the kind of skills required to do a 1,000-unit hardware kickstarter. There's a lot of unknown territory for me in hardware design, and I don't want to do it for the first time when people are counting on me to deliver a product. To that end, I took 2.007 as an introduction to physical design and fabrication, and 6.002 & 6.115 as an introduction to electrical engineering.
2.007 is a sophomore year mechanical engineering class where students design and build a robot to compete at the end of the semester.
Through it, I improved my CAD considerably, practiced physics with motors, gears, and cords, and got better intuition for working with metals. Some highlights:
- The capstan equation. The friction of a rope wound around a post is exponential in the number of windings! Exponential!
- Rivets. They're super useful for attaching metal to other metal.
- Motors. Torque is proportional to amperage and speed is proportional to voltage. The maximum torque (at zero speed) is called the stall torque, and the maximum speed (at no torque) is called the no-load speed. The maximum power output happens at half stall torque and half no-load speed.
- Cycloidal drives and harmonic gearing. These provide high gear ratios in a very small amount of space. They're useful in robotics applications that require torque.
- Dremels. Scary and useful.
- CAD. Once I got the hang of it, it started to give me the "vast blank page" feeling of programming and writing. Blank files ooze with the possibility of designing anything you can imagine. Delightful.
My primary regret is that I spent too much time McGyvering things together. Prototyping with a dremel and double-sided tape is fast, but practicing SolidWorks is more useful. If I were to do this class again, I would 3D print my robot and avoid dremels.  This maximizes design time (high skill cap) and minimizes dremel time (low skill cap).
Indeed, the thing I'm most proud of was my collection of cute and functional 3D printed parts. I made all sorts of things: motor mounts, four bar lifts, a drive chassis, screw templates, etc. I would generally CAD these up, run them off the printer overnight, and then test them in the morning. I really liked this flow, and I expect that I would use it quite a lot in my hypothetical kickstarter.
Finally, an unrelated note: my classmates seem way better than I am at mechanical engineering. I spend lots of time in math, where I know my classmates are extremely smart, but there aren't many flashy moments where it really hits you. In mechanical engineering, it's obvious how impressive the top people are: their robots are beautiful and their mechanisms are way better than mine. It feels good to be spending time in a field where I'm in the bottom quartile; there's lots to learn.
This is a sophomore year electrical engineering class. The meaty part is a sequence of five labs where you wire up various integrated circuits to an 8051 microcontroller.
Most of my takeaways were about how to program hardware. The 8051 is super old, but provides a solid platform to learn microcontroller architecture. There's no magic whatsoever--you write every MOV by hand and put your interrupts at specific addresses in memory.
- Oscilloscopes are really cool. The feeling of using them is like using a microscope in the dimension of time. All sorts of "glitchiness" becomes much more obvious when you have a time-microscope lying around.
- I finally understand why you're not supposed to hot plug electronics (only after I actually burned some out for the first time). If you unplug something that's inductor-y (like a motor), the current jumps right to zero. Then the derivative of current becomes very negative, and causes a voltage spike via the inductor law. That (not the magical hotplug gremlin) is what fries your stuff.
I took this class because I was worried I'd be required to drop 6.115 without it. It's an introductory circuits class, where you learn how to analyze diodes, op-amps, inductors, etc.
- The idea of impedance (and its generalization to mechanical systems) is cool.
- Good practice applying stuff I "learned" in 18.03 last semester but didn't get much practice with.
- Lots of circuits (boost & buck converters, rectifiers, etc) feel just like gadgets. They use the same set of building blocks, but behave neatly together. I think it might be worth understanding EE just up to the point where you understand how these things work. The math is useful, but substantially less cool.
My main complaint with 6.002 is that the labs are very finicky. Perhaps I'm short sighted, but I imagine almost all the circuit design I'll ever do will happen in a schematic editor. Problems like "I plugged this wire into the wrong part of the breadboard" don't feel particularly exciting or useful to debug.
My side project this semester was designing, fabricating, programming, and testing a custom PCB to control my 2.007 robot. I started with no experience making PCBs, so this project absorbed quite a large number of hours. It ended up being a great use of time; I felt hugely more confident in my EE abilities afterwards.
I'd strongly recommend doing a modern EE project after 6.115; it made the class substantially more rewarding. Of my academic activities this semester, I got the most value out of my PCB project by a wide margin.
This was a great semester. I want my classes at MIT to teach me things I don't know. At the beginning of the semester, I didn't know anything about mechanical or electrical engineering, and now I do. My time with electrical engineering felt particularly notable: it's one of the most useful skills I've gotten out of college so far.
 This is in clear violation of the competition rules and would probably result in a competition DQ. However, the ability to disregard competition rules is one of the superpowers you get from not caring about your GPA--you can spin classes however you want to learn what you're trying to learn more efficiently.