Since you intend to do it on CS I want to point out that the GRE Subject Test on CS (the one usually asked) will not be administrated anymore.
According to the ETS website:
The last administration of the GRE Computer Science Test will be in
April 2013. The test will be discontinued after the April 2013
administration. Scores will continue to be reportable for five years.
I wanted to say this in a comment (since it's not exactly an answer, but I think it's an important information to you), but I can't since I don't have enough reputation on this website to do it :(
Therefore, even though I think you wanted more a opinion from people already in academia, I feel obligated to put some more thought on my answer:
I'm a student, currently undergrad (will graduate at the end of this year) and I'm "kinda on the same boat" (from a third world country, wanna do a Ph.D. on in US in CS and I've being somewhat lost regarding what to do).
Here is a compilation about what I have found so far that may be helpful to you:
The notions of PhD and MSc in the US may be somewhat different from what you are used to. Quoting from something I've read in a university website (can't remember which one right now) "Masters is about breadth, PhD is about depth".
At least in my country (and I'm guessing it may be the same for yours), both are pretty depth-oriented. -> Keep in mind that, some MSc are breadth oriented, these may not be the droids you are looking for.
Also, the programs vary a lot from place to place... (And if you are used to the fact that you have to do a MSc prior to the PhD, this is not true for a lot of PhD programs in the US, you can join then directly if you have a bachelor's degree).
Example: At CMU, the masters degree is "breadth-oriented", meaning that you take a lot of advanced courses in various topics, and the PhD is totally research-oriented (average 6 years, in contrast to the average 2-year MSc + 4-year PhD in my country). But in MIT, as far as I've understood, you apply for grad school, if you are accept and you don't have a MSc, you are put on a MSc program, if you already do, you are put on the PhD program (so, seems to be a lot research oriented on both programs). -> Make sure you read thoroughly how the programs in the universities you intend to apply are, cause there's no "standard".
About the "money" part of your question, as far as I've seen, it goes something like this:
- MSc: You have to pay for tuition, you may get a paid TA-ship
(Teaching Assitant paid position), you may get an RA-ship (Research
Assistant paid position), but nothing is guaranteed.
PhD: Top universities usually pay you monthly and if the professor that is orientating your research doesn't have funding, you need to get an RA or TA job. On other universities,you may need to narrow your options to professors that have funding.
-> Keep in mind that, PhD is a better option money-wise, but harder to get in.
As pointed on the comments, research capability is a must (for the "depth" programs at least) and matters even more than grades. Quoting from a CMU professor on the "Grad School Talk" available at their website:
It does not help you, in my opinion, to be closer to 4.0 [GPA] as
opposed to 3.5. It’s a much better idea to spend your time on research
than on optimizing your GPA.
- Keep in mind that proving your research capability matters a lot.
But another important quote from this same pdf regarding grades is:
Your grades may be somewhat low – under 3.0 – because you were having
a good time in college and you may therefore be having trouble getting
into a Ph.D. program. In this case, you may want to do an MS and use
the time to boost your grades and reapply after the MS.
Another important thing to note: The things that each program prioritize when looking at your application seem to vary a lot, even among programs at the same university/department. -> Try to figure out what the programs you are aplying prioritize. (eg: by reading their websites well).
About TOEFL: It matters a lot, but as far as I understand, it matters in a sense that it prevents you from getting in a program if you don't have the minimum score needed. *Each university asks for a different TOEFL score.*
The top universities (regarding CS programs) usually ask for 100 on the IBT (internet based test, out of 120), an exception being Stanford, that asks for 110.
Regarding IELTS: All universities seem to accept TOEFL, a lot of them seem to accept IELTS, but you need only one of them, so I suggest you go for the TOELF (for US universities).
As a plan of action, I suggest this one (which is kinda what I'm doing myself).
- Boost your ability to prove "research capability": It's VERY important that you have some prior research experience. Have you ever done research as an undergrad? Do you have professors that can write a recommendation letter for you? If you don't, you are (probably) gonna need to pursuit this kind of stuff. My suggestions if this is the case: Pick a professor that does research in a area that you are interested (better if it's a professor that may remember you from university) and try to contact then to see if they can let you assist on any research projects (even if voluntarily), or take some time to read his recent published papers and understand then, then go talk to him about this. Also, try to see if getting a job at any private research company is an option (in case they exist in your country, in mine "private research" is pretty much nonexistent :( ).
- Figure out what your "level" is: What universities/programs that you want to get into that you can realistically hope to get in. This can be done by reading the programs/universities' websites, search for some information about the qualifications of people that got in, etc.
- Make a list about the programs you are interested in: After figuring out your "level", what universities from this set have programs that you are interested to?
- Read everything you can about this programs and pick the ones you want to apply: Learn what these programs prioritize on applications, what options do you have regarding money, etcs. Finally decide which ones you are going to apply and see what each of then require.
- Get ready for the aplications: Taking the GREs (or whatever they are gonna use, now that the CS subject test is gone), TOEFLs and bla bla bla takes a lot of time. Prepare for the stuff you need to take, search for example tests on the internet, study for them, etc... and take they as soon as you are ready.
FYI: As far as I've seen, the deadlines for applying for grad programs are usually in December, for pretty much all universities (they gotta have something in common, after all).
Some useful stuff to read:
- CMU's "Grad School Talk" www.cs.cmu.edu/~harchol/gradschooltalk.pdf -
The one I quoted a lot in this answer.
- Demystifying the American Graduate Admissions Process: nlp.stanford.edu/~rkarthik/DAGAP.pdf - I found this paper extremely
helpful, it's written by a guy that worked on Stanford's admissions
committee, he also has a blog where he talks about this stuff (link at the end of the paper).
- In case you are unfamiliar with how the GPA works in the US, here is
- If your grades are low, it may be hard to enter the top universities (although I don't see it as impossible) but keep this in mind: A) A lot of "not the top, but good ones" are very good, and may even be very strong in research at an area you are interested in. B) I believe that any recommendation letter saying something like "This guy showed up out of nowhere wanting to assist in my research (even though he was out of academia for some years and was working on a regular job) and helped a lot" shows a lot of "research capability", a lot of self-motivation and can be VERY strong.
Good luck. :)