Sunday, February 7, 2016

Stock advice for undergraduates interested in doing a Ph.D. in computer science

Thank you for getting in touch! As you may know, Ph.D. students at Stanford are admitted by a department committee, and students usually rotate with three advisors during their first year, so that students are not beholden to any individual faculty member. I encourage you to apply in the fall (not just to us -- also consider MIT, U.C. Berkeley, U.C. San Diego, UCLA, U. Washington, Cornell, Carnegie Mellon, U. Illinois, Princeton, ETH Zurich, EPFL, University College London, Georgia Tech, U. Texas at Austin, Columbia, NYU, Tsinghua, etc.). If you are admitted, I would be happy to meet with you about the possibility of working together.

In the meantime, here is some stock advice for people thinking about doing a Ph.D. in computer science:

  • Read some of the essays that people have written about "what grad school in CS is like." I did an interview on this with my friend Eugene Wu (https://cs.stanford.edu/~keithw/interview-2015-guo-wu-winstein.html), and our friend Adam Marcus (https://marcua.net/writing/gradschool-guide/) also wrote a guide after finishing his PhD. Our other friend Phil Guo also wrote a depressing book about his (not-so-good, but also not horrible) time in grad school at Stanford (available to Stanford students upon request -- Phil has had this removed from the Internet), and he ultimately ended up in a great job where he seems happy and productive (and now tenured) too.

  • Read some of the advice for grad-school applicants, e.g. Michael Ernst's (https://homes.cs.washington.edu/~mernst/advice/) and Jennifer Rexford's (https://www.cs.princeton.edu/~jrex/advice.html) and Justine Sherry's (http://www.eecs.berkeley.edu/~justine/advice.pdf) and
    Mor Harchol-Balter's (https://www.cs.cmu.edu/~harchol/gradschooltalk.pdf) and Andy Pavlo's (https://www.cs.cmu.edu/~pavlo/blog/2015/10/how-to-write-a-bad-statement-for-a-computer-science-phd-admissions-application.html).
     
  • Think real carefully about "Why do you want to go to grad school?" Do you want to use computational thinking to help people in a tangible way? Or do you want to learn about computer science for its own sake, as a quest for knowledge? Do you think you would enjoy a teaching-focused job, or an industrial research job, and these require a Ph.D.? All of these can be great answers, but they are different. What projects or independent activities have you done (things nobody told you to do) that you enjoyed or found satisfying? How can you aim to best continue that? (By contrast, "I did well in undergrad and would like to continue my education" is not a good reason to start a Ph.D. in computer science!)
     
  • Consider taking time off between undergrad and grad school, or at least deferring for a year after you are accepted. Depending on the subfield, the people that do this often have a real leg up, because they can bring a nontraditional perspective to the table. There's little benefit in being "smarter" than everybody else in the group if all that means is that you are saying something first that somebody else was going to say anyway 90 seconds later. It's better to be the one contributing ideas (about new problems worthy of attack OR ways to solve them) or a point of view that wasn't going to get contributed at all. And the people who have exposed themselves to more diverse environments often have had more time to understand themselves and what kind of environment they need to build around themselves (advising, style of work) to be happy and productive. Depending on your advisor's style and the culture of the department, grad school can be almost a totally unstructured and self-directed environment (quite different from undergrad) so you really don't want to go into it as a sort of default. (If you are saying to yourself, "but I don't know what I would do during that year off," that is not a good reason to make grad school become your default! By contrast, if you are saying, "but I am in theory or another mathematically inclined subfield and literally the only way to get better at it is to keep doing it; there is nothing the outside world has to offer me," then maybe you are right -- theorists often do seem to adhere to this kind of thinking.)
     
  • Start thinking about how to demonstrate (by December of the year when you plan to apply) to your letter writers that you have the initiative/resourcefulness/creativity/grit and can see a project through to completion even over obstacles. (Ideally, by participating in a research project that submits a paper for publication.) The letters of recommendation do matter a lot, probably more than anything else in the application, and the letters will ideally be from people that the readers can trust are well-calibrated to speak to your promise at doing CS research.
     
  • Try to get on whatever mailing lists you need to to start attending the research talks at your college or university. (Some of this might be harder in the age of Zoom/economic collapse, but still...) This can vary based on what type of college you are attending, but if you are at a research university, there can be a lot of these: departments or research groups may have seminar series/colloquia, and then every doctoral student is going to have a public defense, and every job candidate who wants to be a professor is going to do a public "job talk," and at some places, every junior-faculty member who wants to get tenure has to do a "tenure talk," etc. These are almost always just open to anybody who wants to come.

Best regards,
Keith