MIT

Kevin Wang
97 Bay State Road
Boston, MA 02215


Home | Writings | Academics | Interviews | Sundry
Hopefully this will prove useful to someone who stumbles here looking for course advice. This is written in the style of Vincent Yueng.

Fall 2004
3.091 Sadoway teaches with extreme chutzpah (but unfortunately, his handwriting deteriorates over the semester). I don't know why, but chemistry never really clicked with me, so I didn't do to well on the tests. If you're looking to get out of your chem requirement and have some fun at it, this is the class for you. Best of all, you get to memorize the periodic table (it's easier than it sounds). 3.5/5
8.01 This was taught by Kowalski, which turned out to be pretty bad. The guy makes an earnest effort (he comes in to class early and writes the entire lecture in colored chalk on the boards), but his teaching style is ineffective. He uses a stick to point to the things he's written on the board while lecturing. I'd prefer if he derived formulas and results with the students instead of having them pre-plastered on the wall. The problem sets were OK also. Maybe it's me, but teaching introductory mechanics seems difficult. The best advice I can give is find a good TA. 3.5/5
9.00 Jeremy Wolfe is a pretty funny guy, it's a shame he didn't get tenure at MIT (he's over at Harvard now). If he's still teaching this class, I'd definitely recommend it to get a HASS-D out of the way. The material is pretty interesting and his style of teaching is very conversational and informal. You get to learn a little bit about what makes you tick. 4/5
18.06 Although Prof. Goemans wasn't a great lecturer (nor was he bad), this class was one of my favorites at MIT. The material itself is very interesting and quite beautiful. I took this class before 18.03 after the relentless urging of my dad, and he was completely right. Learning this material allowed me to sleep through the last third of 18.03. Not only that, linear algebra is a must have if you're planning to study electrical engineering or computer science. It has lots of applications in signal processing, and some interesting uses in theoretical CS as well. 5/5

IAP 2005
6.370 My IAP schedule: wake up, code, eat, code, eat, code, sleep (and then some code). Lots of fun if you like programming. I was blessed to team up with two awesome guys down the hall who made the whole experience a blast. Looking back, our code was extremely ugly, and quite frankly, we didn't know what the heck we were doing. This just goes to show a team of naive freshmen hacking together bad Java can "accomplish" a lot in a month! As an aside, the 6 Engineering Design Points you get for beating the default CPU is nice if you're course VI-III. 5/5

Spring 2005
6.001 Very well taught class. The instructors genuinely care about getting you off on a good CS footing at MIT. The emphasis on abstraction and recursion helps to stretch your mind. The concepts you learn from Scheme crop up in surprising ways. For example, Google's MapReduce is just a fancified version of Scheme's map and fold. You also get to write your own meta-circular evaluator (Scheme code that evaluates Scheme). I still haven't wrapped my head around that yet. Beware though, the projects can be very time consuming. Expect to spend 15-20 hours a week during project weeks. The nice part is you can skip most lectures and just watch the video lectures online--they're practically the same thing. The fact that I had an amazing TA was the cherry topping. 5/5
8.022 I took this class because I was trying to avoid TEAL. I was apprehensive at first about the difficulty, but that proved quite manageable with LOTS of office hours. (It didn't hurt that my next door neighbor thought this class was easy). Scott Hughes is a dynamic and engaging lecturer, and it's great the way he derives everything on the board with you. I think he's taught this class for quite a few years in a row, so he may move on to something else. The TA was Prof. Sciolla, who probably cared more about your learning than any other professor I've ever met. Deriving Maxwell's equations is pretty cool, and there's a large portion on relativity (which still escapes me). This class is also nice in that it brushes up your multivar (whatever that's worth to you). My advice: if you have any interest in physics, take this class over TEAL, and do it with a buddy. Don't worry if you don't have much E/M background; I didn't even take AP Physics in high school. 5/5
14.01 This class was taught in two forms: lecture/recitation or pure recitation. I wound up in the latter. Apparently, it was overenrolled by 100 students or so, so they tried to weed people out by making the class extremely hard. When that didn't work, they just had a difficult curve. In all fairness, I spent an average of 0.3 hours/week on this class. The textbook is not very helpful, and my recitation instructor didn't perform too well. Call me biased, but unless you really like econ, avoid this class. 2/5
18.03 You need to take a class taught by Mattuck. He is a brilliant lecturer, and will make you walk away feeling you understand the material without much effort. The problem sets were well thought out, the tests were very reasonable, and both the lecturer and recitation instructors (mine at least, Andreas Malmendier) were great. As an aside, Andreas is like Arnold Schwarzenegger, but he does String Theory. No joke, I saw him at the gym a few times. He can probably bench 300 pounds. Cool huh? And he wears really tight shirts that exemplify his muscles, something the girls in recitation seemed to love. For more info, contact Christine Chin. Back on topic, if you know linear algebra well, the latter part of this class will be trivial. Take 18.06 first if at all possible! 4.5/5

Fall 2005
6.002 You get to learn what circuits are all about. Nodal analysis is cool. Non-linear devices are a pain in the arse. David Perreault was dry but got the point across. My TA Richard Hansen (graduated, sorry) was great. The labs can get annoying. Debugging hardware in general can be a painful process. It's sad to discover your circuit didn't work because you choose a resistor with an orange band instead of a red band. Ouch. The final project is cool though, you build a very very simple music player. 3.5/5
6.041 Probability is ubiquitous in science and engineering (and life also, to be fair). The class material is really cool, and the best part is, the textbook is simple and crystal clear. You should go to class, but if you miss it, reading the corresponding chapter should put you back on track. The lecturer goes slow enough to emphasize why the answer is the way it is, which is important. Really take advantage of recitations and tutorials, they help to cement the material. This is the single most organized class I've ever seen. 5/5
6.042 This was cotaught by Albert Meyers and Ronitt Rubinfeld in the TEAL format. Unfortunately, I couldn't have imagined a worse pair of lecturers, combined with a worse teaching format. Powerpoint and math just don't go together, so it's a shame that they both use that. Meyer's got angry at the class now and then for not understanding a concept, which is inexcusable for a teacher. Rubinfeld was nice but in her first at bat, finished a 45 minute lecture in 7 minutes, I kid you not. I asked her to slow down afterwards. You can tell that both professors cared a lot, but they weren't very effective at teaching. The material itself is interesting, but the TEAL format really doesn't help you learn. You spend some time in lecture, then in small group problem solving, then back to lecture. You really don't have time to solidify what you learned in the problem solving session, and they often turned into a few kids solving the problems with the rest looking on. The problem sets are fun though. This was my first "math" class, so learning to write proofs was tricky. I'm still pretty poor at it now. I'd recommned you take this with Tom Leighton (I heard he was an exceptional lecturer) NOT in the TEAL format. 3.5/5
14.02 For some reason, macroeconomics just clicks. This is a pretty easy class with a decent curve. The defining feature which sets this class apart from 14.01 isn't the good teaching, but the excellent textbook. It gives you all you need to do well in the class (whereas for some reason, the 14.01 textbook fails in that regard). 4/5
MAS.110 To say John Maeda is interesting would be an understatement. You should Google him, he's a world famous designer. His style of teaching is very interactive and hands on. Oftentimes he'll climb over desks and tower over you to ask you a question in your face. His class is hilarious and enjoyable, and we got to do some pretty fun design things. A representative Maeda quote: "When I took 6.003 as an undergrad, I hated it!". He always wore a black trenchcoat to class, with one shoulder slipping off. I wonder what his kids are like. In hindsight, this class was more work than anything else I took this semester. I pulled an all-nighter almost every night before the psets were due. It was cool to be able to apply some of my programming experience though--that definitely gave me an unfair advantage in the class. Otherwise, the readings are insanely dry and convoluted, but you'll manage. Take this class if you want to see the intersection of art and computation, and want to put some of your C skills to use. 3.5/5

Spring 2006*
6.003 Lots of math, but not abstract, elegant math. Lots of dirty, gritty, engineering math. If you like that, you'll like this. It was pretty cool to learn about feedback though and how it applies to almost everything mankind has ever engineered. Do you ever wonder how the space shuttle stays on track during liftoff? Feedback! How do you stand up straight without falling over? Feedback! How does a thermostat keep your room at just the right temperature? Feedback! My semester, they did an experiment where they got rid of labs and instead added design projects to problem sets. This made problem sets really long and painful (and often involved fighting Matlab more than designing things). I don't know if they stuck with it. Oh yeah Daniel Freedman is a great lecturer. He prides himself on his quality of teaching and has won several awards for it, so take it with him if you can. This is my first and last EE class. Whew! 4/5
6.170 Michael Ernst and Saman Amarasinghe are an interesting duo. Ernst is known as "The Punisher" for the number of students he sends to the Committee on Discipline every year. Saman is cool, but I can't understand a word of what he's saying in class. I really wish he came with subtitles. In terms of class material, I wish I had actually put in an earnest effort to learn the things they emphasized. I was young and cocky and thought I knew everything about software engineering. This past summer, I interned and Google, and realized I know practically nothing about software engineering. I'd highly recommend the book Effective Java by Josh Bloch. There's so much more to programming and good software design than just knowing syntax. The problem sets were pretty fun and the final project was great. Go into this class with a team in mind! Once again, I was lucky to have an amazing team: the two kids I worked with on 6.370 and someone else who was better than all of us. I'd especially urge you to learn the material on design patterns, as that's what a large portion of software engineering is about. This class also taught me the difference between specification and implementation. While it's trivial in hindsight, at the time it was pretty cool. I wish I could retake this class. 6.170 is a unique experience, don't waste it like I did! 4.5/5
15.053 James Orlin is a pretty good teacher. He somehow makes math and powerpoint work together. Maybe that's because the class material is extremely easy, or he's just an amazing expositor. Either way, this class gives you a very slow-paced introduction to solving optimization problems with linear programming. The problem sets are dumbed down with an ensemble cast of characters (Tom the Turkey, for example). They must spend a lot of time on the animations and quotes. It's a fun class that's pretty easy. I was interested in what optimization was about, and this class gave it away almost too easily. The best way to describe this class, as spoken by my good friend Paul Yang, is "this class is just like high school!" It's that slow. You don't even know what you're solving until the third class. Oh yeah, Orlin is really big on himself (though to be fair, he's done some impressive things). 4/5

Fall 2006
6.004 This class explains all of the layers of abstractions that go into building a computer. After learning about how many things have to go right to make that cursor on your screen blink, I'm amazed that the whole contraption works at all. You get a little hands-on experience with a mini-OS which is cool. I honestly wish I had paid more attention in this class since some of the concepts are generally useful in computer science. Take it with Steve Ward, he's a teaching machine. It doesn't require much work and getting A isn't difficult (it gets much harder around quiz 3, so don't slip or build yourself a nice buffer on the first two quizzes). 4/5
6.034 Winston dumbs down this class way too much. You can put in 5 hours a week for this class and you should get an A, no problem. I heard the spring version is considerably more work, so if you want and easy A, take it in the fall. My whole impression of AI is "we can't do much except branch and bound (and some other funky stuff)." Winston himself says the field of AI deserves a D+ in terms of how good it is at actually reproducing artificial intelligence. The only bright side is getting to use Scheme again, which is always a pleasure. 3/5
6.046 If you're in course VI, this will be the single most important class you will take here in your undergraduate career (possibly counting grad classes). This class will teach you to think abstractly in ways you never thought your tortured brain was capable of (math majors laugh at this, I'm sure). This was my first and only "real" math class, in that it emphasized proofs. I think the math majors would laugh at CS proofs though, and I have to agree slightly. "Computer Science proofs are restatements of the theorem." The breadth and depth covered by the class is pretty impressive. After taking this class, you should be able to ace any algorithm question in a software related interview. You have to put in a real earnest effort to do well though. Make sure to stay on top of the material after every lecture and recitation. Go to office hours if you need to. There is an infamous take home quiz (quiz 2). I'd recommend you write it up in LaTeX if possible. Trust me, that will boost your grade by quite a bit. If you don't know LaTeX, learn it for quiz 2 (that's what I did, and it paid off). It will also make writing up your problem sets much faster. My semester was taught by Demaine and Sudan. Demaine is an excellent lecturer, very dynamic and engaging. Sudan is a little bit more dry but not all that bad. If you like this stuff, you should follow up with 6.851 Advanced Data Structures (Demaine), and 6.854 Advanced Algorithms and 6.856 Randomized Algorithms (Karger). This was my favorite class at MIT, period. 5/5
24.00 Philosophy is hard to categorize. It seems the subject is a discussion of abstract concepts that are vaguely defined. I slept through most of the classes, despite my best efforts to stay awake. I blame 32-155. That room induces a comatose state. My TA Ari Krupnick was a cool guy though (and he plays basketball). I was lost most of the semester but crammed hard for the final and pulled some bull on the final essays. Not a bad class to take on pass/no-record. The discussion are interesting though. There was a nice part where we learned about Pascal's wager and why it's ludicrously wrong, which you can probably pull on your friends next time you have a philosophical battle. 3/5

Spring 2007
6.033 This is another one of those classes that I wish I had put more earnest effort into doing. You learn about a broad range of topics related to computer systems such as security, transactions, and networks. The other thing you'll realize is that the internet is a case study for everything. That's probably because it's a pretty well designed system. The two design projects are a lot of fun also, if not time consuming. The readings are too verbose, but necessary whether you go to lecture or not. The lecture themselves are interesting, but don't cover the full depth of material you need to do well in the course. One cool part is getting to read classic landmark papers in CS (the original ethernet paper, X windows, RAID, MapReduce, Google, stack smashing, some stuff by Thompson and Lampson). They may seem long, but I implore you to do ALL of the readings (the papers and the course notes)! You won't regret it. 4/5
6.141 Robotics is hard. That's what I got out of this class. This is a relatively new Institute lab that satisfies the course VI CI-M requirement. The staff makes a good effort to make robotics accessible. Over the course of the semester, you add parts to and program a four wheeled robot that can do some pretty neat tricks at the end. The class culminates in a "Grand Challenge" in the same spirit as the DARPA Grand Challenge (though of course nowhere near as difficult). I spent countless late nights at lab debugging weird problems. The worst part is having to deal with computer vision, which is just plain unreliable. That combined with some staff errors (in code, directions, etc) provided for some frustrating times. If you like robotics, this class is for you. If you're not sure, this class is most definitely not for you. 3/5
6.851 Another Demaine class. He's one of the world's leading experts on data structures, so it's cool to learn from the bleeding edge. You'll see his name on some of the papers that are cited throughout the semester. The material is extremely interesting but also very abstract. How can data structures be abstract, you ask? I don't know, but they managed to put a lot of math into it. Of the 22 lectures, I have a decent grasp of about 1 or 2. It was nice to have a problem set buddy, and a guy who solves the psets in two hours for reference. The problem set policy is nice: there's one a week, given to you to fit on one page of LaTeX. Your solution must also fit on one side of a page, typed in LaTeX. Scribing is a good experience also, because it really forces you to understand the concepts (or at least pretend to). I felt this class was more oriented towards people doing research in data structures. As a cool aside, for the final project I did a joint theory work with a friend of mine. Demaine mentioned he was interested in getting it published, but I don't know if we're at that level (plus it's boatloads of work to get it into publishable form). Many students did implementations for their final project, which is a safe bet if you're not a theory guy. 4.5/5
14.03 I took this for my HASS concentration in economics. In hindsight, I would've chosen a different topic besides economics, but given that I already had two in the hole, I might as well finish it up. This is a higher level look at microeconomics through case studies. The material is interesting, but as I mentioned earlier, economics never clicked with me. The teaching is decent, though a tad early in the morning (9 AM?! ...). I should've made a more earnest effort to stay on top of the material. Once again, I spent an average of 0.3 hours/week during non pset weeks. This proved to be my downfall, as trying to cram everything for the third test/final didn't work as planned. If you put in a good effort, you should be able to get an A. The main word I learned from this class: externalities. 3.5/5

Fall 2007
6.824 Distributed systems are some of the most complicated things on this planet. I can't believe they work. Despite a plethora of tests, you can't really be sure of the correctness of your implementation. There are just too many race conditions. This class was a serious foray into distributed computing. We built a simple distributed file system called "YFS" - Yet Another File System. It featured a caching Paxos replicated lock server and a caching extent server, pretty sweet. Frans Kaashoek is cool and his lectures are interesting. The lone TA Jeremy Stribling was also impressive. He always gave thoughtful answers to 3 AM email questions about random stuff. One thing I got out of this class was that race conditions will be the end of you. Trying to debug a threaded lock server was the most frustrating thing I've ever done. You pretty much have to put a printf before and after every important line in your code and scan the logs after a mysterious deadlock. Oh yeah, getting exactly once RPC semantics isn't entirely trivial, especially when you throw a replicated state machine on top of your implementation. Btw, check out Strib's CS Paper Generator. It's pure genius. Albert Ni and I were joined together at the hip this semester because of this (and 6.830, partially). I talked to Kaashoek and it seems that he and Strib sunk most of the semester creating the labs for this class (it was the first time Kaashoek taught it; before it was Morris). I believe they put in a good solid 30 hours for some labs. I think the Paxos lab probably took them 40-60 hours. According to Strib, Kaashoek wrote the labs and Strib did them. The first iteration was sometimes a massive failure, and then they'd work it out together. This class (+ 6.830) consumed a good portion of my semester. I don't think I've ever been this busy before. 5/5
6.830 Hmm databases. I was hoping to get some hands-on experience with using databases, which we got a little bit of. Overall, we learned some interesting things about the way databases are constructed and designed. There's a lot of overlap with distributed systems, especially the concept of transactions and atomicity. I learned some useful ideas like ACID. It seems the field is built mostly around heuristics and estimates, upon which query optimizers work. There's some interesting stuff you can do with stream processing, eddies, and different schemas (like Star Schema). For my final project, I worked with Akash on a column-oriented database for financial applications. It was cool because we ran threaded queries on his Playstation 3, after we installed Yellow Dog Linux on it. The class featured three labs. The first was a simple heapfile implementation of a database. The second was out of control and took a good 40 hours. We implemented extendible hashing, which amortizes the cost of hash table resizing. The class is still in its infancy in some sense, and the staff needs to restructure how labs are done. This lab was way too complicated and long. I know at least 5 kids who dropped the class solely because of this lab. Also, the skeleton SimpleDB they provide is poorly designed: Effective Java Item 39 by Joshua Bloch - "Use exceptions only for exceptional conditions". In other words, don't use exceptions for flow control! The skeleton was also written before Java 5.0 and generics, so there's some ugly casting everywhere. If I had a free month, I'd rewrite their implementation for them. Lab 3 involved implementing transactions and deadlock detection, which was pretty sweet. We also implemented R/W locking, which can be tricky if you want to avoid starvation. Sam Madden is a good lecturer. Michael Stonebraker is a baller. Put your hands in the air! I should collect his quotes and put them up somewhere, they're hilarious. 4/5
6.UAT If you put a lot into this class, you'll get a lot out. Try to take the constructive criticisms of your recitation instructor to heart. Don't treat this as a joke. I did and paid dearly. It actually takes a lot of effort to make a solid presentation, but it can be fun, especially since you're choosing your own topics. If you want to do well in this class, don't procrastinate and practice practice practice! 4/5
21F.101 Nimen hao! Chen LaoShi is awesome. He seems like a tough guy but he's actually really nice! I wish there had been more emphasis on learning characters instead of pinyin, but maybe I should master all the phrases we were taught before I complain about that. Looking forward to Chinese II. 4/5
21L.421 This class introduced me to some of the most entertaining pieces of literature I've ever read. My favorite has got to be The Importance of Being Earnest. The wit hits from the first line and continues until the end of the play. Class discussions were led by Dr. Howard Eiland. I always felt like he had very deep insights in the readings, so it was fun going to class. On the other hand, he tends to lead discussion instead of guide it, as you might be used to from high school. He's also a hard grader, but if you work reasonably hard on the papers and speak up in class, you can pull off an A- (woot). If you're looking for a HASS-D/CI-H, this is definitely a good bet. 4.5/5

Spring 2008
6.087 I came into this class assuming it would be an introduction to developing on the Android platform. I realized immediately during the first day of class that this was not meant to be. In hindsight, it's quite clear. As of February 2008, no one really knew much about developing on the Android platform. This class was a fun side project of Hal Abelson's (he was teaching 6.01 concurrently) which was taught mostly by Andrew Yu from IS&T. The class consisted of high-level project management by the team of project managers from industry that Hal recruited (people from IS&T, ConnectedBits, and Google). Every Friday, we would get together in a classroom for 1.5 hours and Dave Mitchell would tell us our product sucks. That was about it. We were left entirely on our own to build everything from scratch, which was fine by me. You can check out a video of our final presentation. Working with Jeff Chang and Matt Zitzmann was an absolute pleasure. These two guys knew how to get shit down while having fun at the same time. I'm sad to say that they'll be leaving MIT next year to work as APMs at Google. Honestly though, if Google is hiring people like Jeff & Matt, then damn they're doing something right. 4/5
6.831 I'm really glad I took this class. It opened my eyes, not only to what constitutes a good UI, but more importantly, the process by which a good UI is arrived at. Specifically, it taught me the importance of user testing (done right) and iteration. The class itself is not conceptually difficult, of course, but there is a decent amount of work near the end for the final project. It will also give you a great appreciation for how difficult it is and how much thought and effort go into designing a truly great user experience. Rob Miller is a good lecturer, but you can get 80% of the content from the lecture notes/slides he prepares for you ahead of time. My only gripe is that grading was pretty arbitrary. Oftentimes, we would receive three to four comments and a number grade. Makes you wonder where the got that number from. Anyways, check out our final product, it's something you may actually find useful :) 4/5
6.UAP Get your adviser to sign off, yay. N/A
15.390 This class was actually a great introduction to how to develop a business idea, from conception to writing a complete business plan. The one thing I realized after taking this class is that business plans are not BS, and that there is considerable effort and energy invested into making reasonable projections about your nonexistant company's future. The hardest things to get right are financial projections, which requires a mix of market research and pulling numbers from out your behind. It gave me a lot more confidence to write better business plans in the future, when they will actually matter. On a side note, it's a great opportunity to hear "inside facts" from Noubar Afeyan (ex-entrepreneur and founder of Flagship Ventures), who is an accomplished VC in the biotech area. 4/5
21F.102 Chinese class gets exponentially harder. Zhang LaoShi is a great teacher b/c of how she integrates class participation into her lectures. My only gripe is that the characters we learned were aloof and disconnected from the pinyin and topics we were learning. For example, we might be learning to speak about weather, but we were learning characters relating to agriculture and, oh say, color. Anyways, I'm planning on taking Chinese III as a Listener next Fall so I can focus on other things. One thing's for sure though: if you don't put in an earnest effort, you won't get much out of a language class.
MEng Thesis Worked w/Glen Urban at the Center for Digital Business. N/A

Fall 2008
6.828 I'll see what building an operating system is like.


*This semester, I was pledging Phi Delts, hence the light courseload. I was actually enrolled in 15.401 but dropped the class after having been awake in it for a full 4 minutes after 8 weeks. But that's a whole nother story.