03 Sep 2015
The National Science Foundation Graduate Research Fellowship (NSF GRFP, or “the NSF”) is one of several fellowships for graduate study in the sciences. If you’re a graduate student in STEM or are applying for STEM-related graduate school in the United States, it’s a great idea to apply for the NSF, which is due in late October this year. In a nutshell, fellowships are useful because they give you flexibility and freedom by providing you with independing funding (and are also fairly prestigious).
Neha Narula, Jean Yang, and Philip Guo have all already written wonderful guides for applicants in Computer Science. If you aren’t already in graduate school, getting your materials together is a good exercise that’ll make you think hard about why you want to go to graduate school and what you want to do. There’s a lot of overlap between typical fellowship application materials and graduate application materials, so, if you’re also applying to Ph.D. programs, doing fellowship applications saves you work in November and December.
In addition to adding yet another pointer to the above guides, I wanted to provide my own N=1 example of a successful NSF application. While there are several good examples of successful NSF proposals online, I’m not aware of any in software systems or databases. I’ve meant to share these for a while, but I keep forgetting – so, finally, I’m posting my materials from 2011 below:
The most useful part of these materials is probably the research proposal. As an applicant in systems research, I remember having a difficult time thinking about how to scope my proposal. In retrospect, I think it’s reasonable to propose a project that, if executed, could lead to one or more solid papers in a top-tier venue like SIGMOD or SOSP, with a clear and well-defined idea, or “nugget” of novelty. As a starting point, I think a good heuristic for problem selection is to read the proceedings of the top-tier conferences in your area, figure out some interesting “hot” or open questions, and ask: how could I do better? While it’s intimidating to read the recent research literature and even consider the possibility of improving it, be bold, and propose something!
In my proposal, I focused on a problem that was both fascinating to me and also very “hot” at the time: many-core operating system scalability. There were a number of papers proposing new many-core OS architectures coming out at the time, but none of them were clear winners. I was in love of the somewhat vintage idea of capabilities at the time that I wrote my proposal, and I thought they would enable an interesting architecture. Were capabilities actually a good idea for shared-nothing multi-core? Possibly, but a definitive answer would require… research! At the proposal stage, a research project should ask some non-obvious questions, with a clear strategy for evaluating them and a clear payoff for doing so. Although my graduate research ultimately went in a different direction, I would still love to see the questions in this proposal answered!
In terms of evaluation, my application received relatively positive reviews, and I’m immensely grateful for the support that the NSF has given me during my graduate career. However, as a caveat, there were a few areas I could have improved on. From my reviews: “Some comments on interactions with other students are missing; also, there are no comments on what was involved in regard to the applicant’s TA fellowship. Also no comments are provided as to the impact of the research work proposed.”; “The applicant does not mention any outreach efforts. Involving more broader activities would help strengthen the application.”; “not much information is available to evaluate other broader impacts, including promoting diversity, integration education and research, etc.” Broader impacts criteria have changed since I applied, but, in the context of a research proposal in software systems, they’re challenging to convey and are therefore worth extra effort!
So, best of luck, and, as Neha points out, not applying gives you a 0% chance!
- How To Make Fossils Productive Again (30 Apr 2016)
- You Can Do Research Too (24 Apr 2016)
- Lean Research (20 Feb 2016)
- I Loved Graduate School (01 Jan 2016)
- Worst-Case Distributed Systems Design (03 Feb 2015)
- When Does Consistency Require Coordination? (12 Nov 2014)
- Data Integrity and Problems of Scope (20 Oct 2014)
- Linearizability versus Serializability (24 Sep 2014)
- MSR Silicon Valley Systems Projects I Have Loved (19 Sep 2014)
- Understanding Weak Isolation Is a Serious Problem (16 Sep 2014)