Skip to content

MSCS

A masters of science degree in computer science can mean two very different things:

  1. The research MS where the student works closely with an advisor on a research project that culminates in a thesis and ideally a few papers. This kind of student is generally paid as a TA or RA and can be expected to be a significantly stronger writer, researcher, and public speaker after finishing the program. Most of these students have a bachelors degree in CS. It is understood that any strong research MS student will be encouraged to pursue a PhD.
  2. The coursework-only MS is best viewed as an extension of the undergraduate degree. The student pays tuition and does not work closely with a professor. A significant number of these students do not have a BS degree in CS, but rather are using the MS as an opportunity to get up to speed and to become credentialed in a field that has strong job opportunities. These students emerge from the program knowing more than they did before, but they do not generally get much training in public speaking or writing and they do not generally leave the program with the added degree of maturity that we see in MS students who have finished a thesis. It is not expected that these students will continue on for a PhD.

Some CS departments specialize in one of these, others (such as mine) support both.

Anyway, here’s the thing, folks. The large number of coursework-only MS degrees that we are collectively granting is eroding whatever prestige and credentialing value was previously associated with an MS. To put it bluntly, people have caught on. For example, see this short essay by Aline Lerner (or, see it at Forbes if Quora’s stupid modal popup annoys you). The punchline is:

Whereas MS degrees used to be a means for departments to begin vetting future PhD students, I believe that the purpose has, in some ways, shifted to be a cash cow for the university in question.

The thesis is that job applicants with MS degrees are often weaker than those with BS degrees. I see similar effects here at Utah where I’m often the instructor for a mixed graduate and undergraduate operating systems course. The best MS students and the best undergrads are extremely strong. However, the median-quality MS student is weaker than the median-quality undergrad. A lot of this is caused by the MS students who don’t have a CS background: they simply are not ready for a serious upper-division CS class. I used to really hate that we mix the grads and undergrads in a single course but at some level it’s not that bad since it avoids the problem Aline alludes to where the grad-level course can easily end up being weaker than the undergrad version because it (often mistakenly) assumes that the students already understand the fundamentals.

The “cash cow” comment refers to programs where the revenue from an MS program exceed the costs. University finances are hard to untangle but it sounds perfectly plausible that many course-based MS programs are indeed being used as cash cows. Of course the extra money does not turn into profits; rather, it is used to shore up financial weaknesses elsewhere. The problem with the cash cow model is that it creates an incentive to maximize the number of students in the program, and this is clearly not always in the students’ best interests.

Last week, while talking to an undergrad who intends to pursue an MS, I realized that probably none of what we’re talking about here is apparent to the average student applying to MS programs. So I advised her to use the following strategy:

  1. Get some solid research experience as an undergrad.
  2. Apply to a large number of MS programs.
  3. Throw away every acceptance letter that doesn’t offer funding, and consider throwing away each one that offers just a TA.
  4. Choose an appropriate school from the remaining acceptance letters.

This will, I think, give her good odds of landing at a place where she can get some real advising rather than just taking more classes.

Of course I can’t foresee how this all will play out, but it is certainly interesting that Udacity and Georgia Tech are making a grab for a much larger share of the course-only MS market with their recently-announced $7000 online MSCS. If this works out for them, it’s going to cause a real thinning out of the cash cows.

UPDATE:

There’s lots of good discussion on HN and I want to respond to, and add, a few points:

  • A number of people have mentioned situations in which a course-based MS makes sense: (1) your employer values it and (2) the classes are useful. Of course these are absolutely valid reasons to get a course-based MS, provided that the value exceeds the costs in terms of your time and money.
  • Wilfra mentions “disdain for people who don’t have a BS CS who want to get an MS CS.” It was certainly not my intent to express disdain for people who follow this path! Many people pull it off admirably. However, it is a difficult path to follow because it skips all of the introductory programming classes. This ends up getting some people in over their heads. There are many ways to avoid that problem such as programming on your own, taking MOOCs, etc.
  • At many institutions, the responsibility for not getting in over one’s head is placed largely on the students. While this is in some ways admirable, it does lead to some amount of unnecessary suffering.
  • One way to understand an MS program is to see how carefully it is firewalled off from the BS and PhD programs. The more isolated it is, the more likely it is to be a cash cow program. Also, the more degrees are granted each year, the more likely it is to be a cash cow.
  • Matt Welsh notes in comment 12 that international students often use an MS program as a gateway to getting a PhD in the USA. Also, it is used as a step towards working here.

Thanks for the discussion.

{ 28 } Comments

  1. Phil Miller | May 29, 2013 at 9:50 am | Permalink

    I don’t know if it helps, but Illinois CS distinguishes the two kinds of programs with two different degrees: MS in CS for the research program, and MCS for the coursework program. Most of the MS students receive funding andtuition waivers, while I’m not sure if the MCS students are even eligible for support.

  2. Alex Groce | May 29, 2013 at 10:04 am | Permalink

    I think the larger problem for your student is if this continues to devalue the MS in CS. Here, we have both kinds of masters students, and some people shift back and forth, but as far as I can tell, most of either pool do have undergrad degrees in CS (or did some other engineering, but took enough CS to have the background, or spent time as working programmers). Are “we” putting out more MS grads / year now? If so, the combination of that + the two kinds may seriously devalue the MS for people not headed into research. There’s also a good argument for an educational device to let folks with a degree in something else switch over to CS…

  3. bcs | May 29, 2013 at 10:18 am | Permalink

    The advice I’ve received is don’t pay for your own MS. If someone else isn’t willing to pay for it, don’t bother.

  4. regehr | May 29, 2013 at 10:38 am | Permalink

    Hi bcs, I think that is great advice for anyone who wants advising and mentoring.

    Alex, we get lots of people with random engineering degrees but they’re still often blown away by OS unless they’ve done some programming at work or on their own.

    Just to be clear, I totally agree that it’s great that we have ways to train up non-CS people who want to change career paths. It’s just not clear that the course-only MS as it currently exists is the right way to accomplish this.

    Phil, I think that kind of distinction helps to a limited extent. The problem is that there are just a lot of people out there who don’t have time to keep up with the latest degree titling from the top 50 CS programs.

  5. Doug | May 29, 2013 at 11:10 am | Permalink

    This was sadly my experience at USC

  6. Abe | May 29, 2013 at 11:14 am | Permalink

    I’m currently enrolled in an MS in CS. I earned a BS in Economics (with Honors) but after working for a year, realized that I would prefer to build things, make things, develop. I decided to pursue the MS in CS as a signal of interest and acumen. After I complete the MS in CS, I *hope* that an employer will look at me as something more than *just* a BS in Economics…though I recognize I won’t be considered the equal (well, maybe if I’m lucky) as a BS in CS.

    Without some academic CS credential, I fear that most recruiters will discard my resume without a second glance–they won’t necessarily look at me hard enough to see the projects I’ve been working on in my spare time. So I hope that with a decent MS in CS under my belt AND projects I’ve developed on my own time, I’ll catch the attention of recruiters and hiring managers and land a good job.

    Am I wrong? Would I do as well or better to just focus on learning languages, platforms, and frameworks on my own and developing projects or contributing to others’ projects?

  7. Alex Groce | May 29, 2013 at 11:42 am | Permalink

    “Alex, we get lots of people with random engineering degrees but they’re still often blown away by OS unless they’ve done some programming at work or on their own.”

    Right, I was saying that the non-CS engineers I’ve run into have all been (before grad school) good coders with serious experience. But this is probably partly limited exposure, and I’ve mostly worked with people with undergrad CS degrees, or long periods as developers in industry before doing the MS. Not the same population. I am not claiming the average “engineer who has done a bit of MATLAB or FORTRAN” is ready for OS. They’re not.

  8. Eric Betts | May 29, 2013 at 11:48 am | Permalink

    I think you’ve summed up the difference between the academic vs professional MS degrees very well. At the university I attended (Oregon State) they were differentiated by name: Master of Science vs Masters of Engineering. Also, the MEng students were also not allowed to have TA/RA positions.

    I think the only difference between what you wrote and my own experience is that I did my undergrad in CS, and originally wanted to go for a Ph. D, so I started as an MS student, then realized that academia wasn’t for me. I’d taken the theory classes a Ph. D. student would taken, but used them to meet the MEng requirements so I could exit quickly and without a research paper or project. Compared with the descriptions you gave, this makes me somewhat chimeric.

  9. Alex Groce | May 29, 2013 at 12:00 pm | Permalink

    Hi Eric,

    I’m actually an assistant prof. at OSU right now. I was going to say that a number of people who are CS undergrads here start out MS and shift to MEng — often, in my experience because they have a good job lined up and want to finish quickly. So the line seems more fluid than some places, though the funding restrictions also make it more solid than some others.

  10. Archana S | May 29, 2013 at 1:06 pm | Permalink

    What would you suggest to a non-CS undergrad doing a Masters in one such cash-cow program where there are hundreds of similar students? How does one get the maximum out of it?

  11. regehr | May 29, 2013 at 1:13 pm | Permalink

    Hi Archana, that’s a great question, but it’s very hard for me to answer without knowing more about you and your program. But here are a few ideas:

    1. Attend seminars, reading groups, etc. Any half-decent CS department will have a steady stream of visitors giving interesting talks.

    2. Don’t even try to get more out of the program, but rather contribute to open source projects, participate in online communities, etc.

  12. Matt Welsh | May 29, 2013 at 1:16 pm | Permalink

    While I agree in general, don’t forget the value of an MS in the USA for students outside of the USA wanting to come here to get into a PhD program. I know many CS PhD students who made their transition to the US by way of a Master’s program. It’s a valuable tool.

  13. regehr | May 29, 2013 at 3:29 pm | Permalink

    Matt, good point, I’ve updated the UPDATE to discuss this a bit.

  14. Ricky | May 29, 2013 at 4:00 pm | Permalink

    I’ve been coding commercially since the 1970’s. I’ve always appreciated the useful contributions of the academics and theoreticians.

    What I’ve been seeing lately is a shift in requirements. If you’re going to work for a pure software house like Google or Microsoft then a pure education in CS can be spot-on.

    But even in these software-intensive places, expert “Domain knowledge” in web protocols, telecom, marketing, advertising, and standard business management will give you an advantage.

    Out in the world, if you want to work on Wall Street’s program trading then a knowledge of brokerage and investment law will help. Think of the background you’ll need to succeed in bioinformatics: genetic analysis and all of that.

    CS plus something-useful is a smart path. Look at the video-game and special-effects worlds: art and science in a complex dance. Can you also be an artist or designer? Compose music? Compute music?

    Likewise with drones and other military devices. Lots of specialized knowledge you may as well start on in school.

  15. regehr | May 29, 2013 at 4:42 pm | Permalink

    Ricky, your advice agrees with what I often tell students, that an ounce of proactively learning and doing things that matter is worth a pound of coursework.

  16. George Hahn | May 30, 2013 at 1:19 am | Permalink

    Hi John,

    I would love to hear more of your opinion on the Coursera + Georgia Tech online MSCS. Do you think a traditional MS worthwhile for a young student who wants to make a career out of programming vs alternatives like this?

    Thanks for your time, cheers!

  17. Peter Desnoyers | May 30, 2013 at 8:04 am | Permalink

    I spent 15 years in industry (with an MSCS) and most of my teaching at Northeastern is the MSCS operating systems course. I see the following values to a professional MS:
    1. career change. This is the classic domestic night school MS – if you don’t have an undergrad CS degree, get a grad one. It was much more popular years ago when few people had undergrad CS degrees, and I think it provides a good return on your investment of time and money, especially if you get employer reimbursement.
    2. Extended undergrad – e.g. I got mine in a BS/MS program. The opportunity cost is low, as you’re sacrificing a year or two at the low end of your earning potential, while your living costs are low. You learn good stuff, it gives you membership in a more talented pool, and gives access to slightly more senior positions when you graduate. (important, because pay/responsibility/etc. compounds over time) It probably pays for itself, and I certainly don’t regret it.
    3. Immigration. Getting an F1 visa to an MS program with co-op is probably the most reliable route to work certification in the US. Expensive (4 semesters at Northeastern = $80K) but undoubtably worth it. Note that the F1 requirements basically rule out online classes, at least for the majority of credits taken.

    In my opinion the only time it might be worthwhile for a US engineer with a BSCS and >2 years experience to get a professional MS is during an extended period of unemployment, when the opportunity cost is low and you don’t have any other way to advance your career. As you gain seniority whatever degree you have loses significance in contrast to accomplishments since then, and you would be better off spending the time and effort focusing on your career at your current job, or finding a better one. At least that’s how I looked at it when I was hiring engineers…

  18. regehr | May 30, 2013 at 9:32 pm | Permalink

    Peter, excellent points. I used to run the BS/MS program at Utah CS and I think this kind of degree can make a lot of sense.

  19. Kev | May 31, 2013 at 2:58 am | Permalink

    Here in the UK we distinguish between taught Masters level qualifications by giving them different names:
    MSc = taught
    MPhil/MRes = thesis (but does have the stigma of also meaning ‘failed PhD so submitted for a lesser award).

    Also here the taught MSc is generally considered a valuable bolt-on to a previous BSc. Also, the BSc in a related subject is often an entry requirement. ie. you can’t do an MSc in computer science if your BSc is in something unrelated such as sociology. You probably would be okay if your BSc is in something like maths, bioscience, physics, chemistry, economics however.

    So maybe encourage universities to offer MRes or MS.

  20. Daniel Bingamon | May 31, 2013 at 4:46 am | Permalink

    I had a two-year Computer Programming degree from back in 1980-1982. I’ve run into people with bigger and more modern degrees and I guess it’s where they go for education.
    We learned standard binary and add/subtract/multiple/divide in hexadecimal, learned to read core dumps of computers of that day and those fundamentals seem that many today with full CS degree are lacking majorly in.
    I’ve told a few that they should get their money back.
    Of course growing up with 8/16-bits, jumpers on boards you learn a great deal more about hardware. Todays appliance operators know very little about operational concepts in computers and it you really want to make code more efficient then you know more about the system.
    And please cut back on the copy/paste — it’s embarrassing us — directed at programmers who have forgotten how to write subroutines.

  21. Dave Halsall | May 31, 2013 at 5:04 am | Permalink

    I have a BSc. (UK terminology) in Software Engineering and worked with a guy who had an MSc. in CS. I expected this guy to really know his stuff but found that I was always carrying him because his knowledge and practical experience was so limited. I later found out that he had done a BA in theology and having realised there’s not much practical use for that in industry took a one year conversion course in CS. The truth is he had way less knowledge in the field than someone with a bachelors degree but a higher rated degree. This sort of thing devalues the meaning of a masters degree.

  22. Tim Carmichael | May 31, 2013 at 8:23 am | Permalink

    Interesting read, including the comments. And now, for another perspective. I attended college in Canada for 3 years to earn a diploma in Business Administration and Data Processing (early to mid 1980’s). The course load was centered around business needs (economics, accounting) and programming: BASIC, Assembler, PASCAL, COBOL, RPG.

    When I entered the work force, I fought an uphill battle to show my skill set as least the equivalent of or better than students with a BSCS. My best advice to anyone is: prepare to learn on your own. Teach yourself new languages and concepts, surround yourself with others that can you can learn from, get involved in community projects.

    If you are still breathing, you can still learn.

  23. davidtweed | May 31, 2013 at 12:40 pm | Permalink

    Commenting on Dave Halsall’s comment (#21), it’s slightly more complex than that. In general knowledge of any area there’s both breadth and depth. At least in the UK an MSc is not generally supposed to be as wide as an undergraduate degree, but focussed in some subset of areas going in to greater depth. The reason that they can “also” be used as conversion courses comes down to the degree to which in practice only some areas will actually be called in to use. So in principle a possessor of such a degree might be useful if the areas they work in mostly match what they’ve learned about. The big problem arises is when a job interviewer with a CS-bachelors asks such a person some question in some area and assumes that, whatever the quality of their answer, that applies to the entire range covered in a CS bachelor degree.

    (Arguably I have a vested interest, having a maths BA and a “Theory of Computation” MSc. There’s lots of CS-stuff, such as the way operating systems work, that I don’t know about, but if anyone asked me if I knew that stuff I’d say “no, and no particular desire or need to”.)

  24. Mark Yates | May 31, 2013 at 1:07 pm | Permalink

    I want to put a different perspective on this. I earned a BS in Electrical Engineering, which required some CS undergrad coursed. However, I never worked as an EE. I have been a software developer for over 20 years and decided it might be a good idea to have a degree in the field I work in. So, I am working on an MCS at ASU (coursework only degree as you call it). I am about half way through. Since my BS was not a CS degree, ASU required that I take 3 deficiency undergrad courses in addition to the required grad courses. Even without a BS CS, I have done very well with a 4.0 GPA so far.

    I thought with my software development experience that it would just be a matter of going through the motions to get the degree. I was very wrong. I have learned a whole lot and it has made me a better developer and software architect. There’s more to getting a degree than just the piece of paper. There is a lot to be learned in the process. Anyone who has put in a legitimate effort and earned good grades in a CS program will be much better for it. I am convinced of that, even after 20 years of practical experience.

  25. Mike Riley | May 31, 2013 at 2:37 pm | Permalink

    Interesting and timely for me. I have been a professional programmer for over 35 years and until this latest economic crisis I did not need a degree. I left college way back when to work full time in the middle of my 2nd semester.

    After trying for almost 2 years to get a programming job (March 2009 to December 2010) it became obvious that I needed a degree. So I went back to school full time, at night, which working. I got my AS in Software Development (Valedictorian) and found out my school was cancelling the BS degree.

    This has forced me to switch to a program that is IT and Security to get my BS.

    One of my goals has been to consider teaching, which is yet another reason to get the degrees, but I found out that to teach a BS course I would need to have an MS degree.

    I have always said that my job that I had prior to working at Sun Microsystems (now you know why I was out of work) would easily have qualified me for an MS degree.

    I designed an multi-user / multi-tasking OS that ran on 8086/80286 systems. So of my co-workers designed parts of it as well, but I handled the majority and was senior developer. After they left I maintained 100% of it. I was sole designer of the drivers and File System, as well as many of the libraries and all assembly language modules.

    I also designed a Basic compiler, created an entire language that ran inside a virtual machine on 3 different OSes (think UCSD Pascal more than Java), a debugger, various utilities and libraries, created a utility that allowed Intel compilers to run on our own OS (faster than their development systems), etc.

    They killed the project I was working on shortly before I left that was going to take the OS from real mode 16-bit into protected 32-bit mode, plus change the file system from a flat file system to a tree-structured one similar to UNIX. I left in my 18th years and it is hard to imagine how anyone could do all that I did while staying at a single company.

    I was just recently saying I could revive several of those projects, update them, and turn them into a thesis project using more modern techniques that weren’t available back then.

    Your post gives me some ideas about how to look for a way to do that. I should have my BS by next year, hopefully with a second AS in IT to go with it.

    I never want to stop learning. That was what attracted my to the position at Sun, because I took training classes (on average) every 2 months or so.

  26. vikash Ruhil | June 1, 2013 at 1:42 am | Permalink

    I am totally agree with author statement, I am also an Undergraduate student of CS. I am support this article because i am CS student but this very right and appropriate only guys with proper knowledge need to allow into enrolling for the MS.

    University should have hard criteria and they need focus on statement of purpose during selection of the candidate so that if they are interesting in a research work they need to provide a priority to those students.

    Thanks for such a nice not , also nice advise for Non-CS background students.

  27. Sean McDirmid | June 1, 2013 at 1:58 am | Permalink

    Consider the 5 year BS/MS, as at MIT, but I’ve seen it replicated at a few other schools also. Then you have Europe where 3 year BS degrees are common, but many train up to a masters accordingly (again for a total of 5 years). In these cases, the separated Masters becomes only a tool for those seeking to gain qualifications that they did not really gain in their BS program: (a) those who studied something else and (b) foreigners who already have BS CS degrees that might not be taken seriously in their new host country.

    Universities will really have to figure something out here; there is so much variation these days that I find the Masters qualification not to be very useful without understand the program precisely. The fact that many programs are part-time evening or MOOK’d will make the situation even more chaotic in the future.

    At least the PhD is still safe (coursework for a PhD was a bit easier or comparable to my undergrad, but that is a small part of getting a PhD).

  28. Magnus | June 2, 2013 at 10:09 pm | Permalink

    Hi Mark (comment no. 24),

    What sorts of things are you finding valuable in studying CS that you didn’t pick up in 20 years’ real world experience?