A Princeton CS Major's Guide to Applying to Graduate School
by Clay Bavor, '05
Thank you to Jesse Levinson '05 for several additions and edits, and to Professor Kernighan for his suggestions and comments.
- Masters vs. PhD
- Coursework at Princeton
- Independent Work
- Letters of Recommendation
- Your Letter of Intent
- A Timeline for Applying to Graduate School
So, you want to apply to graduate school?
Applying to graduate school can seem like a daunting task, but it doesn't have to be!
This guide aims to demystify the application process by laying out some guidelines for undergraduate coursework and independent work, and by clarifying the steps you'll need to take to put together the strongest application possible.
Masters vs. PhD
There is a huge cost difference between Masters and PhD programs. In Masters programs, you'll have to pay your way just like you did (or your parents did) for your undergraduate education, while PhD programs will often pay you a stipend of $10-15k to attend! Often this stipend is contingent on your being a teaching assistant for courses. There are sometimes limited teaching assistant positions available for Masters students, but these seem to be few and far between.
Research vs. No Research
In short, PhD programs prepare you to do research, and Masters programs do not. So, if you want to head up a research group at a corporation or be a professor, then you'll want to do a PhD. The research focus and thesis work in PhD programs will give you the deep technical acumen needed to succeed in a research environment. If you just want to deepen your knowledge of computer science and get a bit more hands-on experience, then a Masters makes a lot of sense. Masters programs consist mostly of coursework (not research), although some do give you the option of doing a Masters thesis.
PhD programs take anywhere from 4 to 7 years. Masters programs can be completed in as little as a year, and usually do not take more than 2 years.
Different Flavors of Masters Degrees
In some PhD programs, you get a Masters degree along the way, but it is important to be aware of what kind of Masters you will receive if you drop out. In Princeton's PhD program, for example, the degree you get after two years is an MA, not an MS. MAs are generally looked upon less favorably than the MS, because the coursework that the degree reflects is more research oriented than it is useful for the "real world". In contrast, the coursework and requirements in terminal Masters programs like Stanford's are geared much more for preparing you for work in industry rather than for research. These programs also generally take longer, and many require a Masters thesis to graduate.
Think carefully about why you think you want a graduate degree. Make a list of things you want to do with your career and then determine how a graduate degree in CS fits in.
Coursework at Princeton
If you are seriously considering applying to graduate schools from Princeton, it is important that you take most of the "core" computer science classes: Operating Systems, Compilers, Computer Architecture, Analysis of Algorithms, and Networking. Why? First, the GRE Computer Science Subject Test, which almost all graduate programs require or strongly recommend, consists mainly of questions from these areas. If you decide to skip one or more of these courses, either get comfortable with the idea of not submitting a CS GRE subject test, or prepare yourself for a lot of studying.
Second, and more important, graduate schools expect incoming students to be familiar with all of these concepts. Failure to take one or more of these core classes may indicate that you have insufficient knowledge to participate fully in graduate level courses and research. Furthermore, especially if you are interested in pursuing a PhD, you will probably need to pass a rigorous and comprehensive exam in the first couple of years of the program. If you haven't taken the basic classes as an undergraduate, you're making that much more work for yourself in graduate school.
If you are planning on pursuing a graduate degree in a specific area of computer science (e.g., computational biology), the core courses become less relevant. Make taking advanced courses in your area of interest your priority, but keep the core in mind.
If you want to go to graduate school, one of the best things you can do is to take one or more opportunities to do independent work. (AB candidates have to do four semesters of independent work, while BSEs must complete only one.) Hopefully you will be self-motivated to pursue independent work (after all, if that doesn't sound fun, you probably should think about something other than graduate school). In any case, independent work allows you to spend time doing what you think is cool, and graduate schools (especially for PhD programs) love to see original research. In fact, the single most important part of your application for a PhD program is probably the quality of research you have done. After all, the only thing that really matters in a PhD program is your ability to conduct future research. Finally, independent work is a great way to get a recommendation (as discussed later).
Unless you are an international student, there are two tests you need to be aware of: the GRE Computer Science Subject Test, and the GRE General Test. (If you are an international student, you will also have to submit TOEFL scores.) Unless you specifically request otherwise, these tests are taken on a computer, which is relevant for a few reasons. First, after you answer a question, you cannot go back, so you will have to practice timing your test taking. Second, so that the system can provide a more accurate score, the questions you are given depend on your performance on previous questions, so it is very important you do not make mistakes early on to avoid being "tracked" for a lower score. Finally, you get to see your Quantitative and Verbal scores right away--no waiting like with the SATs. (If you don't think you did well, you can cancel them before you view them.)
For more information or to register, go to the GRE Home Page.
When you register, ETS will send you a CD with two computerized practice tests. We recommended that before taking these, you buy a book from Barron's or Princeton Review and take a few paper practice tests. Saving one of the computerized tests for the day before you take the real test is certainly a good idea.
GRE General Test
The general test is divided into three sections: Quantitative, Verbal, and Analytical Writing. The Quantitative section, which is scored out of 800, is similar to the math SAT, but the problems are harder, you can't use a calculator, and there is an additional data analysis section where you have to make inferences from graphs, charts, and other data sources. The Verbal section, also scored out of 800, consists of analogies, antonyms, reading comprehension, and sentence completions. Finally, in the Analytical Writing section you are asked to write two essays, one in which you are asked to take a position on some issue provided to you, and another in which you must analyze, evaluate, and criticize an argument.
Unlike the SAT, the GRE general test only contains one Quantitative and one Verbal section (plus an experimental section). Top graduate schools in computer science will expect you to score 800 on the Quantitative section. Even if you get an 800, you are only in the 92 percentile for Quantitative, so a 740 doesn't good very good at the best schools. All of this means that even if you are very confident of your math abilities you should absolutely take several practice tests and learn how to budget your time. Running out of time will ruin your score, but making even one careless mistake can keep you from an 800. Be careful!
Fortunately for most of us, the Verbal section is not very important to graduate schools. The curve is harder for Verbal, and as CS majors most of us find math easier than dealing with obscure vocabulary words. A Verbal score in the upper 500's or better is great.
The Analytical Writing section's two essays are each graded on a scale from 1 to 6, in increments of 1. Each essay is scored by two readers, and your final score is rounded to the nearest .5. The top graduate schools like to see a 5 or higher, and a 6 is excellent. Written communication skills are important in any profession and particularly so in research, so graduate schools look favorably upon writing skills.
GRE Subject Test
The GRE Subject Test assesses specific knowledge in various areas of computer science: Operating Systems, Compilers, Architecture, Theory, and Networking. (See "Coursework at Princeton".) If you are interested in a PhD you should aim to score at least in the 90 percentile on the subject test.
If you have a strong background in math it may be wise to take the Mathematics subject test, becuase graduate schools in CS love to see strength in math, particularly if you are interested in studying theory. Few, if any, CS graduate schools require this test, but if you happen to know the material, it's worth a shot.
Where and When to Take the GREs
The wise will take their general GREs over the summer before Junior year. You will have time to brush up on your vocabulary and take a few practice tests, you will be more relaxed, and, assuming you are home, you will not have to borrow a car to get to a testing center. Waiting until Senior year is probably not a good idea, because you aren't going to be any better at basic math, vocabulary, or writing (in fact, you will probably be worse).
However, unless you have taken all of the core CS courses by the end of Sophomore year (which would probably make you a first), you will need to wait until late in your Junior year or the summer before Senior year to take the subject test.
If you wait until you're back at Princeton to take the GREs, there is a testing center only 15 minutes away, near Quakerbridge Mall. The address and test location code is:
Prometric Testing Center (Center #4104)
3635 Quakerbridge Road
University Office Plaza
Hamilton, New Jersey 08619
You can usually register two or three weeks before the test date, but there may only be bad testing times available (like 8 a.m.), or none at all. To guarantee yourself a slot at a reasonable time, do your best to register a month or more in advance. Realizing you are out of time and having to drive three hours for an 8 a.m. test is neither fun nor conducive to scoring well.
Letters of Recommendation
Most graduate schools ask for three letters of recommendation. (Fellowships may ask for more.) If a school asks for three and only three, do not submit additional letters. Some schools permit more than three, but do not think that you will look weak if you "only" have the "minimum". In fact, unless there is a compelling reason for you to have more than three letters, you will generally look worse sending in extra letters. The graduate application committees are busy and are not impressed by the fact that you were able to find n people to write you a letter.
Which Professors to Ask
As Princetonians, we are lucky because independent work provides a great way to get to know a professor and for a professor to get to know you. If you have done independent work, particularly good independent work, your advisor should be the first person whom you ask to write a recommendation. They will be able to provide schools with the richest, most detailed picture of your ambitions and abilities, and will have many more interesting things to say than the professor who doesn't know you well, but in whose class you got an A or A+.
After your independent work advisor, think about classes in which you both got to know the professor and did some notable work. Did you go above and beyond on a certain assignment and do or show something interesting? Did your insightful comments make you stand out from other students? Was your term paper or project exceptional? If the answer is yes to any of these questions, then you should seriously consider asking the professor who taught the class to write a recommendation. Keep in mind that the type of questions asked of your recommenders center around your ability to think independently and pursue research.
Not everyone is fortunate enough to have three people who they are sure will write a strong letter of recommendation. If you haven't done independent work or haven't stood out in many of your classes, you will need to be wise about your selection. The best thing you can do is think of professors who are likely to have something personal to say about your abilities and then ask the ones you are most confident about whether they can write you a strong letter of recommendation. This allows a professor who might not know you very well or who might otherwise write you a weak letter to tell you honestly that you might be better off choosing someone else. If that happens, you should be thankful that you have a chance to pick someone else rather than depending on a weak letter. Always remember that what your letters say about you is much, much more important than who the letter is from.
Having said that, you should ask professors, not grad students, to write letters of recommendation. Graduate schools do not want to receive letters from graduate students who know you, regardless of what they have to say. If you have taken a class in which a graduate student has had a chance to get to know you, ask the graduate student to talk to the professor, and have the professor write the letter.
Should I Ask Anyone Else?
That depends. If you did interesting research or development in computer science for a summer internship, then you should absolutely consider asking your manager to write a letter. Demonstrating that you are capable of succeeding both inside and outside of academia can certainly help your application.
Do not get your dad's CEO friend to write a letter describing how great you are. Graduate schools won't care, and will wonder why you couldn't find another relevant recommendation. Also, keep in mind what you're applying for: particularly if you are applying to a PhD program, the people reading your application will want to see that you have the capacity for good research. If the person you're thinking of asking won't be able to speak to your research abilities, you should probably look elsewhere for a letter.
Remember that compared to undergraduate schools, graduate schools care very little about your "character" or your "personal qualities" unless they pertain to your ability to do coursework or research. At this point they will assume that you have integrity, honesty, and all that good stuff, so there is no point in getting a letter from someone who thinks you are a "great person".
When to Ask
It's best to ask the professors whom you would like to write your letters at least a month before applications are due. This way, you'll have time to remind them of all the great work you did in their course, and won't put them in any sort of time crunch. Then, at least three weeks before the deadline, deliver to your professors:
- all necessary forms with relevant information already filled out
- addressed and stamped envelopes
- a detailed set of instructions including deadlines
- copies of any assignments, projects, or papers that would help to remind the professor why you are extraordinary
- a resume
- a letter of intent explaining why you are applying to the programs that you are
Yes, all this information seems like a lot, but remember: the quality of your letters is what will distinguish you from all the other applicants, most of whom are likely to have the same high CS GPAs and GRE scores as you do.
Most schools now accept, or even prefer, letters of recommendations to be sent via e-mail or an online form. In this case you do not need to provide your recommenders with envelopes and forms.
You should take the time to talk to your recommenders before they write your letters. Tell them why you want to go to graduate school and talk to them about what you want to do afterwards. Not only will that help them write a better letter, but they will also likely have good advice for you in terms of what schools would be a good match and even what professors you might like to work with.
Having your statement of intent written before you ask for recommendations is a good idea. If you give the statement to your recommenders they will be able to write a letter that reflects upon the themes mentioned in your statement and supports your goals.
For more advice on letters of recommendation, see Professor Kernighan's Letters of Recommendation page.
Your Letter of Intent
The content of the letter of intent will depend largely on what type of program you are applying to. If you are applying to PhD programs, the focus of your letter should be research, research, and more research. That means research you have done in the past, courses you have taken that will help you conduct research in the future, and areas of research you would like to pursue more. Give specific examples of research you have done as an undergraduate, and describe how it has shaped your interests. Indicate broadly what areas of computer science you are interested in (e.g., Artificial Intelligence), and then hone in on a few specific areas you would like to pursue. Try here to demonstrate that you are knowledgeable about the strengths of the department, and suggest why you would be a good fit.
Be aware of how much specificity about intended research a school asks for. In past years, MIT has wanted something akin to a research proposal from its applicants; Stanford asks for much less detail. Regardless of where you are applying, avoid pigeonholing yourself by being too specific by saying that you only want to work with Professor So and So on Such and Such. Yes, you will indicate that you have done your homework about the school, but what if Professor So and So is on leave, or already is advising a number of people? Not only that, but nobody expects you as an undergraduate to know exactly what you are going to do in graduate school. A sizable fraction of students end up doing something quite different from what they had in mind coming in, so it sounds from your letter that filesystems is the only thing you can possibly see yourself doing, the application committee will worry about what will happen to you if something changes. In other words, it's good to talk about what you enjoy most, what you would like to pursue, and with which professors you might want to work, but don't sound like you have the next six years mapped out and set in stone.
Finally, you need to convince the reader why you will succeed in research in general and in the school's program in particular. Looking into the particular programs offered by a graduate school is a very good idea. If you can talk about some programs that interest you and perhaps some current research that seems intriguing (without saying "I am going to work with Prof. Smith on this topic") you will demonstrate that you know why you want to apply to the school and that you are excited about some particular projects. It is not a good idea to say "I want to go to Stanford because it is one of the best computer science graduate schools in the country". Apparently a lot of applicants actually say something just like that, but it should not be much of a surprise that this "reason" adds precisely nothing to your statement and just makes it look like you copied and pasted the same statement to each school.
If you are applying to Masters programs, your letter should have a different focus. Since Masters programs consist of mostly coursework--not research--it is important to provide good reasons for your wanting to pursue a Masters degree. For instance, do you want to start companies? Do you think you will be able to leverage additional education in computer science towards that goal? Explain how. Of course, to make yourself an attractive application, it's also important to describe past projects that were successful and interesting, but you need not lay out any specific research goals or ideas. (And if you do, the people reading your application may be confused about why, if you are so interested in doing research, you are pursuing a Masters degree and not a PhD.)
A Timeline for Applying to Graduate School
- Junior Year:
- Brush up on your vocabulary and go take your GREs. When others are stressing out about registering and class, you'll be happy that you took them early.
- Take the core CS courses before the end of the year.
- Do some interesting independent work.
- Spring of Junior Year:
- Start thinking about whether you want to apply to graduate school, and to what programs. Talk to your professors, your parents, and friends.
- Summer after Junior Year:
- Take the CS subject test GRE.
- September-October Senior Year:
- Figure out which schools you want to apply to.
- If you haven't taken the GREs yet, take them! October is the latest you can take the GREs to ensure that schools with early December deadlines will receive them.
- Narrow down the list of professors who you will ask for recommendations.
- Start working on your letter of intent/statement of purpose.
- November 1st, Senior Year:
- If you haven't already done so, go ask your professors if they are willing to write you a strong letter of recommendation.
- Finish up your letter of intent, and update your resume.
- November 7th, Senior Year:
- Deliver forms and other materials to the professors writing you letters. (Some schools will not allow recommenders to submit their letters until you have completed your application; be aware of these restrictions.)
- Start working on your applications. (Most schools allow you to apply online.)
- December 1st, Senior Year:
- Start submitting applications.
- Spring, Senior Year:
- Hear back from schools!