Thinking about Graduate School?

Masters vs PhD Programs

Your undergraduate degree gives you introductions to many different areas of computing. If you want to develop greater expertise and delve deeper into some of these areas, then you may want to consider a M.S. or Ph.D. program. What is the difference?

  • In a master’s program, you take additional computing courses that are more specialized or go into greater depth than your undergraduate courses. Toward the end of the program, you may specialize in a particular area of computing (e.g., databases, graphics, networking, etc.) and develop special mastery of that area. Most people complete a master’s program in 1-2 years.

  • In a PhD program, you take some courses — mainly ones you choose to round out your knowledge in your area of expertise, and that will help you in your research. Then you work with a faculty advisor to solve an open (unsolved) research problem. Without a masters degree and including the coursework, the average time to complete a PhD program is 5-6 years, though at many schools, this includes getting a master’s degree.

    Your research potential is the most important factor for PhD programs, so if you are interested in pursuing a PhD, the best strategy is to (i) do good work on research projects with undergraduate faculty members, (ii) work with those faculty members to get a paper published about your research, and (iii) get those faculty members to write recommendation letters for you for grad study in which they highlight your research.

    We’re told that less than half of the people who receive PhDs end up becoming professors. The majority get hired by research labs or by companies like Google, IBM, and Microsoft, where they continue to conduct research in their area of expertise.

Paying For Grad School

What most people don’t realize is that full-time graduate students in computing usually get paid to attend graduate school, in either of two ways:

  • With a teaching assistantship (TA), your department pays you to grade, hold tutorial sessions for, or even teach undergraduate courses. On the positive side, this lets you try your hand at teaching, and if you like it, you can make a career of it. However, if you are in a PhD program, every hour you spend grading, preparing for class, and teaching class is an hour not spent on your research. If you are not disciplined, this can make it take longer to finish your program.

  • With a research fellowship (RF), you get paid to work at solving a research problem. The payment usually comes from a grant, so either you have to apply for the fellowship or your advisor has to have a grant. In the ideal case, the fellowship pays you to work on your research problem!

Both a TA and a RF cover one’s tuition, fees, and pay a stipend that’s usually sufficient to cover room and board. For example, at one nearby university, the stipend in 2008 was $24,000 to $28,000 (including health insurance), depending on your year and experience. You won’t get rich, but you won’t starve. You also are not required to begin paying back any student loans, so long as you remain enrolled as a graduate student.

Graduate programs in computing generally require the GRE basic test; some may also require the CS subject test. If you are interested in graduate school, you should plan to take both in the fall semester of your senior year. Don’t worry if you don’t do well on the subject test — you are competing with students who have completed their master’s degree, and are now trying to get into PhD programs. GRE practice tests and other materials are available online.

Choosing A Graduate Program

So if you are interested in grad school, how do you choose a school? Here’s a strategy for those interested in the PhD:

  1. Make a list of the computing-related areas in which you are most interested. If you’re not strongly interested in any particular area, make a list of all the areas, and then strike those you know you are not interested in, to narrow the field.
  2. Look at conference proceedings and journals for the past 3-4 years in the area(s) you are interested in; identify faculty who are regularly publishing at those venues, and note their schools.
  3. Check out those schools’ websites, and look for a research lab or group in that area. If there are not multiple faculty working in the area, eliminate that school from your list (unless there’s some compelling reason not to). You generally want multiple faculty because that gives you several people from whom to choose your advisor, and multiple people with whom to discuss ideas. Advisors can leave a university, or retire, or … so you’re better off going to a school where several people could be your advisor.
  4. Contact graduate students who work with those faculty, to see how those faculty are to work with. Ask the students: if they had the option to do it again, would they? Use that feedback to eliminate some of the schools.
  5. Consider any geographic factors that are important to you. For example, if climate or distance from home matter to you, you may be able to use factors like this to eliminate some schools.
  6. Talk to your academic advisor, or another faculty member at your undergraduate institution. He or she may have helpful insights to share. Tell them what you are interested in, and ask them to put you in contact with alumni who are studying that subject in grad school.
  7. Look over the school’s rankings in computing. Some rankings to compare are:

    You may want to eliminate schools whose departments are consistently ranked very low, unless there is a compelling reason to keep them.

  8. If possible, visit the remaining schools and meet with the faculty and students, to get a feel for the people and place. Contact the faculty members ahead of time and make an appointment to meet with them. Do your homework ahead of time, so that you can talk intelligently with a faculty member about the kinds of research he or she is doing. If you can convince them that you are a student worth admitting, you will have an advocate there.
  9. Apply to a “spread” of the remaining “acceptable” schools — a few “top” schools, some “medium” schools, and some “safety net” schools.
  10. Go to the highest ranked school that accepts you!

Graduate schools where Calvin CS grads have been accepted include Indiana, Kentucky, Michigan, Michigan State, MIT, North Carolina State, Ohio State, Purdue, Rochester, Stanford, Texas (Austin), USC, Utah, Waterloo, and Wisconsin (Madison).

For More Information

For more insights (mostly specific to Tier-1 PhD programs), check out this article by Mor Harchol-Balter from Carnegie Mellon University.