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. 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. 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 see yourself doing these things, if any of these scenarios appeal to you, consider doing undergraduate research.
Why should I do research?
Stanford faculty and students do amazing research. The projects here are widely recognized as some of the best in the world and Stanford holds its reputation as one of the top CS programs in large part from this. Your time at Stanford offers a unique opportunity to be involved in cutting-edge research.
If you might be interested in getting a PhD, research experience is almost a prerequisite for admission to any of the top graduate programs and if you think you might like to be a professor or researcher some day, you should absolutely make undergraduate research a top priority. If you're not yet sure about your post-graduation plans, doing research as an undergraduate might help you decide if you are interested in continuing on to graduate school and working in academia.
Even if you aren't planning to go to graduate school, participating in research will make you much more employable. The most sought-after students tend to be the ones with significant experience regardless of whether the research is directly applicable to the job. Doing individual research is challenging in ways classes are not. Pursuing a research project requires you to be extremely self-reliant and self-motivated, attributes that employers value highly. Because they have been involved in research, worked hard, and learned these valuable skills, students who have been involved in research tend to be at the top of their graduating classes.
When can I start doing research?
The background that different groups require varies wildly. Certain groups will require you to have advanced programming skills, a strong math background, or basic knowledge of the research area. Other groups will have ways for students to get involved and contribute even if they haven't taken many CS courses yet. For instance, some groups are happy to take on freshmen because they have many years ahead of them at Stanford and have lots of time to learn and do great work. There are plenty of opportunities to contribute to a research project before your senior year so don't wait until you've finished half the major to get involved!
Since the prerequisites for starting work on a research project vary widely among research areas and professors, talk to a professor to get their advice. Many professors teach an introductory class centering broadly on their research area and, if you contact them, will ask you to take that class. If you get this response from a professor, the best way to get into his or her research group 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, find out what classes to take or what to do in order to be considered for their research group. You can email the professor or visit their office hours to ask. It's best to 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 if you miss a course or its prerequisites you may have to wait a whole year to take it.
If you set up your sequence of classes right, it is possible to 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 very 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, 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 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. However, many groups have side projects that they would love to see completed but don't have time to work on. For instance, a group might have an application that could use a better user interface or a few more features. 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 be exactly the ground-breaking work you were hoping to do, it helps to build an understanding of what the group is doing and establish a good working relationship with the group and professor. Hopefully, they will come to see you as someone who is reliable and hard-working, making them more inclined to give you additional intellectual responsibility as you begin to take the necessary classes and learn about the field.
Do I need to have a specific project in mind?
No! Most students start on research without having a particular project in mind. Most professors supervise one or more research groups, which typically consist of the professor's PhD students, 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. If you don't have a particular project in mind, one of the best ways to get involved with research is to join one of these groups. You'll probably spend some time helping with generic tasks and learning about the project. Don't underestimate the value of this opportunity; you'll get an inside look at how research is done and learn a lot about jumping into a large project, something you'll have to do at almost any job you have after graduation. After you spend some time with the group, you or the professor will probably start to find particular aspects of the project that you can work on. At this point, you can discuss with your professor the best way to proceed with taking on more responsibility for a part of the project.
What should you do if you already have your own idea for a project? In some cases, students have a particular project or idea that they want to pursue so they find a professor with similar research interests and ask him or her to be the 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 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, but it is still possible.
How can I learn about available research opportunities?
There many different ways to find out about research projects at Stanford. Some examples are listed below.
Go to Office Hours
Find a professor whose research interests you want to learn more about. 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.
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.
Talk to a Grad Student
Because the graduate students work on the projects every day and deal with most of the details, they are probably one of the best sources of information. They will have a good idea for what role you could initially play in the project and will also be able to give an honest assessment of what it is like to work with the professor and what are the expectations of the group. 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 would be 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.
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, come visit the Course Advisor and declare CS!
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. Some of these are available as a 1 unit class or you can also just come in and hear the speakers that interest you.
At the beginning of each academic year, all new PhD students are required to take CS 300. The class meets M-Th from 4:15-6:15 from the beginning of the Autumn quarter until the end of October. Each day, two professors come in and describe their research work. The idea is to give PhD students an overview or the research going on so they can decide which groups they would like to join. Although the class is technically for PhD students, it is lecture-style, so no one should mind if you sit in on the presentations that interest you. The presentations are likely to be somewhat technical, but since they are geared towards PhD students with a broad variety of interests, they should be fairly accessible.
500 Level Seminars
All of the CS 500 level courses are topic seminars. For instance, CS 547 is a seminar on Human-Computer Interaction topics. Each week, a different speaker comes in and presents their research. Sometimes the speakers are Stanford professors, sometimes they're graduate students, and sometimes they're outside visitors. The presentations are often quite technical, but if you check the schedules on the class webpages, you should be able to find some talks that interest you.
CS Research Page
The CS Department has a webpage that highlights some of the research projects happening in the department.
School Year Research Projects
Throughout the year, professors have openings for undergrads to do work in their labs. They post descriptions of these projects on ResOp for your perusal.
Professors typically post information about their research activities on their webpages. The CS faculty contact page has links to all professors' webpages.
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 these links.
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.
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.
How can I do research?
Undergraduate research is often done through CURIS, for academic credit, or through an informal arrangement with a professor.
CURIS is the program for undergraduate summer research in Computer Science. Each summer, some professors take undergraduates to work on their projects. This site has a list of the projects available that is usually updated sometime around February with new projects for the upcoming summer. The application deadline for CURIS is early winter quarter.
Research Classes (191, 191W, 294, 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.
Students can also opt for CS 294 which fulfills the senior project requirement and allows students to get involved in a major ongoing research project.
The 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.
You can get academic credit for your research work by signing up (with a professor's approval) for CS 199 (undergraduates) or CS 399 (coterms). 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 coterming.
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.
How can I make my research experience a good one?
Many undergraduates who do research will consider it to be one of their best experiences at Stanford. Although nothing can guarantee that your experience will be a good one, here are a few tried and true tips for making your research experience enjoyable and rewarding.
Clearly define your expectations for the project.
Before you start working on any sort of research project, make sure you've sat down with the professor (or the graduate student who will be supervising you) and discussed exactly what you will be working on. Every year at least one person has all sorts of complaints because they spent their whole summer working on a CURIS project they felt was drastically above or below their ability. 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 you understand what sort of day-to-day work is involved and that you are excited and happy about the opportunity. You should also know 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.
Define how much time you can devote to research.
Nothing is worse than a flaky member of a group project. As an undergraduate, you have many commitments outside research. It's therefore important to 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 working on a class project 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 don't show up in lab and don't respond to emails. Disappearing with your part of the project can delay others' work. Remember that research is the primary focus of PhD students and they will not be happy waiting around for you to get back to them and finish your work. If this happens, you will likely find yourself never assigned anything important again. If, however, you've outlined when you will be gone, your group can plan around it and people won't be frustrated and disappointed when you disappear to finish that big project or study for finals.
Set specific hours when you will be at the lab working on your research.
This makes it easy for people to find you when they need to talk about work. You will also be perceived as a reliable, hard worker, rather than someone who is "sometimes around, sometimes not - depends how busy she is". Many people who do research during the school year find that it keeps getting pushed off 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 and your research group.
Take on the appropriate amount of work.
It is always better to do a great job on a small project than to do a bad job on a huge project. Many graduate students are more experienced and have much more time to devote to research so they may expect you to be able to accomplish more than you have time to do. Make sure your part of the project is something you can manage and make sure to deliver on any promises you make to your professor or research group.
Communicate with your group and professor.
Professors and graduate students are not mind readers. If you're unhappy about something or might not be able to make a deadline, make sure to bring it up in a non-confrontational way and try 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. The next time something similar comes along, they'll be much more likely to send it your way.
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, 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 is a great feeling for them. With few exceptions, most professors will be happy to talk with undergraduates about doing research and will do their best to find some way for you to contribute.
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, take time to read about the projects in which you are interested. 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 they 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, almost all professors at Stanford will be delighted to have you participate in their research group.
"It's too much work!" "This is too hard!" "I don't have enough time!" I hear you saying. You're right. It takes a lot of work to get into a group, learn about a project, and make real contributions. You'll be assigned difficult tasks, feel like you don't know enough, and be frustrated when things don't work. And finding enough time to face all these challenges is difficult enough when you are already taking hard classes, involved in other activities, and maintaining a healthy social life. So why do so many students do research? Although it might difficult, research can also be immensely satisfying. Working on a research project offers an opportunity to participate in creating a brand new idea and do a significant piece of work with lasting impact. Doing something that no one else has ever done is a tremendous and enjoyable intellectual challenge, and when everything finally works, the sense of accomplishment is intensely gratifying. Plus, doing research is a great opportunity to learn from some of the best computer science faculty and students in the world. You'll learn to think and work like a researcher from people who are focused and dedicated, are used to thinking deeply about problems and ideas, and are passionately interested in what they do. If you get so caught up in finishing your 140 program and don't have time to explore this opportunity, you may never again in your life have a similar one. Research can be on of the best intellectual experiences you will ever have. Get started today!