If you're considering graduate school in Computer Science

Considering graduate school in Computer Science? A good place to start is to talk with one of your CS Profs that you know well. In the meantime, here are some general thoughts on graduate school in computer science.

Why (or why not) grad school?

  • Reflect. Do some soul-searching. Why do you want to go to grad school? Think about your education so far. What are your passions? What are your goals in life? What excites you? What lifestyles might you want?
  • Avoid listening to what others tell you to do; think about what you want.
  • An MS is basically a technical degree that gives you more interesting job opportunities. A PhD is basically a research degree, which opens up a host of advanced and research-oriented opportunities.
  • Think less about how much money you can make but about quality of life. With a PhD in particular, you will often find there is more autonomy, freedom, vacations, travel, influence, creativity, authority, etc. In industry, MS and PhDs are often a ticket to eventual upper-level management.
  • Think more broadly than the major or course offerings at Dartmouth. There are other things - computer science, computer engineering, electrical engineering, computer information science, and even some very unsual special things at some places.
  • Talk to professors. Discuss your ideas and goals, and get some advice. Talk to some grad students here and elsewhere. Find out what it's like. Talk to recent alum friends about what they've done, why, and how they like it.
  • A PhD can be the ticket to jobs in academia, industry, and government, usually in some research or advanced development capacity, or in teaching at the college and graduate level. Or both teaching and research.
  • Understand that a PhD is about one thing and one thing only: research. You'll probably be required to take classes and pass qualifying exams, but these are relatively unimportant. If you have a PhD, nobody should care what your graduate school grades were (and if they do, eye them with suspicion). And nobody will care how well you passed your qualifying exams. It will simply be assumed that you passed your courses and quals.

    What people will want to know about your PhD work is your research. What's it about? How good is it? How likely is it that you will be able to continue being productive in your area?

  • Do you like inquiry, invention, creativity, exploration, reading, discussion, writing, thinking, teaching, discovering the unknown, etc? Do you like to work with others, or independently? (Both are big aspects of research.) Do you like to tackle unstructured problems, or would you rather work on a task assigned to you? Do you prefer thinking up new ideas and sketching out the basic fundamentals, or do you like to deal with finishing the details on a project?
  • You can always move after getting a Master's degree. Or take a Master's and run--to industry, or to another school

How long does it take?

4-6 years is typical for a PhD. It can take longer, however. I know folks who took 8 or more years for their PhD. 1-2 years is typical for an MS.

What will I do after getting a MS or PhD?

  • The PhD is basically a research degree. Note that scientific research today does not fit the "lonely scientist" or "lonely hacker" image, either at the graduate or professional level. Scientists--and computer scientists are scientists--do work with people. This is obviously true for teaching, but research is essentially a collaborative exercise. Meeting people and talking to people is a big part of my job, in fact.
  • An MS is essentially a technical degree, especially useful when you are graduating from here with a liberal-arts BA. It will open up a range of much more interesting jobs than you can get with a BA, with more responsibility, creativity, flexibility, and income, than the typical programmer-type job. At least, sooner.
  • Opportunities include academia, industry (research and/or development), and government (research labs).
  • Postdoctoral appointments are becoming more common. In this case, after your PhD you go elsewhere for 1-2 years to do more research under a different advisor, in a different place, on a different project. Then you would go on to one of the above situations. This is still somewhat rare in CS, though.

Should I work for a while between Dartmouth and grad school?

This is a very personal issue.

Advantages to working:

  • It gives you valuable perspective in grad school.
  • Sometimes the company will pay for your schooling.
  • Gives you time to consider whether you want grad school at all.
  • You can save up some money.

Disadvantages of working:

  • You get used to the big fat paycheck, and it's hard to take a 75% pay cut.
  • You get out of practice of "going to school".
  • If you didn't take GRE as a senior, you forget a lot.
  • If you did take GRE as a senior, the scores "expire" after a few years.
  • Sometimes you lose "currency" if your job doesn't allow you to learn as you work.

So, if you really know you want grad school, go for it. Otherwise, you might consider working for 2-3 years, and then going to grad school.

How do I pick a list of programs to apply to?

  • Choose the best programs that you can get into.
  • Add 1-2 "safe" schools, that you are pretty sure you'll get into, but you wouldn't hate to be at. Remember that it is possible you'll get into some of your preferred choices, but maybe not with financial support. So, choose good schools, but ones that are perhaps less competitive.
  • Pay no attention to the academic reputation of the university. It is essentially irrelevant. What matters is the reputation of the department (program) where you will be applying.
  • Do your homework. Get the informational brochures about the department. Find out what faculty are there, and what their research areas are. Look for the ones that are relevant to the kinds of research you are interested in. You need to find a fit between your and their interests. Preferably choose places where there are several possible faculty to work with (what if one of them leaves the department after you get there?).
    • Read their papers. Are you interested in their research?
    • Find Dartmouth alums who are now students there; talk to them or find Dartmouth profs who were grad students there and talk to them.
    • Student/faculty ratio.
    • Success rate.
    • Size of program.
    • What will you learn there?
    • What is required of you there?
    • Who is doing interesting work there?
    • Departmental dynamics...is there collaboration? Departments like this tend to be more congenial.
    • Placement of recent PhDs.
  • Look through journals in your area of interest; find out who is doing work in that area and where they are from.
  • Talk to Dartmouth professors who are in the same general field as the one you are interested in. Discuss the schools you are considering. Ask them for suggestions. Ask them about particular professors and programs. They have connections, too, which might get you more information.
  • Visit the campus. Tour the facilities. Talk to grad students. Try to get a feel for the atmosphere, the morale. This is more important than you realize. Consider things like office space (do they have a workstation on every grad student's desk?), library support, computing facilities, special research labs or computers, etc. These are important when you try to do research. Try to talk to the relevant professors. Consider the locale, and the cost of living.
  • Big, famous schools are not necessarily better. In a big place you may not really be able to even talk to the profs for a few years. Consider being a big fish in a small pond. On the other hand, small places can sometimes be somewhat limiting in terms of resources and variety.

How do I pay for grad school?

  • Many terminal-Master's programs (those where you are not planning to get a PhD, just a Master's) require you to pay tuition and fees. Note that many big companies will pay all this for their employees, sometimes on a part-time basis and sometimes as a year off for school, while still paying you that same huge salary! It's an option. (Same for PhD, too, though a part-time PhD takes forever!)

    On the other hand, in PhD computer science programs, they should pay you to go to grad school. Thus, when you are accepted, they will usually offer you some form of financial package. This usually means that they will pay all your tuition, sometimes the additional fees, and a monthly stipend. The stipend may cover 9 or 12 months of the year, and is usually $8K-$15K per year. You almost never have to apply for financial aid at grad school; they just consider all applicants. Check on each school's policies. These packages come in three basic forms:

  • Teaching assistantship (TA): You have to help run labs, tutor, grade, or even teach. First-year students rarely actually teach.
  • Research assistantship (RA): You help a particular professor with their research. This is uncommon in the first year; later, you might get this to do your OWN research in conjunction with your advisor's grant.
  • Fellowship: This is the best. Usually this gives you all the money but with no teaching or research opportunities. Some schools do this for many of their first-year students, with the expectation that you will become a TA or RA in later years. A really good deal gives this to you for 3 or 4 or 5 years.

    Definitely plan to apply for third-party fellowships. Many require you to be a US Citizen, but not all. If you can get one of these, they often pay more, usually don't require any teaching or other duties, and you can call up the schools and tell them you have your own funds...which they are definitely psyched about. It also looks great on your resume in the future.

    One thing to know is that your guaranteed student loans (GSLs) are deferred (interest-free) so you don't have to pay them while you're a full-time student. So when you graduate from grad school, and have a big fat paycheck, and inflation has reduced your loans to a fraction of their former value, then you pay them off.

What's important to someone evaluating your application

  • Most important are the letters of recommendation! The best letters are those that will be enthusiastic, be obvious that the person knows you well, and are from someone the reader can trust (e.g., someone with a reputation in academics, or the department chair, etc.). Choose people who know you well, and who can write a detailed letter. Also try to choose a senior prof who has some reputation in the field, or who can otherwise establish their reputation to the letter reader.

    For most letters, you have a choice of whether to waive your right to see the letter. You should always waive this right. Yes, it may bother you greatly to waive any right, but think about it this way. If you do not waive this right, then your letter writers will not be able to write about you in confidence. Your letter readers will know this, and the letters about you will be discounted. In essence, the one subjective source of information on you has become worthless. So make sure you waive your right to see your letters.

  • If you can, include something that makes you special, like a paper you wrote or the description of a programming project or the like. These "appendices" are perfectly fine and will often really make a big difference. Do not send a printout of code. But you might consider sending a disk with a cool program you wrote, if you really have something to show for it. (Or put it on the web and send them your URL!) Most people won't bother to try it, but if you make it easy for them to try it (label the disk clearly on what configuration they need and how to run it), you might try it!
  • Test scores and grades are somewhat important; bad scores and grades are enough to keep you out, but great scores and grades are not enough to get you in.
  • The essay is moderately important; in particular, it had better not be bad. The best essays somehow set you apart. Write your essay carefully, and rewrite it again and again. Tell them what research areas you are interested in, and why. Make it clear that you have a passion for research and would gladly charge through a machine-gun nest for the privilege of doing research. Tune the essay for each place you apply; tell them why you want to go there. Get the essay read over by someone else; make sure it is written really well. Sell yourself! Tell them what makes you unique. If you have written a research paper, or a major computer project, send them the paper (or documentation, if reasonable), perhaps after cleaning it up by making it even better.

Hints about applying to grad school

  • Start early: senior fall, or even junior summer.
  • Write to lots of departments and request informational brochures and application materials.
  • Take the GREs in October, or at least in December, and have the scores forwarded directly to the schools where you are applying.
  • Request transcripts and have them directly forwarded.
  • Send in your application well before the deadline.
  • Follow up on everything. Be paranoid about the mail. For example, send your application materials return-receipt-requested, and include a self-addressed, prestamped postcard that says "XXX university has received my materials", so that you know when they have arrived. Call them if you do not receive this. Especially: followup on faculty letters of recommendation (be tactful of course).
  • Ask for your letters of recommendation early, October if you can. Go ahead and ask even before you have all the forms they will need, or even before you know the complete list of places you will apply. They can start writing the letter and then mail it when you give them the materials. Ask for the letters in person if possible - talk with the prof for a little while. (Make sure they remember who you are! Obviously, you want someone who really knows you well.)