Applying to Graduate School in Computer Science
William B. Thompson
School of Computing, University of Utah
Included below is information (hopefully)
useful in choosing a graduate school to pursue studies in
computer science and then getting in to the program of your
choice. Several items represent my personal opinion. As always in
such cases, you will be well served if you solicit additional
opinions from others!
Apologies for out of date numbers and several dead links that need to
get fixed!
Why go to grad school in CS
It's not the money! According to the National Society of Professional
Engineers, the median salaries for engineers in 1999 was $92,800 for
those with a doctorate, $74,229 for those with a master's degree, and
$66,874 for those who's highest degree was a bachelor's. The salaries
for engineers in information technology were at the high end of the
salary range for all engineers. These numbers, however, don't
reflect costs directly associated with getting an advanced degree
and costs indirectly associated with the delay in entering the
workforce entailed in obtaining an advanced degree. In any event,
remember that Bill
Gates
never finished his bachelor's degree, much less a graduate degree.
An M.S. in Computer Science may make financial sense, particularly if
it significantly increases your skills over what you learned as an
undergraduate.
While monetary concerns might enter into the decision to work towards a
Ph.D., there are non-financial considerations that for many (most?)
potential candidates are more important. In industry, a Ph.D.
significantly affects the nature of the work you are likely to be
assigned. You will have more responsibilities, more independence, and
are more
likely to work on longer term projects. Pursuing a Ph.D. is a very
different lifestyle than you can experience any other way. In
addition to course work, you will spend one to three years of your
life trying to solve a single hard problem with a minimum of outside
distractions. This is hugely challenging, but can also be personally
rewarding.
A Ph.D. is a (near) requirement for obtaining a college or
university faculty position.
Finally, with a Ph.D. you can call yourself a doctor, though you'd best
avoid treating patients.
Choosing a graduate program in CS (mostly for prospective Ph.D.
candidates)
The CRA Forsythe
List includes all Ph.D.-granting departments in disciplines related
to computing in the United States and Canada. For the full list, click
on "Show Search Results" without filling in any of the other
fields.
USNews provides a
ranking of 70 U.S. CS departments, but you'll have to pay $9.95 to
get all but the top five on the list. There is also a very out of date National
Research Council Study of Ph.D. Programs in Computer Science that
includes rankings. Rankings will tell you about the reputation of a
department, but not the quality of the education you will get there
should you enroll.
It is a good idea to apply to at least one "safe school" that you are
likely to get into, given your grades and GPA. The difficulty of
getting into different graduate programs correlates fairly well with
the rankings of those programs.
If your are contemplating a Ph.D., the reputation of both department
and university you graduate from are critical to your future. Even
more important, however, is your thesis adviser. How well your
adviser does her/his job and how well you interact with your adviser
will in large measure determine whether or not your are successful.
Unfortunately, it can be very hard to find out in advance whether or
not you and a potential adviser are a good match. Departmental culture
(workload, standards, supportive/non-supportive atmosphere) will
also have a significant impact on your chance of success both in
graduate school and when you look for a "real" job. This is one
property of departments difficult to get information on without an
in-person visit.
If you have at least a general idea of the research specialization you
want to pursue, it is useful to find out the top 2-3 conferences in
the area(s) and scan abstracts for the last several years. When you see
articles that look interesting, take note of where the authors are from
and see if any patterns become apparent. You should also attend as many
colloquia as you can at your home institution and any other CS
departments within reasonable commuting range. This will give you an
overview of research across the country and can provide an
opportunity to talk in person with faculty at other institutions.
It is difficult to set up a productive in-person visit unless you have
already been accepted to the program you want to visit. Visiting
students take up substantial faculty and staff time and so are
discouraged except for students that a department has some specific
reason to want to recruit. Fortunately, if you do get accepted
somewhere you will likely get the chance to visit before you have to
decide whether or not to enroll. (See below about deciding where to go .)
Getting in to grad school
Things affecting your chances of getting into a particular CS graduate
program:
- Undergraduate institution
All CS graduate admissions committees will pay attention to the
reputation of your undergraduate institution. Some might even consider
the quality of that institution. Some will look favorably on students
from undergraduate liberal arts colleges. Some will prefer
applicants from "name" CS departments. Unfortunately, for most of
you reading this document there is little you can do to affect this
criteria.
- Grades
GPA matters a lot, maybe more than anything else in your file. Grades
in individual courses may or may not matter, depending on the
particular admissions committee that is evaluating your file. As
with your choice of undergraduate institution, it's probably too
late to do much about this!
- Letters of recommendation
For most applications, you'll need three letters of recommendation. At
least two of these letters should be from people who can provide a
first hand perspective on your qualifications for graduate school.
Letters of the following (common) form are effectively useless:
"Joe was in my class Introduction to Basket Weaving
using C++. He got an A- in the course, which was a so-so grade given
the grade inflation in our institution. I've never had a one-on-one
discussion with him and so can't really tell you anything else about
him."
Try to avoid using work supervisors or other non-academic personnel as
letter writers.
- GREs
Almost every CS graduate program will require that you take the general GRE. Admissions
committees vary on how much importance they place on GRE scores. ETS
provides a variety of free and not free test preparation
resources. Make sure you get materials appropriate to the format of the
exam that you are actually taking. Some departments additionally
require the CS
Subject GRE , some "recommend" the subject exam, and some make no
mention of it in their application materials. Finding study
resources for the CS Subject Exam is relatively difficult, other than a
single practice test
provided by ETS. One strategy to
consider for those departments that don't require the exam is to
take it but don't have your scores reported to the department until
you've seen how good they are.
- Research interests
This is usually only an issue for Ph.D. applications. Having a well
articulated and well thought out set of research interests will help
your application. Making up a research interest even though you don't
(yet) know what you want to concentrate is generally a bad idea, though
some application committees will be (falsely) impressed. Some
departments want applicants with declared research interests that fit
with the activities of their own faculty. Other departments are more
open to accepting students who are still trying to figure out which
are of CS they want to work in.
- Personal statement
Graduate admissions committees vary in the importance they give to
personal statements. Think about what you want to say in your
statement before you start writing the actual text.
Organize your statement and make sure that it is in a reasonably
correct approximation to English. Originality helps, but remember
that too much originality can sound "off the wall". The CRA-W Graduate
Student Information Guide has an excellent section on what should
go into a personal statement. There are a number of companies that
will, for a fee, "edit" your personal statement before you submit
it with your application. My view is that this is only for the
ethically-challenged, since admissions committees want to know how you
write, not how well some editor you pay can write.
Timing
Most CS graduate programs primarily accept applications in the fall.
Most have an application deadline somewhere between mid December and
mid
January. Acceptance notifications usually get sent out sometime
between early February and early March, though departments vary in
this. Rejections tend to get sent out towards the end of the process.
Calling or emailing a department to find out the status of your
application generally will not work. (Almost) all U.S. graduate
departments abide by an agreement that places the deadline of April 15
for your decision to accept or reject their offer of admission.
Deciding where to go
If you are accepted to most top CS Ph.D. programs, you will be offered
a chance to visit the department in person before you have to decide
whether or not to accept their offer. These visits are usually
scheduled in March or very early April. Some or all of your expenses
for this visit will be covered by the department. This is an
excellent opportunity to find out information difficult or
impossible to extract from web pages, brochures, email, and phone
calls. In addition to the factual information you can obtain from
such a visit, pay attention to the sense of excitement exhibited by
faculty and students and the interactions between faculty and students
in the department. Try to talk to current graduate students without
faculty being present.
Paying for graduate school in CS
Almost all CS graduate programs pay tuition and a (smallish) salary to
almost all of their Ph.D. candidates. Some provide tuition and/or
a salary to some of their M.S. candidates. Financial support comes in
three forms:
- TA (teaching assistantship). In most CS departments, TAs
are used as graders and discussion leaders for lower level
undergraduate programming classes. It is rare for TAs in CS to
actually teach a class. TAing is time consuming, but it is a way to
spend a lot of time with whatever faculty member you are grading
for. The decision to grant a TA is usually made by the department.
- RA (research assistantship). RAs are paid to do research.
Often, the research is part of their thesis work, but not always. The
decision to grant an RA is usually made by the individual faculty
member providing the RA. The RA is usually funded by external
grants.
- Fellowship. A fellowship is effectively a merit-based
scholarship. You receive tuition and a stipend, but have no
specific research responsibilities. Fellowships are considered
desirable because of the flexibility they provide, particularly
early in a graduate career.
NSF Graduate
Research Fellowships are available to U.S. citizens and permanent
residents. These are prestigious awards. If you qualify, you should
apply.
Other resources
The Computing Research Association
Committee on the
Status of Women in Computing research (CRA-W) published an
excellent
Graduate Student Information Guide. It is of value to both women
and men.
CRA-W
Career Mentoring Workshops Booklet.
Choosing
Graduate School in CS, by Rachel Pottinger
Advice
for undergraduates considering graduate school, by Philip Agre
Applying
to Ph.D. Programs in Computer Science, by Mor Harchol-Balter