Home  .   FAQ  .   Admissions .   Considering CS? .   Get Involved .   Program Planning .   Research  .   Who to See .   Faculty  .   Declare  .   Xenon  .   CSE

Undergraduate Research


Maybe you can picture yourself doing a fantastic job on a research project, and some day making a significant contribution to the theory or practice of computer science.  Or maybe you can picture yourself working on a challenging project and learning a lot from it, so that when you graduate you either get offers from all the top PhD programs in the country, or receive endless phone-calls from recruiters begging you to work for them.  Or perhaps you can imagine yourself becoming a top-notch professor or researcher or engineer some day, and getting to work with the brightest people in the world for the rest of your life. 

Regardless of how clearly you can see yourself doing these things, if any of these scenarios appeal to you, you should consider doing undergraduate research.  Read on....

Why should I do research?

  1. Stanford has one of the top CS programs in the world to a large part because of the research being done by the faculty and students in the department. Your time at Stanford offers a unique opportunity for you to get involved in research.  If you get so caught up in finishing your 140 program that you forget to take advantage of this opportunity, you may never again have another similar opportunity in your life. 
  2. If you think you might be interested in getting a PhD, research experience is almost a prerequisite for admission to any of the top graduate programs.  If you're not sure yet about your post-graduation plans, doing undergraduate research would also be a good way for you to figure out if you might be interested in continuing on to graduate school. 
  3. Participating in research will make you much more employable.  If you pay attention at job fairs and interviews, you'll find that the most sought-after students tend to be the ones with significant experience working on research projects (regardless of whether the research is directly applicable to the job).   Some employers will even ask faculty for recommendations of individual students. Also, the top students graduating each year tend to be research students.  The reason that they're the top students is because they got involved in research and worked hard and learned a lot from it since early in their undergraduate careers. 
  4. It's an opportunity to participate in creating a brand new idea, and to do a significant piece of work with a lasting impact.  (I'm not saying that this is easy, but you'll also have professors and others to help you.)  Also, if you do good work, you'll hopefully get to be part of writing a paper, and might even get to attend a conference at some fun exotic location. :-) 
  5. Many of the world's best researchers started work on research when they were themselves undergraduates, maybe even when they were freshmen or sophomores.  Whatever year you are in, if you think you might like to be a professor or researcher some day, you should absolutely make undergraduate research a top priority right now.

Do I need to have a specific project in mind to do research?

Not at all.  Most students start on research without having had a particular project in mind.  Most professors supervise one or more research groups, which typically consist of the professor's PhD and MS students, and often a few undergraduate students.  Each group usually works on a significant project or idea, with each student working on a key piece of it. One of the best ways to get involved with research, if you don't have a particular project in mind, is to join one of these groups. You'll probably spend some time helping with the general work and learning about the project. Don't underestimate the value of this opportunity: You'll get a great inside look at how research is done, and learn a lot about jumping into a large project (which is what you'll do at almost any job you have after graduation). After you spend some time with the group, you and/or the professor will probably start to find particular aspects of the project that you can work on.  At this point, you can work out with your professor the best way to proceed with your taking on a part of the project.

In some cases, students might also start off with a particular project or idea that they want to pursue, and will go out to find a professor with similar research interests, and ask him/her to be their advisor for the project.  The professor provides guidance and suggestions, while the student does the detailed research and experiments. Getting started in research this way is much more rare, and usually works only for students who are fairly far into the major or who have already had significant work experience in their field of interest. 

How far along in the CS major do I need to be in order to do research?

This varies wildly among research groups. Certain groups will expect you to have a certain level of programming "maturity," a strong math background, or basic knowledge of the research area. But many other groups will have ways for students to get involved and contribute even if they haven't taken many CS courses yet. So don't wait until you've finished half the major to start getting involved!

Since the "prerequisites" for starting work on a research project varies widely among research areas and professors, you should talk to the professors to get their advice. (For instance, some groups are happy to take on freshmen---because you have many years ahead of you in Stanford, and thus have lots of time to learn and to do great work---while others prefer to take on only more senior, advanced students.)  Many professors teach an introductory class centering broadly on their research area, and if you contact them, will ask you to take that class first.  If this is the response you get from a professor, and if you interested in working with that particular professor, then a good way to "impress" them (and significantly increase the chance that they'll agree to take you on) is to take, and ace, this class.  If you're not sure yet whether you're interested in a particular topic, the intro class would also be a good place for you to find out more about it.  In any case, professors' criteria for taking on students vary widely, and if you are interested in working with a particular professor, you should find out what classes you should take or what you should do in order to be considered for their research group.  Some professors will list this information on a FAQ on their homepage; most don't, in which case you should email them to ask. You should do this as soon as possible, because they'll often be able to give advice on courses to take that you haven't thought of, and you don't want to miss a course (or its prerequisites) and have to wait a year to take it.

Note that, if you set up your sequence of classes right, you can take many of the 200-level intro classes as early as your sophomore year. So, make sure you plan your class schedule several quarters ahead! The CS major is set up to be pretty flexible and not have a lot of "sequence" classes, so you should be able to put off the classes you are less interested in until later and get started on the classes that interest you early. Some people believe that if you are really excited about a class you should wait until your senior year to take it and do really well in it. However, if you do this and end up finding the field fascinating, then you'll only have two quarters left to pursue higher level classes or research, so this is usually not a good idea.

If you contact a professor and he or she asks you to take a particular class first, but you are unable to do so for a long time, you can still ask to get involved in some preparatory work for research while you are waiting to take the class.  If you ask to do this, there's a good chance that the professor will say no (so don't be disappointed if this happens).  But for instance, many groups have applications for which they would love to see a better user interface, and you could ask about getting involved in a project along those lines where a lot of knowledge about the specific field is not as necessary.  Although this may not exactly the ground-breaking work you were hoping to do, it would help you to build an understanding of what the group is doing, and establish a good working relationship with the group/professor. They will hopefully come to see you as someone who is reliable and hard-working, which would make them more inclined to give you more intellectual responsibility as you begin to take the necessary classes and learn about the field.  

What can I do to make sure that my research experience is a good one?

Most undergraduates who do research will consider it to be either one of their best experiences at Stanford, or their worst. Although nothing can guarantee that your experience will be a good one, here are a few tried and true tips:

  1. Define what your expectations of the project are
    Before you start working on any sort of research project, make sure that you've sat down with the professor (or a graduate student who will be supervising you) and discuss what exactly you will be working on. Every year, at least one person has all sorts of gripes that they spent their whole summer on a CURIS project that they felt was above or below their ability. This is unfortunate, because the same opportunity would probably have been a great one for someone else. The professor has no way of knowing what you are willing and able to do if you don't communicate with them. Before you take on a project, make sure that you are clear about what sort of day-to-day work is involved, and that you are excited and happy about the opportunity. You should also be clear on who will be supervising you on a day-to-day basis and who you can turn to for advice and guidance if you run into problems.
  2. Define what time expectations the professor/group has of you
    Nothing is worse than a flaky member of a group project. As an undergraduate, you may have many commitments outside research.  It's therefore important that you sit down with your professor (or grad student supervisor) and define exactly how much time you have available for the project and when you will be around. If you know that you will be in Sweet Hall 24/7 during dead week, be sure to communicate that to your group and make sure that it's acceptable for you to be gone during that time. Nothing is more frustrating to a research group than students who "disappear."  However, if you've outlined when it is that you will be gone, then people won't be expecting you and they won't be disappointed.
  3. Define certain hours when you will be at the lab working on your research
    This makes it easy for people who need to find you and talk about work. You will also be perceived more as a reliable, part-time worker, rather than someone who is "sometimes around, sometimes not - depends on how busy she is." Doing this is also a great self-discipline technique. Many people who do research during the school year find that their research keeps getting pushed to the back burner because everything else has a deadline. By scheduling time to put into your research and sticking to it, you'll avoid this situation and be less likely to disappoint yourself as well as your professor/group. 
  4. Don't bite off more than you can chew
    It is always, always better to do a great job on a small project than to do a bad job on a huge project! Make sure you deliver on any promises you make to the professor or research group. 
  5. Communicate!
    Professors and graduate students are not mind readers. If you're unhappy about something or might be unable to make a deadline, make sure to bring it up in a non-confrontational way, and to do so early. Problems are always easier to solve if they have just started than if you have been silently steaming about them for six weeks. Also be sure to communicate about the things that are going well. If you are really excited about a certain aspect of your work, let someone know. They might not be able to take action right away, but the next time something similar comes along, they'll be much more likely to send it your way.

How do I find out what research opportunities are available?

There many different ways to find out what research is going on around Stanford. Some examples are: 

  1. Read Your Email
    The bscs list is constantly getting announcements about presentations that are being given by faculty, advanced graduate students and visiting faculty. Take the time to read through some of the abstracts and pick a few that interest you. Note that these announcements are not usually forwarded to the considering_cs list. If you are interested in getting these announcements, you should come in and declare.
  2. Surf the Web
    The web has a lot of information about CS research at Stanford. Just Google a professor or subject that you are interested in, or check out some of the links mentioned below.
  3. Explore Gates
    Don't be afraid to walk around Gates and check out the different labs. Many of the labs have posters and papers that describe what sort of research is going on. You can also get a good feel for how the labs are set up, what the atmosphere is like, etc. Watch your e-mail for announcements about lab tours and open houses.
  4. Attend Seminars and Presentations
    In addition to the talks and presentations that are announced by email, there are some CS seminar series that are especially appropriate for learning about research. Each of these series is available as a 1 unit class (except CS 300), but you can also just come in and hear the speakers that interest you if you want.
  5. Go to Office Hours
    Once you have narrowed down your interests to a few professors, go to their office hours . It's always a good idea to email a professor and let him or her know that you will be coming in. That way if their office hours are particularly busy, they can suggest another time. At this time, you can discuss what possibilities are available or just find out more about what a particular group is doing. Often the professor will be able to direct you to some research papers that might be valuable to read, or some other groups that you might find interesting in addition to his or her own.
  6. Talk to a Grad Student
    The graduate students in a research group will probably end up being one of your best sources of information. They are the ones that work on the project every day and deal with most of the details. In reality, it is likely that the graduate students who will have a good idea for what role you could initially play in the project. They will also be able to give you an honest assessment of what it is like to work with the professor and what the expectations in the group are. Finally, if you decide to work with the group, the graduate students will probably be the ones that will be mentoring you in the day to day aspects of your work. Before you choose a project, try to meet with at least one graduate student in the group (preferably one that might be somewhat supervising/mentoring you). If you are still deciding between projects, ask the graduate students what they think - you'd be surprised at how helpful and honest they can be.
  7. Go to Group Meetings
    Most project groups hold a weekly meeting where everyone gets together with the professor and catches up on what's going on. The format for these meetings varies from group to group. In some meetings, a different person presents their research each week. In others, the meeting is a time to go over what tasks need to be done and who's doing what. Regardless of the format, it is fairly common for students who are considering joining the group to ask the professor for permission to attend these meetings. At the beginning of the year, PhD students will "shop" for a group by attending these meetings, and if you express interest in a professor's research, they might suggest that you start coming to their group meeting.

What programs can I do research through?

Undergraduate research is often done for academic credit, through CURIS, or through an informal arrangement with a professor. Here are the most common options:

  1. CURIS
    CURIS is the CS department's summer research college. Students are matched with projects and work on them for 10 weeks in the summer. Check out the CURIS website for more information.
  2. Senior Project (CS 191 or 191W) and Research Project (CS 294 or 294W)
    CS 191 is a one quarter research project that fulfills the Senior Project requirement. Students must set up their own project, find a faculty sponsor and submit a proposal. More information is available at the Senior Project website.
    New this year, students can also opt for CS 294, which fulfills the senior project requirement as well, but allows students to do so through getting involved in a major ongoing research project.
  3. Honors Thesis
    Honors Thesis is a one year research project for students in their senior year. During their Junior year, students decide on a topic, find a faculty sponsor and apply to the program. During their senior year, students take 3 units a quarter as independent study units, and at the end of the year they write a thesis. More information is available at the Honors website.
  4. Independent Study
    You can get academic credit for your research work by signing up (with a professor's approval) for CS199, or 399 if you are a co-term student. These units will not count for the CS major, but they will count towards graduation, and can sometimes be counted as master's electives for students who are co-terming.
  5. On Your Own
    Finally, you might be able to find a professor to work with without arranging to receive academic credit. Professors like this type of arrangement to varying degrees, so you'll need to discuss it with the professor and see how he or she feels about it.

I'm scared to approach a professor!

Don't be.  Professors are people who have decided that their research is really interesting and important. The fact that you are considering doing research and might go on to follow in their footsteps is really exciting to them. They are much happier to talk to individual students about their research than they are to grade your midterms. Also, keep in mind that professors are judged by the quality of the research done by their groups, and whether their groups manage to produce great students. If it's possible that you will be a productive and useful person in their group while learning lots of things, then that's incredibly exciting and helpful to them as well. Professors also deal with endless requests from graduate students (not to mention people who haven't even been admitted to Stanford) to join their lab in return for funding. The fact that someone wants to join their lab just to learn and will basically be doing work for free is just plain awesome for them no matter how you look at it. 

That being said, keep in mind that professors also tend to be some of the busiest people on the planet. Be respectful of their time as well as their knowledge, and you will get a much better response. Before contacting a professor for the first time, take thirty seconds to check if they have a FAQ on their homepage that answers your questions. Before you go in, you should also have taken the time to have read about the projects you are interested in online. Also, be willing to let them direct you to information rather than explain it all in person---instead of demanding a personal tour of the lab, ask if he or she can suggest some good papers for you to read, or if there is a particular graduate student you should talk to. If you approach a professor respectfully and then follow through with what you agreed to take on, I can guarantee that many many professors at Stanford will be delighted to have you participate in their research.


Stanford University Computer Science
Site content maintained by the CS Course Advisor. Design by Linda Nguyen, '05.

01010011 01110111 01100101 01100101 01110100 01001000 01100001 01101100 01101100 01001100 01101111 01110110 01100101 00100001