Graduate school in CS provides you with an opportunity to study CS broadly and deeply and to engage in research.
Your classes will move from the foundations that you learned as an undergraduate to the current state-of-the-art in the discipline. As a researcher, you will have a chance to work on exciting projects and problems that will both challenge you intellectually and allow you to contribute to your research community and to society.
There are two types of graduate programs: Master's programs and Ph.D. programs...
A master's degree can provide you with a level of preparation that will allow you to serve as a manager in industry or teach at a community college. Master's degrees come in two forms: A "research" master's and a "professional" master's.
- The research master's is typically a full-time program that takes 1.5 to 2 years to complete. It involves coursework and, in many cases, a research project (often called a master's thesis). The coursework is generally some combination of the next level of the foundational courses that you took as an undergraduate (e.g., algorithms, systems, programming languages) and elective courses. The master's project or thesis is usually a well-defined project that can be done in about a year.
- The professional master's also typically takes about 1.5 to 2 years in a full-time program, but many people pursue these programs part-time while they're working. Some employers have arrangements with local universities to allow employees to take just one or two courses per term, often in the evening.
A master's program typically charges tuition but there may be some opportunities to get your tuition reduced and earn a stipend through a teaching or research assistantship. Funding is more common for research master's students than for professional master's students.
Admission to master's programs is generally less competitive than for Ph.D. programs. However, some Ph.D. programs do not have an explicit master's track. Instead, those schools admit students to the Ph.D. program and typically award a master's degree in the second year of the program. Some students may choose to leave the program at that point with the master's degree while others will continue on for the Ph.D.
A Ph.D. program typically takes 5-6 years to complete for a student entering graduate school with a bachelor's degree. The Ph.D. program involves both coursework and original research. The coursework varies from school-to-school. At some schools, it is a few required courses. At other schools, it may be a few years of coursework to provide you with both breadth and depth in the field. In some Ph.D. programs, you'll get a master's along the way for completing a certain subset of the requirements whereas other Ph.D. programs skip the master's entirely.
The main part of a Ph.D. is research in an area of your choosing. You will work with your research adviser on new and challenging problems; you will present and publish your results in conferences and journals; and you will become a leading expert in your field of study. Ultimately, you will write a dissertation that describes your research in detail.
Typically, a Ph.D. student gets tuition waived and receives a stipend that is sufficient to cover the cost of living. This stipend can come in the form of a teaching assistantship (grading and running recitation and lab sections of undergraduate courses), a research assistantship (often paid for by your advisor's research grant), or a fellowship (a stipend paid by your department or some private foundation or federal agency). In most cases, any of these will pay enough to cover your living expenses.
A Ph.D. provides preparation and training that are needed for research in academia and industrial and government research labs. In addition, many product development groups in industry seek Ph.D.s. Indeed, in some sub-disciplines of computer science, many Ph.D.'s choose to work in advanced development positions. Currently, more than half of new Ph.D.'s in computer science end up working in industry or other non-academic labs.
Here are some frequently asked questions and our responses...
Q1: Are there financial benefits to going to graduate school?
A1: Although our field is changing rapidly, current data suggest that a new master's student is likely to earn $15-$20K more per year than a new bachelor's student. In industry, a new Ph.D. may earn about $30-$50K more per year than a new bachelor's student. But, keep this in mind: Imagine that Alice and Bob both graduate with bachelor's degrees but Bob goes immediately to work while Alice goes off to graduate school. Two years later, Bob's salary has increased over his initial starting salary. If Alice now joins Bob's company with a master's degree, her salary might not be that much higher than Bob's. The jury is out on the overall long-term financial advantages of a graduate degree. The bigger difference is likely to be the kind of work that you can do with a graduate degree (e.g., management and research).
Q2: What are the advantages or disadvantages of going to work for a few years and going to graduate school later?
A2: This is pretty common. Some people graduate from college with a clear picture of the kind research that they want to do in graduate school. But if you don't, then going to work for a few years may give you opportunities to explore new areas and find something that you're excited about. Generally speaking, graduate admissions committees in computer science range from neutral to favorable about work experience after college. If you plan to continue for a professional master's degree, work experience is a big plus. On the flip side, it can be harder to go back to the student lifestyle once you've been in the workplace and perhaps have financial, family, or other responsibilities.
Q3: If I'm not interested in a career in academia, is there a reason to pursue a Ph.D.?
A3: More than half of all new Ph.D.'s in computer science work for companies, government labs, or other organizations. Some companies have research divisions that require a Ph.D. People in those labs work on research that might benefit the company in the long-term. Many of the "cool apps" that you use today came out of corporate research labs years ago. Researchers at these companies often publish papers, attend research conferences, and interact with professors as research peers. In other cases, Ph.D.'s work closely with software developers, but are often the resident experts in their particular area.
Here are a number of essays and tips that we think are particularly useful to students considering graduate schools and careers in computing research.
- Advice for Undergraduates Considering Graduate School, Phil Agre
- Preparing to apply and applying to Ph.D. programs, Philip Guo (University of Rochester)
- Why Pursue a Ph.D.? Three Practical Reasons (12 minute video), Philip Guo (University of Rochester)
- Applying to Graduate Schools in Computer Science, Mor Harchol-Balter (CMU)
- Advice for Undergraduates, Michael Ernst (University of Washington)
- Advice for Prospective Research Students, David Evans (University of Virginia)
- How to Succeed in Graduate School: A Guide for Students and Advisors, Marie desJardin (University of Maryland Baltimore County)