Should you do an MS in Computer Science?


After spending four years at Columbia working toward a BA in Computer Science, I spent an additional year toward an MS, also in Computer Science. I'm still here now, pursuing a PhD in ... Computer Science. I know, not the most exciting personal history so far (although I promise I also double majored in Music as an undergrad, so it's not all CS).

It's that fifth year I want to focus on for today's write-up. A lot of my undergrad friends tell me they're interested in pursuing an MS like I did, and ask me for advice on whether they should do it. This question comes up frequently enough that I figured it's worth writing my opinion down. (If I told you to read this because you asked me, I promise it's not because I don't want to talk to you -- it just gives us time to talk about more things sooner xD).

Disclaimer: any advice I give here is purely my own, and has not been sanctioned by any university representative or faculty member. I'm only making this article public because some might find it useful. As with any advice, take everything I say with a grain of salt, and be sure to weigh it against the advice of others.

What does getting an MS involve?

MS stands for "Master of Science". An MS is a postgraduate degree, meaning people typically pursue one only after having already obtained a Bachelor's degree of some sort, whether that's a BA, a BS, or something else. It doesn't seem to really matter exactly what kind of Bachelor's degree you have as long as you have one, although if you haven't had any prior in education in the field you're studying, you might have to take some classes first before you're allowed to start your MS.

An MS is commonly misunderstood as a less demanding version of the PhD, or even a necessary stepping stone toward it. Yet there are a number of distinctions between these postgraduate degrees and the programs that award them. The most simple is that is that doing an MS is about taking classes, while doing a PhD is about doing research. In fact, many PhD programs will first reward you a master's degree of some sort just for completing their course requirements, before later rewarding you with the doctorate degree for completing your research. Another difference is that PhD programs are typically funded in some way or another (meaning you'll be paid to do research and take classes), while MS programs are usually not -- with some exceptions, most MS students need to pay their way through the program. Finally, an MS usually takes only one or two years to obtain, while a PhD can take five or more years.

MS Express

I applied to SEAS through the MS Express application, which is only available to recent graduates from Columbia's undergraduate schools. The immediate benefit of applying through the MS Express is that you don't need to submit a GRE score. Anecdotal evidence and advice I've heard also suggest that the MS Express greatly increases your odds of getting into a program that's otherwise fairly competitive. Another benefit from applying through the MS Express is that you are eligible for advanced standing for courses you took as an undergrad (details below).

CS MS Requirements

Each MS program is different, so my thoughts here primarily concern the MS program offered by the Computer Science department here at Columbia SEAS (School of Engineering and Applied Sciences). There may be similar programs offered at other schools, in which case pick and choose the relevant advice (if any) from here.

You should always check in with the department website for the MS program's degree requirements, but these are some highlights of the requirements I had to complete (they're the same for both MS and MS Express):

  • At least 30 points (academic credits) of eligible CS classes (most courses are worth 3 points)

  • A breadth requirement, which required at least 1 course from each of the following fields:

    • AI and Applications
    • Systems
    • Theory
  • At least 2 6000-level (graduate level) courses

  • Track requirements

PDL Requirement

In addition to my department's requirements, I also had to complete SEAS's Professional Development and Leadership (PDL) requirement. Spanning over the course of 10 lecture-long units, this "class" aggressively prepared me to interview for industry positions. Units include the required workshops on resume and cover letter writing, in-person communication, and "social media" (using LinkedIn). PDL also offered a wide variety of electives, whose topics ranged from using Bash and Python Flask to managing sleep and stress to wine and cheese tasting.

I can't say I gained much from the PDL workshops I went to, though I did enjoy the session on Ethics and Integrity, which was well-delivered and at least tried to be thought-provoking. I just didn't appreciate how PDL assumed I was desperate for an industry job. The PDL office did try to accommodate my academic aspirations, allowing me to substitute some PDL requirements with teaching workshops offered by the Center for Teaching and Learning (CTL) at Columbia, but the only way I've heard of MS students getting out of the PDL requirement all together is by already having a full-time job.

Why did you pursue an MS?

Everyone comes from a different background, so for each person, an MS might or might not be worth pursuing for different reasons. Ultimately, I think it made sense for me, but that doesn't mean it makes sense for everyone. Here were the circumstances I found myself in:

  • I took a lot of classes as an undergrad that I could count toward advanced standing. This is the main advantage of doing the MS Express. The rule is that you can't have used any of these courses toward your undergrad degree requirements, and you can only import up to 15 points.

    Since I got a BA as an undergrad, I had substantially fewer degree requirements than my peers getting a BS. This meant that just by taking a course load comparable with my peers', I ended up with more "spare" classes I could count toward the 30-point requirement for the MS.

    In fact, I had enough spare classes to take advantage of all 15 points of advanced standing available, leaving only 15 points of classes left to take. Split 6+9, this made for two easy semesters of classes that took the place of what could have otherwise been a gap year.

  • I was interested in pursuing a PhD, but wanted more research experience before committing and applying. The MS Express gave me an opportunity to explore what life as a full-time PhD student might be like, while building the credentials to become one.

    Compared to my peers who started coding in high school, I was something of a latecomer to computer science. I learned my first programming language in my freshman year on a whim, and didn't really commit to studying the subject until later in my sophomore year when I declared. Though I dabbled in research my junior year, I didn't really do any research related to my current field, programming languages, until my last semester in college.

    As an MS student, I only took a single class each semester, and fulfilled the rest of point requirement using research project credits. Those two semesters shaped the current direction I'm taking my research: I started a new project about real-time systems semantics with Stephen Edwards, and began learning about systems verification from my now-adviser Ronghui Gu. My experience as an MS student living off-campus also informed my work habits: that year, I didn't have my own office space on campus, so I ended up doing most of my work from home. And as much as I enjoy working from home, I grew to appreciate the importance of working in close proximity to my researcher adviser and peers. I like to think that the time I spent on my MS was productive toward helping me grow as a researcher.

  • I was fortunate to be financially supported by the CS Department's CA Fellowship. This fantastic opportunity doesn't seem to be widely advertised, but some details can be found on our department's Instructional Assistant bulletin.

    The CA Fellowship waives tuition for up to 12 points of classes, in exchange for 2 IA units of work (or 6 points for 1 unit). 1 unit basically means TAing for 1 class, although if you do double the workload of a regular TA for a single class (on paper, 10 hours/week), that can count as 2 units. On top of that, Fellows still receive the same compensation as regular IAs ($2500/unit).

    The catch is that you need to have taken CS classes at Columbia before, and are only going into your first or second semester as an MS student. It's also very helpful to have at least one member of faculty, ideally whose class you'll TA, actively vouch for you to receive the Fellowship. I was lucky to have all these factors work out for me, so I was able to take classes without the burden of tuition. It also helped that I actively enjoy teaching, so my teaching obligation only obliged me to do something I probably would have signed up for any way.

So... should I pursue an MS?

It really depends on your circumstances, and your reasons for wanting to pursue the degree. Here are some common ones I've heard and thought about:

Good reasons to pursue an MS

  • You want more opportunities to do research beyond undergrad, without committing to a PhD. If you still have the opportunity to do research as an undergrad, that would be preferable. But if you didn't spend your four years working out of a lab, an MS can be a second chance to do so. I didn't manage to publish a paper as an MS student, but you should if you can.

  • You want to take a gap year without taking a gap year. Some people do a year-long internship. Others volunteer. My girlfriend taught English in a small town in Russia as a Fulbrighter. I also wanted some year-long commitment as a symbolic break beyond undergrad and potential further education, so a yearlong MS made sense for me. This also gave me time to look closely into the different PhD programs out there, figure out which ones I was seriously interested in, and apply to them.

  • You don't have a CS major from a well-known US institution, and want one to stand out to recruiters. This didn't apply to me, but did to many of my MS classmates. I actually know quite a few people who pursued/are pursuing an MS because they majored in Physics, Biology, or even Philsophy, but decided they wanted to formally study CS, for better job prospects in either industry or academia.

  • You aren't a US citizen, and need student status to extend your US visa. Again, this didn't apply to me, but I've heard of a few international students got unlucky with the visa lottery, and wanted a second chance to stay in the US for work.

Questionable reasons to pursue an MS

  • You just want to take more classes. Frankly, this was what got me interested in the MS in the first place. As an undergrad, I maintained this long list of classes I wanted to take, and to this day, many classes remain. But that list is ever-growing, because by the time you think you've crossed off the last class, each class you've taken will have piqued your interest in a dozen more. And as the classmates you've become friends with all move on and graduate, keeping up with those classes on your own only becomes harder. Rather than dealing with the stress that comes with assignments, projects, and exams, you're better off learning what you missed by doing pet projects outside of work.

  • You already have a CS/STEM degree from Columbia, and you're going into industry, but want better credentials. Every piece of advice I've heard about this suggests that an MS degree does nothing to add to your resume. If anything, it only takes up space on your resume you could have spent talking about something recruiters might actually care about.

  • Your parents told you to. I'm only half-kidding -- I knew a few people who got an MS just because their parents wanted them to have the degree. It's not up to me to dictate how much of a role your parents should play in your life decisions, but there are far better and cheaper ways to make them proud (work at a successful company, start your own, pursue something you genuinely love, etc.).

  • You still have Dining Dollars you didn't spend as an undergrad. Uhhhhhhh go work for any big tech company that doesn't begin with 'A' and they'll feed you free food worth many times the money that your frugality saves you.

Conclusion

While I don't regret pursuing an MS, I don't think it's the right choice for everyone. If it's true that most people who study CS are doing so just to have an edge in the job market, then an MS is probably not the right choice for most people. I sometimes even wonder if it would still be worth it if it weren't for my deliberately optimistic outlook on education.

A year spent toward an MS may not seem like a lot compared to the four spent in college, but it can have a big impact on your career ahead. As for how my MS will work out for me, that remains to be seen -- as I write this, I'm only four months out from receiving the degree. So my advice can and should only carry so much weight here. Seek out the perspective of others, especially those professors from whom you would ask for a letter of referral. If you can convince them that an MS makes sense for you, then chances are it does. But if not, that might be a sign to look beyond school for your life after college.