Well this is an interesting situation. Just a month ago I announced that I was adding a computer science degree, so that I am now double majoring in math and computer science. The title of the post, after all, is “Computer Science AND Math.” Given the circumstances at that time, I think it was a good decision. My work experience had been mostly in software, and a CS degree from Cornell should look pretty good. In addition, I was wanting a more practical skillset.
In the past week, however, things have changed. I received and accepted an internship offer from my dream workplace, based on my background in mathematics and not in CS (though my prior CS experience was a plus). Based on this new situation, I have considered dropping the CS major (next semester) and taking more advanced math:
- The CS degree has some strict course requirements, and I am afraid that if I go for the degree, I may be forced to skip certain math classes that I really want to take. For instance, I may have to take a required CS class next semester that has a time conflict with graduate Dynamical Systems, or with Combinatorics II. And given that I am currently a second-semester junior, I don’t have that much time left at college.
- Even this semester, I am taking Algorithms, which meets at the same time as graduate Algebraic Topology. While Algorithms is pretty interesting and the professor is excellent, I am already very familiar with many if not most of the algorithms, extremely familiar with the methods of proof, and I feel that the experience is not as rewarding as possibly taking Algebraic Topology with Allen Hatcher, who wrote the textbook on the subject. I feel that I could learn algorithms at virtually any time I want. But learning algebraic topology with Allen Hatcher is a once-in-a-lifetime opportunity that I am afraid I am missing just because I want to get a CS degree to look good.
- Even not being a CS major, I will still be taking some CS classes out of curiosity. However, these classes will no longer feel forced, and will not restrict me from taking the higher level math courses that I want to take.
- My risk strategy for grad school is different now because of the internship. In the past, I would have been willing to take a decent grad school in math or really good job. (I would prefer grad school over getting a job, but of course, a good job is better than a mediocre grad school.) However, now that I have my dream internship, I am willing to play the grad school game with more risk.
- But whether for grad school, trading, or just for curiosity, I would prefer taking advanced (graduate) math classes over undergraduate CS classes. In a sense, my taking of the CS degree was a hedge bet, as I wanted to reduce the possible cost of the worst case scenario. I knew that it would directly inhibit my ability to take advanced math classes via class time conflicts, but the thought was that if I couldn’t get into a good math grad school or get a good job using math, at least I would have a CS degree from Cornell. But, in this new situation, I think the risk is significantly reduced and the hedge is no longer necessary.
Interestingly enough, the primary motivation for dropping CS wouldn’t be to slack off, but to be able to explore more advanced math. (At least, that’s what I tell myself.)
I think this might be the second time in my life where I have had to make an important decision. (The first time was deciding where to go to college, and I certainly think I made the right choice there.) Unfortunately, I really can’t be both taking as many interesting math courses as I can, and at the same time be pursuing a CS degree. As much overlap as there is, I can’t do both. In an ideal world this might be possible, but not currently at Cornell.
So instead of the idea of having math and computer science, I am now having to think in terms of math or computer science. I am currently in favor of going with math, but I am not completely sure.
Edit: Thanks for the discussion on Facebook.