How can I increase my chances of being accepted to a top 20 MS CS program? I just graduated from one of the older IITs (Indian Institute of Technology), majoring in EE and have a GPA of about 7.8 / 10. I want to pursue a masters degree in computer science from a top 20 university in the US. I have a paper published in an international conference on machine learning and have good test scores(GRE / TOEFL) but I'm worried that my grades could affect my chances. I have some experience in competitive programming, my team finished among the top 10 among 300+ teams in the ACM ICPC regionals and I have a decent Topcoder rating. Not sure if this matters though. I have also made contributions to open source projects and have open sourced some of my projects, some of which have been downloaded thousands of times.

I've seen people from  unknown colleges with higher GPAs getting in to places like Stanford, UIUC, Cornell, CMU etc. Realistically, do I have any chance of getting admitted in a top 10 or 20 program. If not, what can I do to improve my chances within a year?

UPDATE: Well, I guess grades do matter, I didn't get into any of the good schools I applied to. I'll have to give up my hopes of grad school now.
Realistically, do I have any chance of getting admitted in a top 10 or 20 program.


With a publication in an international conference?  Definitely!

Of course, I'm assuming that you mean a good publication in an internationally recognized conference (not just a conference with papers from more than one country), ideally indexed in DBLP and available over the web.  I'm also assuming that you will have strong recommendation letters describing your contributions to the paper, in specific, personal, and credible detail, as evidence of your research potential.  Ideally, your letters will make direct comparisons with other IIT graduates who have succeeded in strong graduate programs.

I'm also assuming that you have a compelling statement describing your research experience and interests, written in flawless English, and that those interests are a good fit for the faculty at your target departments.  Be sure to describe your ongoing open-source projects.  (The contest stuff?  Meh.)  As Daniel suggests, focus on the work you want to do, not the ranking of the department.

And of course, I do mean you have a chance, not that you have a sure thing.  Graduate admissions is a random process; you have some influence on the distribution, but someone else rolls the dice.  Machine learning is a particularly competitive area, so if you want to continue in that direction, you should apply broadly.  In particular, you should not limit yourself only to programs that appear at the top of some list in some stupid magazine.  Rather, aim yourself at departments whose faculty and students have similar research interests to your own.

(I regularly serve on the CS grad admissions committee at UIUC.)