A repository of resources for PhD applicants, with a focus on CS-specific advice.
A meta-note on application advice: PhD applications are very personalized compared to undergrad (or even some masters) admissions. At many universities, what matters most is finding an advisor who wants you as their PhD student. However, different advisors can look for very different things - some advisors care a lot about grades while others barely look at them, some are looking for students who will fit in well with the existing group, some prefer to recruit from specific undergrad institutions, etc. Thus, while it is helpful to read peoples' advice, there is no single correct way to go about PhD admissions.
It goes without saying that the things I say here are based on my personal experience and might not apply perfectly to your situation. Still, I hope it helps to hear my perspective!
It's worth placing stronger emphasis on advice from people within your field or subfield, because it's probably more locally applicable. Also, if a potential advisor has advice for PhD applications (e.g. on their website or blog), pay close attention to it - it probably hints at what they're looking for in applicants to their own labs.
Some good general resources about the entire application process:
- Casey Fiesler's Youtube series on applying for PhDs
- A Survival Guide to a PhD by Andrej Karpathy
- Applying to PhD Programs in CS by Mor Harchol-Balter
- Applying for a PhD by Catherine Yeh
- Machine Learning PhD Applications by Tim Dettmers
Unfortunately, applying for PhDs can get prohibitively expensive. If application fees pose a significant barrier to you, there are a couple ways around it. Many universities offer fee waivers for applicants from certain underrepresented groups, so check the websites for each place you're considering. Additionally, check out the fantastic Queer in AI Graduate Application Aid Award. Between fee waivers and the QAI award I ended up paying less than half of what I originally would've.
There's a lot about PhD admissions that is completely out of your control - for example, even if you're a fantastic applicant, your prospective advisor may not have funding or their lab might be full. Some programs just decide to accept less students one year because they got more students than they expected last year. For this reason I would recommend applying to as many places as you can, constrained by your time (so you can still write quality SoPs for each application) and money (to pay for app fees). If possible, you could try to plan your courses so that you have a lighter workload during the semester you apply for grad school. I did this and it enabled me to apply to way more places.
You'll also want to only apply to programs you would actually go to. That's a very personal decision and often hard to know in advance, so it's worth doing a lot of reflecting. Here's a (non-exhaustive) list of factors you might want to think about: location, prestige, how well you see yourself getting along with your advisor, how reputable your advisor is, how closely your research interests match the faculty at that program, whether immigration is a possibility in the long term (for international students), the funding structure throughout the PhD, the vibes of the current students... You get the picture.
- List of CS PhD programs with fee waivers by Kaiser Sun
- Use CSRankings to find people who work in your field. Ranking (unfortunately) can be important, but think of this site primarily as a discovery tool for potential advisors who are actively publishing.
- How to Pick a Graduate Advisor by Ben A. Barnes
- Casey Fiesler's guide to rec letters
- Matt Might's guide to rec letters
- Advice to Students Asking for Recommendation Letters by Rajit Manohar
Ask for recs early on - like, multiple months before the deadline! You don't want your recommenders to cram your letters. You will have to be the one to keep track of which letters your recommenders have submitted already. Don't be afraid to gently follow up with your writers if needed.
When you ask someone to write letters for you, make sure you ask if they are comfortable writing you a strong recommendation letter. This gives them an out to say if they aren't comfortable writing you a strong letter - which is good for you, because then you can ask someone else who will write you a strong letter.
The best letters are strong research letters that come from a professor who knows you really well and can vouch for your research potential in detail. Letters from profs who you took classes with typically don't count for much no matter how positive they are. Not all of your rec letters need to be strong research letters - 1-2 of these can often be enough (though more is always better).
- Example annotated CS SoP with tips by Eugenie Lai
- Repository of sample CS SoPs created by Zhaofeng Wu, Alexis Ross, and Shannon Shen
- Do's and don'ts for SoPs by Vijay Chidambaram
- MIT EECS - What faculty are looking for in essays
I personally received a lot of conflicting advice on how the SoP should be written. Having people read through your SoP and give feedback can be really helpful. However, at the end of the day it is your statement about why you want to do a PhD, and you know best the answer to that question. Get lots of feedback, but always remember you can choose which feedback to listen to!
Emailing potential advisors ahead of the app deadlines can help you stand out/establish rapport. However, it is not a hard requirement. If you are doing it, make sure your emails leave a good impression by writing them well and tailoring them to each professor (no form emails!)
- How to Write Cold Emails by Jia-Bin Huang
- Cold Email Template by Casey Fiesler
- Contacting Potential PhD Advisors by Casey Fiesler (youtube video)
You may get a range of responses from emailing advisors - they may not reply, they may send a polite message along the lines of "I look forward to reading your application", or they may be interested in meeting you and talking more. Getting meetings is a slightly positive signal since it means someone is willing to spend time on getting to know you. That being said, don't read too much into any of these responses - I was accepted by some advisors who didn't reply to me, and was rejected by some advisors who I had Zoom calls with.
Many departments offer mentorship programs for applicants (such as Toronto GAAP or CMU SCS GASP). Usually, this entails being matched with a current student who can provide feedback on your application, SoP, etc. Look for these early on as many operate on a rolling basis. Aside from formal mentorship programs, it's also a good idea to ask for advice from a) any profs/advisors you've already had, and b) grad students who you know or have worked with.
At the end of the whole process, you may be faced with the wonderful dilemma of having multiple acceptances that you're seriously considering. Congrats!
The number one most helpful factor in my decisions were the visit days. Many CS programs invite accepted students over for a weekend to see the campus, learn more about the program, and meet current students and faculty. These are really helpful, and if you have any conflict at all about your decision I would strongly suggest going! (Not to mention many of these are funded, either by the department or by your prospective advisor.)
Visit days give you the chance to learn things that no amount of Googling or asking around can substitute for. One of these things is lab culture (or grad student culture at large) - how friendly grad students are with each other, how happy they seem to be, etc. A PhD is also five(ish) years long, so you definitely want to make sure you're okay with the location. For all the visit days I attended, I made sure to extend my stay a few days past the main program so I had some free days to explore the city and get a better sense for its vibes. Lastly, you'll probably talk to your prospective advisor a lot more and get a sense for whether you'd enjoy working with them.
In my opinion, visit days are 100% worth making the time for, even if it means missing work or class for extended periods of time. It's an important decision to make. Plus, at visit days the dynamic is a little flipped: universities are trying to sell themselves to you (and not the other way around), which is just a nice feeling to experience.
Before visit days, I think it's helpful to reflect about what you want out of your PhD and establish some guiding principles for your decision. This is honestly a good idea to do even before applying, when you're still building your list of programs. If you're interested in a PhD, it's likely due to some combination of career opportunities, wanting to do research, prestige, intellectual/moral/life fulfillment, etc. The important thing is to decide which factors are most important to you and figure out which programs will get you there.
Feel free to reach out if you have any questions.