Table of Contents
Graduate School in Computer Science
Thinking about going to graduate school in Computer Science for either a master's degree or a PhD, but you want more information? You've come to the right place!
While we have created a comprehensive page that answers many questions about graduate school in computer science, we hope that you will not find all of this information overwhelming! (Remember how you felt about college when you were in high school?)
Please use this document as a general guide, and discuss your specific circumstances with your advisor.
What is graduate school in computer science?
As a graduate student in computer science, you will embark on a focused study of computer science to master its fundamental concepts, such as designing, implementing, and analyzing algorithms, software, and systems, and to expand on the frontier of computer science.
A typical full-time course load in graduate school is 9 hours. You won't spend as much time in class than as an undergraduate, but most–if not all–of your courses will be computer sciences courses, and you will spend more time preparing for each class. In general, you will work on larger, more independent, open-ended projects as opposed to the homework and programming assignments from undergrad.
As part of your studies, you may also perform research. Research is meant to answer a question. Often, you'll pose a problem or question, propose a solution, implement the solution, and evaluate the solution to see how good it is. Unlike in courses, there often is no defined end point. Examples of research questions are “Does new technique X perform better than existing technique Y to accomplish Z?” and “Can we create a system that does X with properties A, B, and C?”
In graduate school, there are two tracks: the master's degree and the Ph.D.
There are different types of master's programs, which have different requirements. In general, a master's degree requires
- 1-2 years of course work (depending on the program). The structure of courses may vary across programs and even within the same program. Some courses are like advanced undergraduate courses, while others are research-oriented, often involving reading, analyzing, and presenting research papers and performing a research project.
- May include a master's project or master's thesis. A thesis often requires that you perform research, typically for two semesters.
Some master's degrees are specialized to specific subfields of computer science, such as software engineering, video game design, internet or Web technologies.
In some programs, you “pick up” your master's degree along the way to the Ph.D., but that is not always the case; some Ph.D. programs have additional requirements to receive a master's, and some do not have a terminal master's degree option.
There is a lot of variation between programs. This will give you a general idea of what you need to do to get a Ph.D.
- 0-4 courses on top of the master's degree course requirements
- Preliminary or Qualifying exam (also known as the breadth requirement): a test of some kind (oral, written, in classes) that shows that you have mastered a breadth of knowledge in CS
- Dissertation (also known as the depth requirement): new, in-depth research on a topic of your (and your advisor's) choosing. Typically involves 2-3 years of research, writing about and presenting the research in conference papers and presentations, and a final dissertation putting all the work together, with an oral defense.
Who Should Attend
Graduate school is not for everyone. It requires an additional one to six (or more!) years of school, depending on if you go for your master's degree or a Ph.D.
You should attend graduate school for your master's degree if you
- Want to be qualified for more intellectually-stimulating jobs
- Want to earn more than what you can earn with a bachelor's alone
You should attend graduate school for your Ph.D. if you
- want to solve open problems in computer science (or computing problems in other disciplines), such as how to make some process smarter, faster, require fewer resources, etc.
- want a career that requires advanced degrees, such as researchers or professors
- are self-motivated, disciplined, and persistent: these qualities are often more important than raw intelligence or computer science skills
In pursuit of a Ph.D., beyond the coursework and research, you will also learn
- how to communicate ideas, in written and oral forms, effectively
- how to work on new ideas, independently and in groups
Can I Afford It?
Many programs have funding available for Ph.D. students and some may have funding for master's students as well. Funding typically includes tuition and a modest living allowance. The three main types of funding are fellowships (for which no additional work is required), research assistantships (for which you perform research with an advisor), and teaching assitantships (for which you may teach or grade for a section of the class). Programs may also offer other alternatives.
You can apply for fellowships from sources other than the school you're applying to. These fellowships will make your application to a program look even better because they don't need to find funding for you. Some programs may also have program-specific external funding opportunities as well.
The University of Delaware's Graduate Student Association has collected a list of some external funding opportunities.
Should I Go Immediately After College?
That's a difficult, personal decision. There are pros and cons to going immediately after college. If you decide to wait, you should still take the subject GREs during your senior year.
Pros and Cons to Going Immediately
- You're used to the student life (working late nights, having low income)
- The undergraduate course material is fresh in your mind
- You'll finish the degree at a younger age
- You probably have less responsibility beyond school
- You're not sure what you want to do
- Limited real-world experience
Pros and Cons to Waiting
- Motivation: Some people find that they can't do what they really want to do without an advanced degree
- You may be more mature, disciplined, and focused because you know what you want to do and what you do not want to do
- Your company may pay for you to get your master's degree. (But, don't forget about the fellowships available for the Ph.D.)
- Industry experience, e.g., more knowledge of tools and programming techniques, leadership experience, etc.
- You'll miss the big paycheck
- The transition back to doing coursework and homework may be difficult
- Remembering the course material that you haven't revisited in awhile
- You may have more time constraints (e.g., family), but that could make you more focused and more efficient
- You'll complete the degree at a later age
Preparing for Graduate School
You can start preparing yourself for graduate school as early as your first year of college.
With a B.A. in Computer Science, you should be well-prepared for graduate school. While the ideal preparation depends on the program you choose, you should have a solid background in
- programming skills, especially in C++ and/or Java (depending on the program)
- Unix, including basic commands
- Machine organization
- Advanced data structures
- Algorithm analysis
At W&L, these topics are covered in our major's core courses: CS111, CS112, CS209, CS210, and CS211.
In addition, many programs would also like you to know
- Principles of operating systems
- Theory of Computation
- Artificial intelligence
- Programming language design and implementation
- A scripting language (knowing how to write scripts to automate processes makes your life easier)
Do not be overwhelmed by this list. The exact list depends on the program and may not include all of these. Of course, you'll be in a better position to succeed in graduate school if you have a firm grasp of all of these topics, but many people apply to–and get accepted to and succeed in–graduate school without knowing all of these when they begin. You may be required to take the program's undergraduate courses before taking the graduate-level courses, or you may jump right into the graduate course.
I do recommend that you take the Theory course at your undergraduate institution because it's a course that many people struggle with. Having some experience with the material will help you if you take the course or need to know the material for the breadth exam.
You should also take any elective that you think you are interested in pursuing as a research topic in graduate school. By taking the elective, you may confirm your interest in the area or realize that the subject is not for you. You'll also have experience to draw on for your personal statement.
To help you get a feel for what computer science research is and to help you write “previous experience” essays, you should collaborate with a faculty member on a research project–during the summer, as an independent study, or as an honors thesis.
You could also participate in a summer REU (Research Experience for Undergraduates) at another institution or in other programs. Our Research Resources page has more information about other opportunities.
Applications for most CS grad school programs require
- college transcripts
- statement of purpose (what you want to pursue in graduate school)
- GRE scores – the Graduate School SATs
- some schools require the CS subject GREs as well
- statement of previous experience
- letters of recommendation
Schools look at the applications and weigh criteria differently. If you feel that you are deficient in any area, make sure that your letters of recommendation address why that deficiency doesn't mean that you will not succeed in graduate school.
Applications are often due in December and January. You have at least until April 15 to make a decision on where to go.
How To Apply to Graduate School - slides from CRA-W Workshop
Statement of Purpose
The exact requirements for this essay will vary with the school. The most important thing for you to do is to sound convincing. Even if you're not sure what you want to do, tell a convincing story that this is what you're going to do and why you're motivated to pursue that research topic. If you're not comfortable with that approach, you can talk about a set of topics that you're interested in and why you're interested in them. If applicable, stress your undergrad research experience and how it got you interested in these topics and pursuing an advanced degree.
If space permits and you have a specific professor that you'd like to work with, you may want to include that in your essay. This shows that you have invested time in looking at the specific program and the areas that you are interested in.
Letters of Recommendation
A top US University will often ask the recommender to evaluate the applicant in comparison with others the recommender has known during the recommender's professional career based on the following criteria:
- Oral communication
- Written communication
- Originality and creativity
- Ability to analyze
- Perseverance towards goals
- Ability to work independently without close supervision
- Ability to get along with people
- Overall potential for graduate study
- Ask for letters at least two weeks in advance. Preferably ask a month before the letter is due
- Ask for letters from people who had you in at least one upper-level (rather than beginner) course and will write you a strong letter
- Ideally, a letter writer has had you in multiple upper-level courses or worked with you on an independent study or research project.
- You can bluntly ask if the letter writer thinks that they can write you a strong letter.
- Provide letter writers with
- complete application materials (transcripts, your statement of purpose)
- stamped and addressed envelopes or the email addresses/contact information for where the letter should be sent
- your complete list of schools/programs and their deadlines–both on paper and electronically, so that they can copy/paste information if necessary
- some specific points that you want them to address and/or reminders of what you've done in the past, if it has been a semester or so since you accomplished them.
- Refer to the above “Content” section and see if there is anything that the recommender could highlight that you've accomplished in one of those areas.
- For example, leadership; research; service (e.g., student assistant, tutoring, other non-classroom but relevant activities); teamwork
- If you have any deficiencies (e.g., poor verbal GRE scores), the recommender can explain why it's not an issue (e.g., has good communication and writing ability). Another example is if you have a lower GPA in general or in CS, specifically, and the recommender can talk about how you've improved during undergraduate career or that what you struggled in is not your preferred research area. The deficiency should probably only be addressed by one reference–whoever knows you or the issue the best. You need to know your weaknesses and talk to your reference about how to address them, if at all.
- any information that the school requests from your reference (they may request specific information, e.g., if you are in the top 10% of students they have ever taught)
- Follow-up with your letter writers. Let them know how your application process is progressing. Also, make sure that they have sent the letters!
In summary, make writing a recommendation as easy on the recommender as possible by providing them with all the information they need to write a strong recommendation for you.
Some advice from Michael Ernst on requesting letters of recommendation.
Where Should I Apply?
Where you should apply depends on what degree you want to pursue, what schools offer those degrees, what schools have the specialties you are interested in, as well as many other factors.
You should apply to between 5 and 7 programs. Try to apply to a range of schools, e.g., “reach” schools and “safety” schools.
When looking at programs, think about
- do they have the research area(s) that I'm interested in?
- do they have professors that I would like to work with?
- do those professors have other students? How many?
- how much grant money do they bring in?
- how do they fund their students?
- what have their students done after graduation?
- where have they published in the last five years (respected conferences and journals)?
- are students first authors on the publications?
- do they have funding for additional students?
- is he/she tenured?
- are there active graduate student groups that I would like to participate in?
- how happy are the graduate students? (This is hard to figure out without visiting.)
- do I want to live there for X years?
You should probably choose two or three research areas that you are interested in. Try to be more specific than “systems” (e.g., parallel processing, pervasive computing, architecture, etc.) or “artificial intelligence” (e.g., natural language processing, machine learning, etc.) but not too specific, unless you have a lot of experience in the area.
Although it is good to have a research topic or theme in mind when applying, it pays to be flexible about your work when choosing an advisor. Your potential adviser may have a grant that will pay you to do something related, but not identical, to the topic that interests you most. In general, Ph.D. advisors are looking for students who show an ability to do research, as opposed to a specific brilliant idea or topic. You may be surprised to find how excited you are by an idea that you hadn't considered after you're in a research lab with like-minded students and an adviser who knows how to inspire (and fund) you!
For better or worse, name recognition–either the school or the advisor–means a lot in academics. For example, if you want to be a professor at a top-10 CS research program, you should try to attend a top-5 CS research program or have an advisor who is a well-known leader in the field. (There are always exceptions!) Not every well-known researcher is at a top-10 school, and a Stanford/MIT/Berkeley/CMU degree is not a must-have for a good academic career. As with everything in computer science, there are tradeoffs. You have to know yourself well: will you succeed in a highly competitive program or without much one-on-one mentoring from your advisor?
The above process is the ideal way to choose the programs that you'll apply to. You can still find programs that meet your needs even if you don't know all of this information.
Talk to your advisor about which programs will fit you best.
For another perspective: Choosing a Ph.D. program in Computer Science
In general, it doesn't matter where you get your master's degree, as long as the program is accredited and its graduated students have gone on to decent jobs. Employers care more about your skills than the school you graduated from.
Visiting Graduate Programs
After you've been accepted into a graduate program, many programs will pay for you to visit to help you make your decision. You may be able to visit a program before you apply to help you determine if you want to apply.
When visiting a school, try to figure out how you would fit into the program–with the graduate students and with the faculty. Do you click with the faculty? Do you have similar working styles? (You may need to talk to a faculty member's graduate students to learn about his or her working style.)
More Information: Visiting Grad Programs
- CRA-W's Grad Guide - updated in 2010 and provides a nice overview.
- CRA-W Grad Cohort Workshops - provide lots of information about graduate school to graduate students
- Applying to Ph.D. Programs in Computer Science by Mor Harchol-Balter from Carnegie Mellon University, 2004
And, talk to your advisor!
Bonus: And, after I get to grad school?
Here is some more advice:
Sara Sprenkle is the main author of this page. Holly Esquivel, Emily Hill, Simon Levy, and Lori Pollock contributed ideas and gave feedback on this document.
Our advice is based on our experiences and the experiences of our colleagues, students, and friends. There are many different approaches that will lead to your own personal success, which may or may not include a graduate degree.