For context, I started grad school here in September 1991 immediately after finishing at Williams. I first worked in Computer Vision as an RA, then I was a TA for Computer Graphics, then I was an RA again for AI/Machine Learning. I satisfied my requirements for an MS after two years, although I never actually received it. I hope to get my PhD in December.
s *On choosing a grad school: Definitely visit anywhere you get in. Talk to professors and students. Try to choose some professors that sound interesting and check on their work before you go, so you can have an intelligent conversation. Talk to students about the environment, the funding situation, interaction between research groups, how long it takes to finish. Choose the school that feels best to you without giving too much weight to financial offers--- you'll probably be able to find something when you get to your chosen school if you don't have support already lined up.
*On choosing an advisor: Talk to your advisor about long-term plans. You don't want to get involved in a program where funding will be terminated before you graduate, or if the professor is up for tenure review more than 18 months before you plan to graduate.
*On choosing a thesis topic: Make sure that you are truly interested in the topic, because you will spend A LOT of time thinking about it. Master's theses are not as bad because they're shorter.
Finally, there is an excellent paper on being a graduate student by Marie DesJardins from SRI. There's more similar stuff in page of Advice on Research and Writing , including Duane's "Letter to Research Students."
I've been in grad school at the University of Delaware for a little over a year now... Let's see what I have to say...
What I wish I'd known: living arrangements aren't what you think they'll be. It's very hard to live in your own apartment (I've got the cheapest place in town and I still can't afford it on my $14,000 NSF funding) the first year. Living in grad student housing is not necessarily a bad idea; Stina did it and she got to make friends with other single first-year grad students. Living with roommates also gives you a leg up on friends. Living by yourself means it will be much harder to connect with other grads - you all have your own lives, and most of the people around you are married. There isn't the same sense of community as in college, so you really need to work to make friends.
A good thing about grad school: once you jump through the hoops of the Masters program, you get to do what *you* want to do.
A bad thing about grad school: you still have to take all of the subjects you didn't like the first time, and really learn them well so you can pass your exams!
Why one should or shouldn't decide to go to grad school: a hard one for me to answer. I went because I knew I didn't belong in industry as a programmer. I didn't fit very well with the traditional concept of a computer person, so I needed to explore things more. Now I'm finding out areas of research I didn't know existed that speak to my interests in ways I didn't know possible. There is *so* *much* going on out there that even Williams can't tell you about it all! Grad school is a great oportunity to continue learning about new and exciting things.
Masters vs. PhD: well, for me the Masters part is just the obstacle to the PhD research. Once it's over, I will greatly appreciate the freedom I will have to choose my own course of study.
Further comments: anyone who is interested in Artificial Intelligence, and more specifically the field of Natural Language Processing, should feel free to mail me personally. To explain a little: NLP is the study of the languages and techniques we use to interact with each other and how they can be understood and generated by computers. It is the *perfect* field for someone with a liberal arts background and an interest in language. My specific area is Computer-Assisted Language Learning, which is VERY cool and I'll tell you all about it if you want.
- Flexibility. I found the grad student life hard to beat. Unless your advisor is very controlling, you've got flexibility on many fronts after you pass qualifiers. You can think about problems that excite you. You can work the hours that suit you best, wearing the same clothes you wore all through college. Vacation time is flexible. Many advisors will let you work long-distance for periods of time (handy for long-distance relationships or other personal commitments).
- Isolation. This depends a lot on the program you are in. If you feel reasonably in sync with the students around you (similar outside interests, similar long-term goals, etc), this might not be a problem.
- How to read a technical paper. I think all students going to grad school should have to take a research paper with reasonably detailed mathematics, digest it, and present it to someone else. I've found that professors don't expect that you can write when you start grad school (sad, but true), but they do expect that you can read, digest, and present.
- I wish I had known more of the character of grad school, as it were. A real graduate student actively looks for problems to get interested in (rather than just thinking about assignments for classes), then pursues them through reading papers, trying to implement something, or just talking to others about it.
- If you have your heart set on working with a particular group, find out about the availability of positions for new students. Ideally, contact the relevant faculty and ask them about their future research directions. In my experience, faculty usually pass these questions on to their senior grad students to answer. This gets you contact with someone who is usually very willing to talk about the group at length.
- Try very hard to talk to students in the department as a whole before you make a decision. Either arrange for a campus visit or try to get an email contact. Some departments can get you in touch with current students willing to talk to prospective students. If the department has a grad student association, that group is likely to have a web page and to contain a few email addresses to use as starting contacts if need be.
- What's the overall atmosphere of the department? Are most students satisfied with the department? What sorts of things do students complain about in the department? How good is the communication between the department and the graduate student body? (Indicators here might be whether students are involved in faculty hiring and other departmental committees, how well students know the policies on things like qualifying exams, etc).
- Make sure there is active research going on in the areas you are potentially going to study. If there isn't and the department is still appealing, find out why the research is lagging.
- Where do students who leave the program (either graduating or not) tend to end up job-wise?
- Also, if there are non-academic things that are important to you (particular community organizations, athletics, volunteer opportunities, etc), make sure they are available.
I left IU this summer. I am now employed by Intel as what is grandly termed a Graduate Rotational Engineer. Basically, I'm an intern... except the pay is much better. For a year after my hire date, I will work in three different working groups (four months in each). The selection of the groups is pretty much up to me and the manager of the potential group. At the end of the year, I will rotate into a final placement and work there for the duration. It's basically a learning position, since I get to see (if I wish) several different aspects of the company. I'm currently in my first rotation, which is with a group of people looking at compiler technologies to take advantage of some new architecture ideas Intel is considering for the next generation of processors. Although it is not the most exciting job in the world on a daily basis (I tend to spend my days staring at assembly code and wondering why it's so slow), I do get to listen in on people discussing the design of the new chip and I am now familiar with the specs of one of Intel's newest designs. This kind of thing is very exciting... seeing the design process of one of the top chip companies as it designs its next big offering. I get to watch a _real_ company design a _real_ processor, and I'm enjoying the view immensely. While I might someday decide to restart my PhD (_not_ at IU), it won't be for a while. I like where I am now, and I'm learning gobs. If I do go back to grad school after a few years, I'll be a much stronger student. Life is good.
My biggest mistake in grad school was in expecting it to be like college. In college, classes are important and are the most important thing academically. In grad school, on the other hand, I found classes to be of secondary importance. What is paramount, at least for the PhD, is research. Unfortunately, I did not come to this conclusion until very late in my grad school career, after I had spent much of my energy taking grad courses that were of little importance to me. This is not to say that all grad courses are useless; I had a number of classes which I wouldn't trade for the world. More, it is to say that, if you are going for your PhD, classes are second to research and are only important in find you a research topic and giving you the background to do it.
My second point is related. I thought that Williams, being a liberal arts college, would not be able to give me a really strong background in CS. I was dead wrong. I was very well prepared for my grad school. In fact, part of my jaded attitude towards coursework stems from the fact that I was so well prepared that fully 50% of the grad courses I took were rehashes of material I had already had at Williams (and many of them were watered down, at that). The Williams CS program is fully and firmly grounded in what I would consider the closest thing to a canon in computer science, and it is taught very well. Just as an indicator: I took and passed IU's screening exam questions in operating systems based solely on what I had learned in Tom's course some two or three years before.
My final point to the PhD student is a lesson I learned very recently. The PhD is a very lonely goal. Your success or failure depends solely upon your initiative, drive, and endurance. Your advisor and institution have some effect on this (let's face it, an advisor with a going research program and an international reputation will give you a bigger edge than one without either of these), but ultimately you are responsible for yourself. The PhD requires a lot of fortitude... you shouldn't go for it unless you really love what you're doing.
As for the masters, I don't have much advice. I'd guess my main advice is to go for a university with a good mix of current, hot technology and academic quirkiness (IU is big on academic quirkiness). You will need exposure to the latest technology to get hired at a good job, but it's not as important as you might think. This stuff changes so fast, that what is important is if you can keep up. Can you learn new things? Can you adapt to a new environment? Can you take a patently absurd premise and make it work? An environment of academic quirkiness will give you the edge, here. As a particular example, I learned scheme but good at IU (IU is its spiritual homeland). Nobody uses scheme outside of IU or its allies for anything serious, so this might seem like a waste to have learned scheme. Yet, with scheme, you can learn much about the essence of programming and programming languages (and, I think I have done so). So, even so the particular language is not too useful to me, the things I learned indirectly have matured my thinking. It is this later skill that my employer was seeking when they hired me. Particular skills are helpful (so avoid those places still using punch cards), but they aren't as important as the ability to think and learn.