This page is a repository of information about graduate studies in Computer Science. It is intended to be a resource for students applying to graduate school as well as for those who are considering it.
- 1 Types
- 2 What is research?
- 3 Careers
- 4 Experience
- 5 Cost
- 6 Application
- 7 How to prepare
- 8 FAQs
Graduate degrees awarded in CS are (usually) limited to Master of Science (MS) and Doctor of Philosophy (PhD). Some schools have separate admissions for the two degrees. Some schools (eg, MIT, UW) don't have a distinct MS program, in which case the MS is often earned along the way. (For a variety of reasons, some students bail with the MS.)
No research. Take ~2 years of more advanced classes. Often does not include financial support. As a revenue stream, some schools (eg, NYU) accept anybody with a pulse into their MS program and offer no financial support. This option is widely held to be the most financially advantageous. Sometimes a company will pay for the employees to obtain a course-only MS.
Yes research. Take ~1 year of more advanced classes and then spend ~1 year "doing research". Sometimes includes financial support (usually depends on the faculty member with whom you're working: if they have a grant under which your work falls, you can often get tuition covered by a research assistantship---see below).
Tons of research. Amount of coursework varies, between 1 and 2 years. After that, it's all research, all the time. Duration is usually 5-7 years total.
What is research?
The creation of knowledge.
But first, you have to know the current state of knowledge, which means reading bazillions of research papers, taking notes, thinking, talking, synthesizing.
Once you've gotten the lay of the land, you're going to have ideas. Put them into motion, build something new and different, measure it, report your results.
Experimental vs Theoretical
Original research (as opposed to, eg, surveys of existing research) in CS usually falls into two camps: experimental and theoretical. An experimental research paper often reads like this: "there exist systems/applications that solve problem X; I built something that solves the same problem; I measured my solution against pre-existing solutions and it's better by a factor of Y". A theoretical research paper often reads like a really long, elaborate proof of the sort you write in, eg, CSCI 301, albeit with more context.
What can you do with a graduate degree? With an MS, your opportunities are more or less the same as with a Bachelor's degree. A PhD opens up some different doors, however.
You could be employed as a better (maybe) code monkey.
Companies like Google, Microsoft, Apple, Amazon, and IBM employ people with PhDs to solve really hard (and, some might argue, really fun) problems. Extremely few companies these days, however, pursue "blue sky" research: that is, research without a marketable end goal in mind.
The big national labs like Lawrence Livermore, Sandia, Oak Ridge, PNNL, etc.
Institutes of higher education generally fall into two categories: teaching-focused and research-focused, with surprisingly little gradations in between. The main differences are: how much time you spend with undergrads, how much time you spend writing grants, how much time you spend doing research.
"R1 institutions", indicating status conferred on them by the government as research-intensive schools. Generally speaking, lots of research, lots of grant writing, much less interaction with undergrads (because they don't do the kind of research you're being paid to produce). Examples: MIT, CMU, all the Ivies, almost all big state schools.
Liberal arts colleges, teaching colleges, undergrad-only schools. Generally less research (especially because no grad students), much less grant writing (if any), and much more interaction with undergrads. Examples: all the NESCAC schools, community colleges.
(This is specific to PhD.)
As mentioned above, 1 to 2 years of coursework, usually advanced versions of courses you took as an undergrad: eg, Advanced Algorithms, Advanced Theory, Advanced Operating Systems. There will likely also be more narrowly-focused courses. Schools will often allow you to re-take undergrad courses as a grad student, just to brush up on the material.
The bulk of your time will be spent doing research: reading papers, talking to people about ideas, making ideas happen.
Either after your coursework is complete or you've got a bit of a foothold on the research side of things, you'll take some sort of qualification exam. This can take many forms. It could be:
- a brutally long written exam covering all aspects of computer science;
- an oral presentation about existing research after which you are grilled by a faculty committee;
- a research project for which you give an oral report and are afterwards grilled by a faculty committee;
- or something completely different.
Finding an advisor
After your quals, you'd better have an advisor: a faculty member who has agreed to advise your thesis work. This relationship can sometimes be arranged before you even matriculate, often it is arranged before the quals happen, but it absolutely needs to be in place after you've finished quals, because your life for the next few years is going to be working with this person to produce a thesis. As you might expect, the health of this relationship is extremely important to your future.
Once you and your advisor come up with an idea whose scope is appropriate to a PhD thesis, you will begin preliminary work on it. You will also identify other faculty members (between 2 and 4) who will sit in judgment on the work as your thesis commitee. The preliminary work will likely involve some proof-of-concept implementations or initial theories that form the basis of the Thesis Proposal. This is a document and accompanying oral presentation (to your thesis committee, though often they are open to the public as well) in which you propose a body of work to perform and argue that it is original, meaningful, and tractable. The committee will answer "yes", "no", or "yes, but please make modifications X, Y, and Z". At this point, a "no" answer is extremely rare. If you get a "no", it's your advisor's fault for letting the process get to that point (seriously).
Then you go off and do the work. Once the work is done, you write it up in a super long-form academic research paper (usually on the order of 100 pages). You will present it orally to your thesis committee (these presentations are traditionally explicitly open to the public). They will again answer "yes", "no", or "yes, but please made modifications A, B, and C". Like the proposal stage, a "no" answer is extremely rare, with the same caveat given above. A "yes" answer is also somewhat rare; usually the committee requests some additional experiments, prose, lemmas, etc. And then you're done. You get (to buy) a fancy gown and hat that is the symbol of your degree. In Finland, they get swords. I'm jealous.
MS degrees usually take about two years to complete.
PhD degrees are much more variable, but generally within the 5-7 year range.
Part of performing research is reporting results; in CS, this usually happens at conferences, symposia, and workshops scattered around the calendar and around the globe. You can sometimes get to travel quite a bit for presentations, collaborations, etc. (Pete went the following places: Washington DC, Illinois, Oregon, São Paulo, and declined the trip to Finland.)
The following mostly applies to PhD programs. Masters students can get assistantships or fellowships, but it's a bit rarer.
Varies greatly by school, but support is often available in the form of teaching- and research-assistantships. Such an appointment usually covers both tuition as well as a stipend that covers living expenses (around $2-3k per month). It's probably reasonable to assume that your time in grad school will be financially break-even: you won't go into debt, but you won't come out much richer either.
As a PhD student, you will likely be on either a TAship or an RAship every semester, meaning your expenses are covered. Due to the priorities of funding organizations, theoryish students often TA more than systemsy students, which can cut into the time they have to do research and thus finish their degree.
Teaching Assistantship (TA)
This is often a semester-to-semester assignment, whereby you are attached to a single course and do whatever the professor for that course needs done. You could grade homework and exams; you could hold office hours or recitation sections; you could give full-on lectures. It varies by school, by course, and by professor.
Research Assistantship (RA)
If your work contributes to fulfilling a grant received by a professor, you will usually be given a research assistantship, whereby you perform research in exchange for your tuition and stipend being covered. This arrangement is what makes people joke the grad school is like indentured servitude.
Fellowships are external sources of funding that cover the same costs as the assistantships. The benefit of fellowships is that they come with far fewer strings attached: whereas with an assistantship you have to either TA or work on research for a specific grant, the fellowship often allows you to pursue your own agenda. They add a great deal of flexibility to your grad school career and are an impressive entry on your CV.
Other options include
Lots of fellowships (in particular the NSF one above) specifically hope to broaden participation, meaning if you are a member of an underrepresented minority, you are especially encouraged to apply. For some fellowships, again the NSF, you can apply both as an undergraduate intending to go to graduate school and once you are in graduate school. We recommend you do both.
What's it take to apply? Find out!
- Philip Guo's Five-Minute Guide to Ph.D. Program Applications
- Guide to Applying to Ph.D. Programs in Computer Science
Applications are usually due in or around early December. Fellowship applications (see below) may be due earlier.
Applications usually consist of the following materials.
Letters of Recommendation
Usually three. Professors will be your strongest letter writers (this is not an opportunity for family friends to give character references). In order of priority, consider:
- Professors with whom you've done formal research (at Midd or elsewhere, eg, on an REU);
- Summer internship supervisor;
- Professors with whom you've worked on other independent projects (eg, a 500-project) or substantial research-like projects (eg, a 701-project);
- Professors in whose classes you have performed well.
The last tends not to carry much weight as it duplicates the information on your transcript. However, this could be an opportunity to demonstrate your multidisciplinary background (if applying to multidisciplinary program). And in some cases, you may need a "class letter" to get to three (not uncommon).
The best letters are superlative, specific and quantitative. You want to find writers who can write that kind of letter for you. The resources linked above include advice on how best to approach potential recommenders.
Help your letter writes produce the best letters possible by providing (at a minimum): a clear spreadsheet with the particulars (dues dates, method of submission, name/type of program, addressee), your personal statement (statement of purpose), CV and transcript. You want your recommender to be as specific as possible. Give them a lot to work with.
It's the SAT for grad school. The scores are valid for 5 years, so even if you don't intend to apply right away, consider taking it now. You will never be better at taking standardized tests than you are right now. The GRE doesn't play a big role in the application process, so don't let it stress you out.
GRE Subject Test
There is currently not a GRE subject test in CS like there is for other subjects.
Statement of Purpose
A written statement describing why you want to go to grad school and why you will be a good graduate student (and researcher). Think of being a Ph.D. student as a job, and this as the cover letter for your job application. The resources linked above have helpful advice for writing this document. The major topics to cover are: what you want to do (obtain a PhD in field X to do Y); why do you want to do that thing; and most importantly, how your past experiences and accomplishments show that you will be successful as a graduate student. While the majority of this document will be the same for each school, you will typically append a paragraph specific to each program about why you and that program would be a good fit. In that institution-specific paragraph you typically list several faculty members you would be interested in working with.
Midd application-shepherding process in the fall
During the Fall semester, the CS faculty will hold meetings to shepherd students through the application process. We'll help you:
- identify schools to apply to;
- gather your application materials;
- edit your application materials;
- gather your letters of recommendation;
- submit applications.
How to prepare
- Excel in your classes.
- Spend a summer doing research (either at Middlebury or an external REU).
- Seek out independent research or research-like projects during the school year.
- Do a senior thesis (CSCI 702).
- Can I work for a few years and then go to grad school?
Yes! But unless you take a bunch of years in between, you probably still want your Midd professors to write letters so maintain those relationships.
- When I apply, do I have to know what I want to research?
No! You can take classes, get to know professors and their research, and figure that out when you're there. That said, in some programs (typically smaller programs) the faculty choose students during admissions and so you are admitted with the expectation that you would work with a specific faculty member in their research area. For those programs, you do need to have an idea of what research area you would be interested in, and the interests you express in your application statements play a role in the admissions process.