Generic Advice for Undergraduates in Computer Science

I originally wrote this message for my undergraduate advisees. It is essentially unchanged since 1992, but I think it is still mostly true today. (The primary change is that CS145 is now taught Autumn and Spring, and not by me. And that for our current work it is important to take CS157. Also I have not served on the masters committee for several years.) Feel free to send me any comments you may have.


Dear Undergraduate Advisee,

I have collected some thoughts and issues that I believe will be helpful to you. These are based on being an undergraduate advisor and being on the masters (admissions and administration) committee.

You are an undergrad major in CS. Where do you go from here? And how do you get there? The two main choices are (1) get a job, and (2) go to graduate school. To get a job, it helps to have good grades and good recommendations. To go to graduate school, it helps to have really good grades, really good recommendations, and really good GRE scores. I assume you know how to get good grades. Let me discuss the other two.

Recommendations are best when written by someone who knows you. How well they know you really affects the quality of the recommendation. You won't get a very informative recommendation from an instructor who gave you an A if she doesn't know you from Adam. "Sally received an A in my class and was ranked 10th in a class of 40 students" doesn't really cut it. Get to know your instructors, go to their office hours and ask interesting questions, participate in class. In short, be noticed (but try not to be obnoxious doing it). It is best to work on getting your recommendations early, and not at the last minute. Ask soon after the class ends, not years later when the instructor has forgotten you.

By far and away, the best way to get to know your professors is to do a project with them. Unfortunately, it is very difficult to do individual projects around here. I have some projects that students can do as part of a group developing object-oriented interfaces to databases. If you want to work on this project, take my CS145 in the fall, learn C (and preferably also C++), and also sit in on the project meetings in the fall, and you can work in the winter/spring or thereafter. You can sit in on project meetings in the spring or summer beforehand if you'd like. As you can see, getting involved takes planning. Don't do it at the last minute, or it may be hard to find something you are interested in doing. I would encourage students also to take CS245 in the winter, but that's not necessary. That's one of the reasons we have the project course requirement.

Now about the GREs. I am not about to tell you how to do well in them. But I am going to tell you that if you are going to apply to the co-term MS program, you must do it by the *beginning* of your 11th quarter here. (Don't ask me how to interpret 11th quarter if you are a transfer or came in with lots of AP credit; I don't know.) And that means that you must take your GRE so that the grades are reported during or before the first month of the quarter in which you apply.

Now I know that Courses and Degrees says the MS program is a terminal MS program. That's legalese meaning it is not a ticket into the PhD program. In EE, students are first admitted into the MS program and then are selected from there to go to the PhD program. Stanford CS directly admits into the PhD program, and getting an MS first does not make it easier to get into the PhD program---that's what `terminal MS program' means. So if you are thinking of going on to get a PhD, it is fine to get a co-term MS here, but plan to get your PhD elsewhere. It's a good idea to get the exposure of going to different places for school anyway. We don't believe in being insular like MIT (which reserves places for its own graduates).

Stanford professors are notorious for being very busy and hard to get ahold of. Professors jealously guard our time. The onus is on you if you want to see one of us. So take the initiative. Track us down. For me, when I am not teaching, I see people only by appointment. Let me know about when you'd like to see me, and what your availability is, and I'll let you know when we can meet. It's best to send me netmail (at ark@cs). Remember that you are responsible for your own education, and the extent you take advantage of the resources available here is up to you.


Arthur M. Keller, Stanford University,