What value I can add though, is that I've read through a considerable number of profiles from applicants who have successfully been admitted to Stanford. I've also been in touch with several of these and learnt more about their background. I've applied twice and I've read just about everything that there could possibly be online about the process, and several actual books too. For a lot of the last year, it's all that's been on my mind (unhealthy, and unfortunate for my friends and family). I've also been in touch with a family friend who is a professor of a computer science graduate program at a state university. This advice will apply to many other graduate schools too - I picked Stanford since it's the only one of the big four that has an established and popular general computer science Master's program. (Carnegie Mellon started theirs only a couple of years ago, and Berkeley only offers a Master's of Engineering program. MIT only admits applicants with a PhD as their degree objective.)
This post isn't mean to put you off applying to Stanford - but it's mean to bring you down to the ground and help you understand the harsh and competitive reality of applying to the number 1 US Master's program in computer science so that you can make an informed decision about whether you want to spend your $125 there (and many hours of your time applying).
The Competition
The first thing to note is that there are about 700 applications for approximately 120 offers (extrapolating based on data available here). Nearly everyone who gets an offer takes it. Rather than taking this as 6 people for every place, think about it as there being 580 other applicants who you must be better than in order to get admitted. This figure includes HCP applicants who, more often than not, will have taken NDO classes (see the next section) and hence will have a slight advantage over external applicants.
While this pool of applicants is reasonably self selecting (i.e. most will be incredibly competitive) - there do seem to be a large number of unqualified people who apply simply on the back of the Stanford name. This undoubtedly makes the admissions committee's job much harder and increases the chance of your application being a false negative - i.e. rejected despite being perfectly well qualified.
The Process
This is how I imagine the committee's evaluation process to be, based on what I've read around the interweb (and on this paper).
Firstly, applications are pre-screened for those that don't meet a minimum GRE and GPA threshold (see the next two sections).
Secondly, some (but not all) of the committee will look at each application and assign it a score. These scores are normalised between members so that the distribution of scores are roughly equivalent. These scores are then summed to give an overall score for the applicant. Based on specific thresholds, applications are either accepted or rejected. This threshold is different for different applications - it is higher to external applicants than for internal applicants who have previously studied at Stanford. For the Stanford MS CS program, HCP applicants (their part time option for people who work in the Bay Area) are considered together with full time applicants. Since their primary goal is to evaluate how well you'll do at Stanford level coursework, having taken NDO (non-degree option) classes and having scored well in them suggests you will cope and hence there is a lower threshold for these applicants. See this ancient email for more information.
An easy way to get ahead in the Stanford applications game is to take a handful of NDO classes online and do well in them. These are not cheap however, especially compared to the plethora of free MOOCs available online.
GRE
Stanford themselves state on their FAQ page that a strong application would include GRE scores in the 90th percentile. The first time I applied, my scores were in the 89th and 84th percentile - high but not high enough. Unless every other aspect of your application is stellar, I wouldn't bother applying with scores that aren't in the 90th percentile (a fact that I realised after my first rejection). This isn't an impossible score to achieve - it just requires a month or more of reasonable studying. Doing well on the GRE is all about practice - and if you're unable to do well on the GRE after a significant amount of practice, then perhaps graduate school isn't for you. Before applying for the second time, I studied a little harder and was able to bump my scores up to the 93rd and 96th percentile without much difficulty.
Grade Point Average
The successful applicants I've seen generally have a stellar GPA (there are exceptions of course, but I'll talk about that in a moment). Successful US applicants seem to mainly have GPAs greater than 3.6 / 4.0. International applicants tend to be in the top segment of their class. Be wary if you're an international student at a university like Oxford or Cambridge - your 1st class 70% mark in your papers will translate badly (even though the admissions committee are aware of the different grading scales) - a 70% in an American university translates, I'm told, to a C grade. This does not reflect well at all. Another caveat (which I failed at foreseeing) was that Stanford's FAQ page suggests putting in the minimum required GPA if your undergraduate university doesn't provide one. I left this blank which defaults to 0.0. If any sort of harsh automated filter is used - my application will probably go straight to the rejection pile.
A note on automated filters - from what I've read (and it's not clear whether Stanford has implemented these in their admissions workflow and in what form), filters will only discard your application if you fail on both the minimum required GPA and any minimum required GRE. Harsh but an easy way for the admissions committee to focus on the known top applicants. Yes, it's unfair - as we all know, many academically challenged applicants struggled at university and they've gone on to make millions or do world changing deeds - but computer science graduate schools can afford to be this selective.
There are just so many applicants that they don't need to take bets - they just want people who they know will cope with their courses, and so they use past performance as an indicator of future performance. Some universities are harsher than this than others - University of Illinois at Urbana-Champaign is notorious for wanting incoming students to have a near 4.0 GPA, even for their professional MCS program. Of course this puts applicants from highly competitive universities at a disadvantage - while I struggled to maintain high exam marks at Cambridge, I could have studied at other universities where examinations aren't graded on a curve and done extremely well.
Additionally, note that university ranking has much less of an effect than you might hope. It matters less where you went than how well you did there. They won't take a mediocre applicant from a top 10 university over a great applicant from a top 50 university - all other things being equal.
Extra-Curricular
Additionally, you may think - it's OK, I didn't do so well during my time at university but I have great extra-curriculars! That's perfect - if you're applying for an MBA program. I cycled for Cambridge University and across a frickin' continent - that's great, but Stanford probably doesn't really care. Sure, you may have made it to Everest Base Camp or the summit of Mount Kilimanjaro - but that has little bearing on how well you're going to do in their graduate level courses (although it will stead you well in all those future walking meetings that technology companies are beginning to love).
What Stanford and other top computer science graduate schools want to see, however, is that you are a great computer scientist. For instance - you've started technology companies in your spare time (which might explain low grades) or you're a programming competition fanatic. If you're going for a PhD program, they want to see that you're a good researcher - so you need to have published at least some good quality research. There's a certain irony in the fact that you need to have research experience in order to gain admission to a course where you effectively learn how to research but that's the changing shape of the world these days.
Research experience is extremely beneficial although not mandatory. Academics live mainly to publish papers, at least it seems that way in the US. If you've written a paper, you're effectively speaking their language. It's incredibly hard to publish a paper when you're not at university (unless you're lucky to be in a situation where you can do so through) - and still very hard to do so while an undergraduate student. It helps a lot though.
Letters of Recommendation
Another large pit ripe for falling into, especially applicable to international students - is that letters of recommendation are preferably written by a professor who knows you well. Admissions committees view the source of the letters in this order: professor they know > professor they don't know > general academic (lecturer, etc.) > graduate student > line manager > colleague. This is because a professor's academic reputation is at stake when they write a letter of recommendation - so logic dictates they are more likely to be honest. They also have a better understanding of what skills are required at graduate school.
This is incredibly difficult - at most British universities, lecturers have a hands off approach to teaching outside of lectures themselves. I know just a single professor well enough from Cambridge - who was an unreliable letter writer at best and a disastrous letter writer at worst (in the last application round he spent a total of 17 minutes on one of my letters). My strategy has been to solicit strong letters from less prestigious non-academic letter writers who know me well - such as my current and previous manager, both of whom had good things to say about me. I figure a very strong letter from someone less well known is better than a nondescript letter from a professor who barely knew you.
American letter writers are much more effusive in how they write about candidates - be aware of this when you brief your letter writers. For example, everything 'good' should be 'great' and so on. Furthermore, brief them on the sort of content that they might want to include - on the basis that the admissions committee want to know how well you will do at graduate school.
The categories I asked my writers to mention were:
- Research ability / ability to succeed at graduate level
- Comparison against peers of a similar experience level
- Hard examples of projects I've done (well)
- Leadership skills, passion, work habits, character, social skills, writing skills, presentation skills and other accomplishments
Additionally, if you have a low GPA - or some overt blip in your performance, it's very helpful to get a letter writer who knew at the time to acknowledge it.
Statement of Purpose
The problem with my statement of purpose essay and those written by most other applicants is that it's less of a statement of purpose and more of a resume in prose form.
What I'm going to say next is painfully obvious, yet is something that nearly all of us mess up. Make your statement of purpose an actual statement of purpose! You need to say what you actually plan to do - why you applied, what you plan to do while enrolled (what courses? what research aims?) and what you plan to do after graduating.
You should aim to specialise each essay as much as possible (and SRSLY, if you copy and paste, make sure you check for errors). This means mentioning courses that you would like to study, professors that you would like to study or research with and why that particular program is perfect for you.
Start this early - the process of writing the essay may help you realise that you actually probably don't want to study there so much. This is helpful because it means you'll either save yourself the application fee or it will sting slightly less when/if you get rejected. Additionally, it's one of the few aspects of the application that is totally in your control so only a fool wouldn't make full use of this advantage.
One final tip - think of your essay as being similar to a cover letter. Instead of saying why you want a particular job and using examples from your resume to back it up, you're saying why you should be admitted to particular program and backing it up with examples from your life.
Rankings
Try not to fixate too much on the US News graduate school rankings. It's not a bad place to start - but you need to actually look at the programs and departments in depth before applying. I see so many applicants who blindly pick the top 10 and apply to these - this is a recipe for failure. Look at the credits required for graduation and try to compose an actual program of courses for yourself (as best you can). I tried this with several universities and realised that actually they didn't offer anything I wanted to study.
Professional versus Academic Programs
A note on professional programs versus academic programs. Professional programs are definitely easier to get admission into than academic programs. Academic Master's are used by students with average to good profiles to get valuable (research) experience and brush up their GPA before applying for a PhD program. Generally admissions committees for top departments seem to only accept applicants with a PhD (or a career in academia) as their career objective to academic Master's programs - unless you have a particularly strong background or there is an otherwise compelling reason to admit you. I fell into this trap this year - and was quickly rejected by many of the academic programs I had applied to.
Finances
If you're going for a Master's program and you can't afford to - then reconsider strongly whether it's worth applying to many of the top programs. As I said, they are so oversubscribed that they don't need to offer financial aid to attract students and nearly always won't. Those that do, for example the University of Wisconsin at Madison - are considerably more oversubscribed. Last year they received 1220 applicants for both PhD and Master's programs - and fill fewer places than Stanford (about 70 Master's students graduate per year).
Contacting Graduate Schools
In order to stress the point about over-subscription - it will be extremely difficult to get a reply from the admissions office for many of the top universities during application season. They will not pick up the phone or reply to emails. You will have more luck outside of September to April, but they're still likely to be very brusque. If you're applying for a professional program, you'll have a better chance of talking to someone - since these programs are more profitable for the university and therefore they provide better support for applicants. If you get rejected from a top university, don't expect any feedback - and don't expect them to provide much in the way of useful advice if you do manage to talk to someone. Your best bet is one of the many graduate forums (see the resources section at the end of this post).
Decisions
When it comes to decisions, universities send out their decisions at a similar date yearly. You should be aware that often universities will send out all of their acceptances first and often wait for up to six weeks before sending out rejections. This gives them the flexibility to offer any quickly rejected offers to other applicants - although this is rare, since most applicants will sit on offers until they all come in. If you see a rash of acceptances on one of the decisions trackers online and you haven't heard anything within a day or two - assume you've been rejected, it's better for your sanity. Some universities (such as UT Austin) are particularly evil - and don't send out rejections at all.
Area of Concentration
Finally, it's worth saying that you should consider what area you want to study carefully. I want to study artificial intelligence and I've always wanted to study this. There were a couple of courses taught at Cambridge but I didn't get to immerse myself in the way that I hoped and time constraints made it very difficult to devote enough attention to them. That said, my employment experience and extra-curriculars are unrelated to the field. This loops back to what I said earlier - in order to gain admission for a course to learn about AI (or any other specialization) - they want to see experience in AI. This matters less so for general computer science courses but if you're applying to say CMU's Robotics Institute (as I did) - you haven't got a chance without relevant experience.
Additionally, some areas are vastly more popular than others. I'd assume that admissions committees want to balance their classes as much as possible, so if you apply for AI/Machine Learning/Robotics or some similarly oversubscribed area - BE WARY! Competition within that area will be tougher (on an absolute numbers basis). Bear in mind that you can always choose courses from a different specialisation to the one you apply for.
Conclusion
To conclude - I apologise if I sound overly cynical - I just want to be realistic about your chances (and mine!). With the economy pushing graduates onto higher education across all subjects and the considerable salary differential (or, the perception of one) between technology jobs in the United States and elsewhere, there are more applicants than ever before. It's even harder if you're an international applicant as most of us are. There's some great advice on the internet but much of it was written a few years ago, and as any good technologist knows, things change so very quickly.
Good luck with your application, I wish you all the best. If you have any questions or feedback, please message me on The Grad Cafe. I can't promise to reply but I will try.
I've also written about the economics of getting a Master's degree here, as well as about adequate preparation for incoming robotics Master's students. Finally, another post about employability with a Master of Engineering degree.
A Note on Copyright
This post is published under the Creative Commmons BY-NC-SA license. Please feel free to share it along with with a link back to this page.
Resources
GRE Preparation
- Nova's GRE Math Prep Course - Full of harder and more comprehensive examples than the official GRE book.
- Essential Words for the GRE - A short book that was very helpful when learning vocabulary.
- GRE The Official Guide to the Revised General Test - The official ETS GRE book. A must have.
- Painless GRE - An Android application that was extremely helpful to brush on vocabulary while commuting to work.
On Letters of Recommendation
- Advice from UW's Michael Ernst
- Advice from Brown's Shriram Krishnamurthi
- A Sample Letter
- Some Advice on About.com
Books
- Graduate Admissions Essays, Fourth Edition - Donald Asher - An extremely well written collection of essays along with analysis.
Forums
- Edulix - Edulix is an Indian graduate programs forum. It has a trove of data through their 'uniSearch' on who's been admitted where. The uniSearch is incredibly clunky but is a valuable resource to see how competitive you might need to be.
- The Grad Cafe - My favourite grad applicants forum. They have a great results tracker and users are very helpful.
Internet
- Graduate Study in the Computer and Mathematical Sciences - A Survival Manual - useful advice on all aspects of graduate life.
- Mike Gleicher's Graduate School FAQ
- HOWTO: Get into grad school for science, engineering, math and computer science
- Advice for researchers and students
- Why Go to Graduate School and How to Get into the Program of your Dreams
- Applying to Graduate School in Computer Science (A U.S. Perspective)
- Jason I. Hong's collection of hyperlinks
- GradDecision - supposedly authored by Stanford's Andrew Ng
- Getting into CS Graduate School in the USA
- Demystifying the American Graduate Admissions Process - a paper written by Karthik Ragunathan, a Master's student from Stanford who was part of their MS admissions committee. Perhaps the most useful single document you will read.
- Ktik's Two Cents - a blog of admissions advice by Karthik
A Collection of Rejection Letters
On Google+ here.