Someone recently asked me for some advice in writing a Statement of Purpose for a Ph.D. application. I thought I'd follow Matt Might's advice and reply to public. Here's some of the advice I gave.

I should state up front that I've never served on an admissions committee, so I'm not able to say things like "I argue to accepts students who write like this." I have, however, managed to write a Statement of Purpose that was good enough to get into a Ph.D. program. Fortunately, because of Cunningham's Law, if this is terribly far off then there will probably be better advice in the comments.

The Statement of Purpose is a chance to let your passion for you subject area shine through. So much of your application is rather dry. You have test scores, your transcripts, your CV, etc. None of these things are all that exciting. The statement of purpose is a chance to add some life to your application.

I recommend the following outline:

  1. Describe a problem.
  2. Tell how you would solve it.
  3. Convince the committee you can actually deliver.

Here are some more details.

Describe a ProblemπŸ”—

If you're applying to grad school, it's probably because you have big ideas for how to fix important open questions in your field. There's some challenge or problem that you stay up late at night thinking about. Your friends probably roll their eyes when you start talking about it again, because you're just so excited about it. Describe this problem. Convince the admissions committee that this is a problem their department should solve.

Mine went something like this:1

The most interesting problems in computing are too large to solve with a single processor. Parallel and distributed programming is essential, and yet the tools to take advantage of parallel and distributed hardware remain difficult and in the hands of a small number of experts. As hardware makes more use of parallelism and becomes more heterogenous, we need better tools to make the hardware fully usable.

Tell How You Would Solve ItπŸ”—

Obviously, if you knew how to solve it, you wouldn't want to learn how to do research. You should have an idea of how to get started. What approach do you think would be promising, and why?

I said something like this:

In the short term, we should introduce more parallelism in libraries. Some routines are used in many programs, and introducing parallelism at this low level will provide broad benefits. Many programs display images, so a parallel image decoder would provide benefits throughout a system. In the longer term, it must become easier to write parallel code in the first place. Programming languages can help. A language with the right set of abstractions would not merely make parallel programming easy, parallel program would become natural.

Convince the Committee You Can Actually DeliverπŸ”—

You'll notice that up until this point you haven't directly talked about yourself, even though you've revealed a lot about your passion and enthusiasm for taking on tough challenges. Now is the time to talk about yourself. Don't just rehash your CV; your committee has already read that. Instead, make an argument. Say "I am the person to accomplish the plan I just described because of X, Y and Z." You can and should mention things on your CV and elsewhere in your application, but do so to provide evidence that you can do what you say you will.

Concluding RemarksπŸ”—

The approach I've described here requires picking a specific problem and going into some detail about it. It's important to remember that this isn't a commitment. I doubt any of my professors remembered what I wrote about on my Statement of Purpose. You still get to spend a couple of years honing in on the perfect subject2.

Looking back it's interesting to me to see that I basically followed the plan I laid out in my Statement of Purpose. GPU programming (an instance of parallel programming) is hard, in part because managing data movement is hard. To address this problem, I created a language that handled the data movement for you.

I applied to grad school several times. My earlier attempts at a Statement of Purpose were basically my life story up to that point. When I decided to take a more problem-centric approach, I felt like I got a much more compelling result. Rather than brag about how great I am, I got to talk about solving the kinds of problems that are exciting to me. Seeking the opportunity to solve these problems are what led me to pursue grad school in the first place.


Unfortunately, I seem to have misplaced my Statement of Purpose, so I'm recreating this from a nine year old memory.↩


"Perfect" here means "a subject I can stick with for a few years and someone will let me graduate for working on it" and not "this will be my most important accomplishment."↩