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

Senior Projects

The "crowning achievement" in obtaining a bachelor's degree in CS or CSE is the Senior Project, but it is not always the most fondly remembered one. In general, students report that the project was either the best or worst part of the major-rarely in between. Because it is open-ended, the senior project requires a lot of planning on your part. You have considerable freedom in your choice of project; the choices you make in the early phases of your work can determine how successful and fun the project turns out to be. A little forethought can prevent a lot of pain later.

There are four strategies by which you can complete the senior project requirement: the CS194 course, CS294(W), an independent project taken under CS191 or CS191W, or a Senior Honors Thesis.

The senior project course

The most common route is to take the CS194 senior project course, which is usually offered spring quarter. In this course, you will work in teams to build a significant programming application, along with useful strategies for software design and engineering. By all accounts, this course is quite demanding and redefines what it means to be glued to a computer screen, particularly in the final weeks. CS194 ends with a "trade show" in which all class participants demonstrate their projects to an audience that includes representatives from local software firms.

Directed senior research: CS294

If you'd like to take part in active research but don't have a specific project in mind or would like some guidance, 294 might be for you. Everyone chooses a project from a set of little pieces of a big problem that the prof defines. For example, two years ago 294 students contributed to the award-winning DARPA Grand Challenge robot. The topic for 294 changes each year, and while it's historically been led by an AI prof, other labs could sponsor it in the future. Note that the professor may expect you to be comfortable with techniques used in the field (for instance an AI 294 might expect you to have taken CS221). You can opt to do a writing-intensive version (294W) to fulfill the Writing in the Major requirement.

Independent projects

The second option is to undertake individual research with a faculty member under the auspices of (or CS191W, the writing-intensive version of this course). While this approach can be extremely rewarding and provides valuable experience for students interested in a research career, it is not for everyone. To take CS191, the essential requirement is that you find a faculty member or lecturer who is willing to support your project. For information about finding a research project, check out the Undergraduate Research page. Students taking CS191 must also fill out a Senior Project Proposal (see Claire Stager) and get approval from their faculty sponsor, your adviser and either Bob Plummer or Patrick Young before beginning the project.

On some occasions, it is possible to undertake a CS191 project in which the day-to-day supervision comes from faculty outside the department or even from a qualified person outside the university. All such arrangements require a nominal adviser inside the department and approval by Maggie Johnson. Moreover, because university policy prohibits students from receiving both payment and credit for the same work, you cannot use work completed in the context of a job as your senior project.

In order to be approved, a senior project proposal must ordinarily fall into one of the following categories:

  • Significant software application. The most common type of project is a software application that involves a substantial amount of programming and makes use of modern user-interface technologies. These projects are typically comparable in scale and complexity to shareware programs or, in some cases, to commercial applications.
  • Publishable research. The other main category of project consists of directed research that one might reasonably expect to see published in an academic journal or presented at a conference. Note that the requirement is not that the work in fact be published, but simply that your adviser sees it as potentially publishable.

Tips for organizing your project group

If you are working on a group project in either CS191 or CS194, here are a few suggestions designed to help you have a positive senior project experience (these tips are useful for other project courses as well):

  1. Pick a project team you feel comfortable working with (perhaps students you have worked with on programs for other classes). Different people have different ideas of how to organize and program. Finding students with an approach that you share often makes the project a much more pleasant experience. Incompatible attitudes and work ethics may be easy to overlook at first, but as time passes they may cause tension and anxiety within the group.
  2. Select a project topic that you are really interested in. Whether you are working on a research project or a large-scale application, you are going to be working on a single project for a substantial period of time. Nothing can detract more from your senior project experience than getting fed-up with an idea you were only moderately interested in when you started and now can't stand. Many students develop games for their senior project since the thrill of actually being able to play the game as it is developed helps maintain motivation through the rough times.
  3. Don't overextend yourself. Many students beginning their senior project have a tendency to bite off more than they can chew. Before setting down grandiose plans to write the world's best spreadsheet program, take time to think about what projects might be feasible to do in a quarter or two. At the end of the project, it is better to have a working application with fewer features than a non-working application that would be really great were it to be fully implemented.
  4. Develop a prototype early. By building a simple version of your application, you can demonstrate its feasibility, get a better sense of the intricacies involved, and understand more about the time frame required for its development. Moreover, having a working prototype early on will help get you very involved in your project and avoid the mad rush at the end of the quarter to finish.
  5. Use existing code. Most commercial programmers make use of lots of existing code and libraries, why shouldn't you? There is no reason why you should have to rewrite many common procedures and libraries which already exist and are readily available. By doing a little searching for code, you can save yourself a lot of time on the basics and work on what is really unique to your application.
  6. Practice good coding style. Don't forget the software engineering skills you learned in early systems courses like CS106 and CS108. When you are working on a group project, it is especially important to structure your code and document it thoroughly to avoid having to track down bugs caused by unexpected interactions between your code and that of your partners.
  7. Be prepared to spend lots of time on your project. Your senior project is not just another programming assignment. You and your teammates should take it seriously if for no other reason than the fact that your faculty sponsor or CS194 instructor will. To complete a project on the scale that the senior project requires, it is essential to start early and maintain your motivation throughout.
  8. Have fun! Despite all the tips, guidelines, and warnings above, the fact that you have a lot of leeway on your senior project encourages you to pick a topic that you really enjoy-and can learn from at the same time. Students who regard their senior project as their best experience often attribute their enjoyment to the fact that they were genuinely interested in producing a particular application or finding the results of the research problem they were trying to solve. They do not regard it as simply a requirement they need to fulfill. Many students even choose to continue working in the same area after fulfilling their senior project requirement.


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