What are my options for graduate school in computer science?
There are typically three kinds of graduate programs in computer science:
"Retraining" master's degrees. These are designed for people that have not majored in computer science as undergraduates in order to retrain themselves for a job. These degrees aren't really computer science degrees, but are typically in fields such as software systems or information technology. For example, the University of St. Thomas in Minnesota offers programs such as these. Carleton computer science students are probably "overqualified" for this kind of degree.
"Terminal" master's degrees. These are master's degrees in computer science that are typically two years in length. These programs are actually reasonably rare. The more common approach for a master's degree program is to have it overlap with a Ph.D. program, as is described below.
Master's / Ph.D. programs. This is the most common approach found at most major universities for obtaining a master's degree or a Ph.D., and is the approach taken by essentially all Carleton graduates that go to graduate school in computer science. In such programs, there typically isn't a strong distinction between the master's program and the Ph.D. program. Students working on both degrees take courses together. The master's degree typically takes two years to obtain, and may consist of coursework or coursework plus research depending on the institution. It is usually the case that you can attend one of these programs as a Ph.D. student and stop after two years with a master's degree if you change your mind, assuming you have fulfilled the right requirements. Likewise, a master's student can typically apply to continue work on a Ph.D. with a seamless transition.
Will I have to pay for graduate school?
Typically, no. Most graduate programs accept students with financial support as a teaching assistant (TA) or a research assistant (RA). Some graduate schools might be more likely to grant funding if you are a Ph.D student. Many will grant funding regardless of what degree you are pursuing, so long as they believe you will be useful to them as a TA or an RA. Tuition is typically paid for. Beyond that, you won't earn much, but it is typically enough to cover housing, food, and the essentials.
You should apply for an NSF Graduate Research Fellowship. Applying for one of these enhances your graduate school application, and if you get one, it makes you really valuable to graduate schools. It means they don't have to pay a stipend to you themselves, since money is coming from NSF instead. Moreover, it may give you an opportunity for an advanced start at doing research, so you can finish sooner. How do I choose where to apply to graduate school?
You can't apply to all of them. You need to cut down the list somehow, possibly arbitrarily. Some of the following criteria may help you to narrow your choices.
Geography: Is there some part of the country or world in which you would prefer to live? Would you prefer an urban location, a rural location, or something in between?
Specialization: If you haven't decided yet in what area of computer science you wish to focus (this is most common), you might want a large department that has multiple faculty members covering all the major areas. If you do have a preference for some areas over others, you can choose departments that emphasize those areas. You can get a flavor for what emphases a department has by visiting its web page and reading about the research that faculty members do. Even in large programs that cover most fields, some programs have more of an applied emphasis, others have more of a theoretical emphasis. See if you can get a sense of what the department is about and how it fits with your own desires.
Range: Make sure that you apply to a range of quality of schools. The same logic applies here that you may have used when applying to college: choose "reach" schools, "reasonable" schools, and "safe" schools.
Coordinate with other students: In order to maintain variety among their students, some graduate schools admit a fraction of students from each undergraduate institution that submits applications. It is possibly to your interest to coordinate with your fellow students to diversify which schools you apply to. Of course, this shouldn't be taken to mean that no two students should apply to the same school, as this would severely limit your options (and we have lots of successful examples of getting multiple students into the same graduate school on a given year). On the other hand, it may be counterproductive for all of our students to apply to the same school.
Look where Carleton alumni have gone. Graduate schools are probably more likely to accept students from undergraduate schools where other students have been previously accepted and have performed well.
Once I have received acceptance letters, how do I decide which graduate school to attend?
Geography and specialization as mentioned above still apply. Additionally:
Visit as many of the schools that accepted you as possible. Some of them have open house days on which you can hear about the department and meet other faculty members. How does it feel?
Talk to graduate students on a visit if possible, or by phone otherwise. Ask the department administrative assistant for phone numbers for students that you can talk to about the program. Are they happy? Are they making progress toward their degree? How long does it take the typical student to finish? Graduate school is somewhat stressful and uncertain for everyone, but some programs are significantly more friendly than others.
How do the financial offers differ between the schools? This should probably be of secondary importance since you're not going to make a bundle of cash anyway in grad school, but dramatic differences in packages could certainly swing your decision.
Computer science graduate program rankings based on a National Research Council study. Not the easiest source to scan, but this is based on a fairly detailed study.
Graduate program rankings at phds.org. Also based on the NRC study but presented differently
U.S. News and World Report best graduate computer science programs. You can also subselect by broad specialty area.
Mor Harchol's thoughts on graduate school in computer science. This is interesting reading based on one person's experiences at some of the nation's top-ranked graduate schools. Keep in mind that different people have different experiences based on their personalities, research areas, and schools. Some of what Harchol says may not generalize well beyond the particularly elite schools with which he has experience. This is worthwhile reading, but keep the perspective of the author in mind.