Icosian Reflections

…a tendency to systematize and a keen sense

that we live in a broken world.

Personal opinions on my Harvard courses

A prospective Harvard student wrote the other day asking for advice about CS+Math at Harvard, and (among other questions) asked if I'd share the courses I took to help them compare with their own plans. As always, I was happy to help. I figured it might also be useful to someone else to have an (admittedly idiosyncratic) sample of a Harvard CS+Math schedule on the Internet, so I'm posting it here, too.

note: There really isn't much more here than it says on the tin, so if you're not interested in that, you really can skip this post.


It should be obvious, but no one should take this as a prescription -- not everything was the right choice for me in hindsight, so it's definitely not exactly right for you. At best, it's a data point for people exactly like me, and at worst you should consider reversing the major takeaways.

I also feel compelled to pass along the best advice I received about picking a major, which came from Harry Lewis:

  • Pick the 32 courses you most want to take.
  • See if any major will give you a degree for exactly those.
  • If so, then you're done.
  • If not, find the one that will give you a degree with the fewest changes. Pick that one.

Don't take extra courses to get extra pieces of paper. As Harry would say, "Don't let getting your degree get in the way of getting your education!"

But, without any further caveats, here we go...


First, I'll list just the course numbers. Below that, I've listed the course titles, professors, and some light thoughts on the professors and/or the course material. I am writing these from the perspective of four years later, but my opinions have actually been very little changed over that time.

As a general matter, I think that the professor determines substantially all of the quality of a college course, so I haven't tried at all to disentangle the effect of the professor from the material.

Fall 2012 Fall 2013 Fall 2014 Fall 2015
  • CS 50
  • Expos. 20.131
  • Math 25a
  • Physics 16
  • CS 261
  • Korean Ba
  • Math 114
  • Math 131
  • CS 125
  • Eth.Rn. 15
  • Math 124
  • Stat. 210a
  • MIT 6.845
  • CS 91r
  • CS 134
  • CS 263
  • Econ. 2099
  • Spanish Aa
  • US-World 35
Spring 2013 Spring 2014 Spring 2015 Spring 2016
  • Aes.Int. 20
  • CS 161
  • Fr.Sem. 34z
  • Ling. 101
  • Math 25b
  • AM 206
  • CS 171
  • Engl. Chcr
  • Math 123
  • CS 181
  • CS 223
  • CS 225
  • CS 262
  • CS 289
  • Engl. Cdpr
  • Spanish Ab
Summer 2013
  • Reli. S-1063

NB: At least a third of these courses have changed teaching staff since I took them (including all of the Math courses, as per department practice).


(fr. fall)

Computer Science 50: Introduction to Computer Science I, David Malan (TF: O. Babarinsa)

  • This course was/is an approachable first course in programming and a (very) light introduction to data structure and algorithms.
  • If you've actively enjoyed programming in any previous capacity, you should at least consider CS 61 instead. Shopping week is good for this.

Expository Writing 20.131: Philsophy of the State, Owen Chen

  • I expect no course on expository writing would have been as useful to me as starting a blog was. This one, at least, did not exceed expectations.
  • Whether readings and discussions are interesting depends ~entirely on your preceptor. Unfortunately, expos courses aren't shopped.
  • As best I can tell, expos course listings don't even include reading lists, which would at least be a useful way to choose a section. Oh, well.
  • Probably you should just pick an expos course with a friend; that way at least you'll have someone to do the readings with.

Math 25a: Honors Linear Algebra, Benedict Gross (TFs: B. Kuhn, others)

  • Benedict Gross (now at UCSD) was the best math professor I had at Harvard.
  • His rendition of the course followed Axler's Linear Algebra Done Right, which is an excellent textbook in linear algebra.
  • Math 25 was the second-highest of four (now five) intro math sequences. Shop 2-3 of them and find out which is right for you.
  • I personally enjoyed that Gross's rendition (like Axler's text) put the focus operators as mathematical objects, rather than on arithmetic manipulations of matrices.
    • On the other hand, it meant that when I tried to help another student actually perform the Gram-Schmidt process for their M21b problem set, I did a laughably poor job of it.
    • But in all the years since, I've never needed to orthonormalize a basis by hand, so there's that.

Physics 16: Honors Mechanics and Special Relativity, Howard Georgi and Xi Yin

  • This course is a classic, and did not disappoint. If Math 25 is right for you, this is likely the right physics course.
  • Problem sets for most physics (and math) courses conventionally involve a group that works together on the main ideas, with each student writing up answers separately and crediting collaborators.
    • If you're working entirely alone, you're making a mistake.

(fr. spring)

Aesthetic and Interpretive Understanding 20: Poems, Poets, Poetry, Helen Vendler (TF: C. McRae)

  • Helen Vendler (now emerita) is legendary for what she does. Hearing her lecture ~twice a week on the human enterprise of poetry was a privilege.
  • Section suffered from the issue common to gen ed courses, which is that it trades the possibility of rigor (and being taken seriously by the sort of students who would) for general-interest openness.

Computer Science 161: Operating Systems, Margo Seltzer (TFs: D. Holland, D. Margo, M. Wang, others)

  • Margo Seltzer (now at UBC) designs her lessons with enormous creativity, prepares them with the utmost care, and delivers them with ridiculous energy.
  • "Operating systems are some of the most complex software artifacts that exist." This was an introductory, applied course in engineering them. It was awesome. Classic awesome assignments included:
    • writing a thread scheduler
    • writing a memory allocator
    • adding journaling functions to a filesystem.
  • The rumors about workload were mostly true, though Eddie Kohler's redesigned 161 appears to be somewhat lighter.

Freshman Seminar 34z: Pressing the Page, Zachary Sifuentes

  • It's hard to imagine a better format for the liberal arts than in small seminars taught by faculty on the topic of their choice.
  • This 3hr/wk seminar was taught from the Bow and Arrows press by a visiting artist who challenged students to "disrupt the readerly impulse" with creative typography.

Linguistics 101: The Science of Language, Isabelle Charnavel

  • I have nothing useful to say about this course here.

Math 25b: Honors Real Analysis, Benedict Gross

  • This was a natural extension of 25a, though I personally found the material itself less satisfying (and was more distracted with CS 161).

(fr. summer)

Religion S-1063: Literature of Journey and Quest, Stephanie Paulsell

  • This course followed (what I assume is) a fairly standard formula for a small departmental course on a literary genre: on-genre readings, directed discussion, ~3 writing assignments.
  • Unsurprisingly, this format is highly dependent on the quality of class discussion. I'm still not sure how to predict this quality a priori.
  • The choice to fill a gen ed slot during a summer where I otherwise had a few hours a week free was a good one, in hindsight.

Computer Science research funded by the Harvard College Research Program, supervisor: Margo Seltzer

  • "Stay on campus and hang out with friends" was a pretty good choice of a way to spend a summer, all things considered.
  • HCRP is the catchall option; PRISE/PRIMO/BLISS/&c. are the programs one should generally apply to for research fellowship.

(so. fall)

Computer Science 261: Research Topics in Operating Systems, Margo Seltzer (TF: D. Margo)

  • Margo is awesome; see above.
  • Her rendition of this course was a survey in the history of systems research, intended as a first paper-reading course for graduates and advanced undergrads. Every department and field should have one of these. (Many don't.) Every student should seek out (at least) one for every field of their interest.

Korean Ba: Elementary Korean

  • I think there's relatively little advantage to studying introductory-level languages (as opposed to academic topics) in a college setting. Would not recommend, given the other course offerings available.

Math 114: Functional Analysis, Jacob Lurie

  • I likely should have taken a course in complex analysis (i.e., Math 113) instead of this.
  • I've realized since that I just don't like analysis very much.

Math 131: Topology, Curtis McMullen

  • This course was a reasonable introduction to topology.

(so. spring)

Applied Math 206: Applied Abstract Algebra

  • Substantially all of the material of this course overlapped with Math 25a, 123, or 124. I would not recommend it to any student who had taken even two out of those three courses.

Computer Science 171: Visualization, Hanspeter Pfister

  • I imagine that this would be a fine second course in programming for a student whose first course was CS50.
  • For someone who found CS50 too easy (or has done a nontrivial amount of programming since), just getting your hands on the problem sets and bashing through them in a free week might be a better substitute for the class.

English Chcr: Poetry Workshop, Josh Bell

  • The creative workshops offered through the English department are a real hidden gem of the university. This was a small weekly workshop for students' work, and I regret not making time to do more of these.
  • Entirely dependent on the professor and the group composition (which is ~entirely dependent on the professor). It's relevant here that I found Josh to be much on my wavelength aesthetically, and that he saw something in what I was trying to write that even I hadn't yet.

Math 123: Rings and Fields, Joe Harris

  • Harris's rendition of the course followed the relevant chapters from Artin's Algebra, a generally excellent text.

(so. summer)

Internship at Jane Street, New York


(jr. fall)

Computer Science 125: Algorithms and Complexity, Michael Mitzenmacher and Salil Vadhan

  • The inaugural offering of this course was billed as a Math 55 for theoretical computer science, but it was somewhere between a Math 23 and a Math 25.
  • The material was fine, considering. Some of my non-CS friends from Math 25 / Physics 16 took the course with me, and found it relatively enjoyable -- if easy -- from what I could tell.

Ethical Reasoning 15: If there is no God, all is permitted, Jay Harris (TF: M. Lesley)

  • General-interest survery course in theology and moral thought.
  • It suffered from the issue common to gen ed courses, which is that it trades the possibility of rigor (and being taken seriously by the sort of students who would) for general-interest openness.

Math 124: Number Theory, Benedict Gross

  • Again, Benedict Gross was the best math professor I had at Harvard.
  • I also found the course material fun, unsurprisingly.

Statistics 210a: Probability Theory, Jun Liu

  • The most important education in statistics that I received while at Harvard was in a summer internship at Jane Street.
  • Separately, I probably learned more practical statistics hanging out with friends working on Stat 110 problem sets than taking 210 myself.
  • This course came in a distant third.
  • All that said, taking a course in formalism and symbolic manipulation wasn't actively bad, just unnecessary.
  • By all accounts it would have been better to take this course with the regular professor, Joe Blitzstein (who was on sabbatical).

MIT 6.845: Quantum Complexity Theory, Scott Aaronson

  • Scott Aaronson (now at UT Austin) is amazing. I don't know another theoretical computer scientist (or mathematician) who can explain as cogently why the mathematical facts of their field are the way they are.
  • His rendition of a rigorous first course in quantum complexity was excellent. For a taste, see Quantum Computing since Democritus.
  • My favorite problem set question of all time came from this course:

For \(p\notin\{1,2\}\), the only linear transformations that preserve the \(p\)-norm are diagonal scalings of a basis change. Prove this statement for even integer \(p\). Extra credit: prove this statement for \(p=3\).


(jr. spring)

Computer Science 181: Machine Learning, Ryan Adams

  • As I remember it, nearly all of lecture and and section was spent covering material slowly for students who weren't comfortable with linear algebra or reading theory from the written material available.
  • The practical problem sets were worthwhile, though I expect roughly as useful as working on them independently would have been.
  • The 2014 material spent very little time on neural nets. (This was just before neural nets started constantly eating everyone else's lunches.)

Computer Science 223: Randomized Algorithms, Michael Mitzenmacher

  • I remember this course being explicitly pitched as "a first 'graduate' theory course for advanced undergraduates". I also remember it being approximately half undergraduates that I recognized personally.
  • It was pretty much what you'd expect given the above. (As it turns out, it was a reasonable course for all of those people to end up in.)
  • project: Artificial Generation of Power-Law Graphs

Computer Science 225: Pseudorandomness, Salil Vadhan

  • I expect from first principles that this was a good course, and yet somehow I seem to have approximately no memory of it at all.
  • It's possible that this is due to spending an awful lot of time on...

Teaching Fellow, Computer Science 161: Operating Systems, Margo Seltzer

  • I plausibly learned a comparable amount from teaching this class as I did from taking it (which was a lot!).

note: I think that the option of taking more than four courses in a semester is under-considered by the general population, but I think that the option of taking fewer than four courses is extremely under-considered by the audience that has read this far.

I was pretty happy with the choice to do only three this semester, given that I was a TF for CS161 and also helping to run a 100-member student organization.


(jr. summer)

Internship at Jane Street, New York


(sr. fall)

Computer Science 91r: Supervised reading and research, advisor: Margo Seltzer

  • 91r is an administrative designation for "I'm going to do some extracurricular research work and get a professor to sign off on it".
  • In this case, the research was the thesis I would have been working on anyway. If I was thinking properly, I would also have gotten a 91r onto my study card in the spring, since it would have been free and increased my GPA slightly.

Computer Science 134: Networks, Benjamin Golub and Yaron Singer

  • Given that my CS 223 final project was a survey of network structure theory, and that I was simultaneously researching the same for my thesis, this course was unnecessary (though easy).
  • For a computer scientist with absolutely no prior introduction to networks, it might be a nice first course, if a bit basic.
  • Even without prior experience with the material, I expect I (personally) would have preferred a more rigorous treatment.

Computer Science 263: Systems Security, James Mickens

Economics 2099: Market Design, Scott Kominers

  • Scott is a brilliant economist, an extraordinary mentor, and among the absolute best of teachers I know. (I'm also glad to call him a friend.)
  • Anyone with coursework even somewhat resembling mine would be making a mistake by not taking Ec 2099. (Note the lack of any other economics coursework above.)
  • Very much like CS 261, this course was structured as a field survey and a first course in reading papers for graduate-level students.
  • Scott's introduction to market design was so thorough and engaging, it launched my own career as an independent research economist.

Spanish Aa: Beginning Spanish I

  • This was the easiest way to fulfil a gradautation requirement.
  • The course itself was amenable to the strategy of cramming for each quiz over breakfast, plus appearing to pay attention for the three hours/week I was required to show up in person. (Some students evidently found it difficult to do one or both of these.)

US and the World 35: Dilemmas of Equity and Excellence in American K-12 Educaion, Kay Merseth

  • This was a solid general education course, providing a narrower (and more focused) survey of one slice of the American experiment than students will have seen in any history courses before college.
  • It suffered from the issue common to gen ed courses, which is that it trades the possibility of rigor (and being taken seriously by the sort of students who would) for general-interest openness.

Teaching Fellow, Computer Science 50: Introduction to Computer Science I, David Malan

  • The thing I am most proud of from this teaching post was my section lesson on Aaron Swartz.
  • The thing I am second-most proud of was my cold open for "pointer section day" with an adaptation of the St Crispin's Day speech.

Honors thesis: Community-Attribute Models for Bibliographic Reference Information via Dynamic Graph Evolution, advisor: Margo Seltzer

  • On the one hand, I'm happy on the whole with how this turned out.
  • On the other hand, I promised myself in the second(?)-to-last week that I wouldn't think back on the experience fondly, because I was definitely and unambiguously not having a good time. Oh, well.
  • On the third hand, networks are actually really, really important for computational modeling, so I'm glad I spent several months thinking about them while I could spend months plural thinking about things.
  • Margo, saint that she is, made me turn in three chapters before leaving for winter break. It's an indictment of the department that this isn't required of all students.

(sr. spring)

Computer Science 262: Distributed Systems, Jim Waldo

  • Jim Waldo has been there before, and has tried it, and knows why it doesn't work. If the course were just "storytime with Jim Waldo" it would have been among the very best courses in the department.
  • As it was, it was less fun than straight storytime would have been, but still a solid class (with plenty of storytime, thankfully).
  • project: Information-Provenance Clocks

Computer Science 289: Biologically-Inspired Multi-Agent Systems, Radhika Nagpal

  • Radhika is an amazing teacher, and passionate about what she does.
  • What she does is incredibly cool. This is a paper-reading survey course rather than a practical course, but still has some of the coolest subject matter in the department. (And I'm a theorist at heart!)
  • I borrowed like one-and-a-half ideas for my Burning Man art project directly from the class and/or Radhika's other work. (More on this some other time, I suppose...)
  • Seriously, swarm robotics. You know you want it. It is that awesome.

English Cdpr: Devotional Poetry Workshop, Josh Bell

  • (see "English Chcr", above)

Spanish Ab: Beginning Spanish II

  • As above, this was the easiest way to fulfil a gradautation requirement.

Honors thesis: Community-Attribute Models for Bibliographic Reference Information via Dynamic Graph Evolution, advisor: Margo Seltzer