Skip to main content Skip to secondary navigation

Email forwarding for @cs.stanford.edu is changing. Updates and details here.
CS Commencement Ceremony June 16, 2024. Learn More.

 

BS | Senior Project Requirement

Main content start

Overview

The Senior Project is the capstone achievement to obtaining a Computer Science Bachelor's degree and our students are allocated a considerable amount of autonomy to plan and produce their choice of project. Also, an opportunity for students to fulfill their WiM requirement. WiM is the only requirement that can be fulfilled by a class that also satisfies another requirement. A 2.0 minimum grade point average (GPA) for all courses in Engineering Fundamentals, CS Core, Depth, and Senior Project (combined) is required.

Senior Project Course Options

CS194 is the most commonly taken senior project course, typically offered in the Winter and Spring quarters. In this course, students work in teams to build a significant software application and learn through the experience of building something substantial. Experience opportunities include designing software, presenting software products, launching a software application, learning through user observation, benchmarking, brainstorming, and rapid prototyping. CS194 (Spring edition) ends with a software fair in which all class participants demonstrate their projects to an audience that includes course staff, other students, and representatives from local technology companies.

Learn More

CS210B is a two-quarter sequence (Winter and Spring) where students work with partner companies like Facebook, Yahoo!, Microsoft, and BMW. Corporate partners provide loosely defined challenges from their R&D labs for which they are seeking new, innovative solutions and ideas. As such, student teams have freedom as to how they approach the challenges and are encouraged to keep an open mind. Each team functions as a small startup company with dedicated space, a discretionary budget, and a technical advisory board comprised of the instructional staff. The goals of this course include providing students with exposure to the following: current practices in software engineering; exploration of the design space; significant development experience with creative freedoms; working in groups; real-world software engineering challenges; public presentation of technical work; and creating written descriptions of technical work. The two-quarter sequence affords time to experiment, benchmark and try out different ideas before zeroing in on a particular direction. The two-quarter time frame provides enough time to build something of lasting impact and is a great opportunity to develop relationships with a company. You will be able to obtain skills that are helpful for managing a team or starting a company.

CS210B fulfills the Senior Project and writing requirements for the CS major. Most people take it for 4 units in both Winter and Spring (8 units total). However, students can elect to take it for three units per quarter, if desired.

The second Senior Project option is to undertake individual research with a faculty member under the auspices of CS191/W. This approach can be extremely rewarding and provides valuable experience for students interested in a research career. To take CS191/W, 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/W must also fill out a Senior Project Proposal and get approval from their faculty sponsor, their advisor, and Chris Gregg before beginning the project. Enrollment in CS191/W is by permission number only. The permission number will be issued once your Senior Project Proposal is signed and the completed form is approved by the Department. Therefore this form should be submitted the quarter before you enroll in CS191 or CS191W. Completion of 135 units is a prerequisite for CS191 and CS191W. Your description must include detailed and specific deliverables that you will provide to your advisor for grading at the end of the quarter. Discuss your proposal with the faculty member sponsoring and grading your project, your advisor, and the CS senior project advisor (Chris Gregg, cgregg@stanford.edu, to arrange an appointment). After your proposal is approved by Chris, your proposal will be shared with the Department, and a permission number to enroll in CS191/W will be issued to you directly from Jessica Valdez (valdezjr@stanford.edu).

On some occasions, it is possible to undertake a CS191/W 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 advisor inside the Department and approval by Chris Gregg (cgregg@stanford.edu). University policy prohibits students from receiving both payment and credit for the same work. Students can not use work completed in the context of a job as their senior project.

In order to be approved, a senior project proposal must ordinarily be publishable research. This type of project consists of directed research that one might reasonably expect to see published in an academic journal or presented at a conference. The work in fact doesn't need to be published, but simply that it is potentially publishable.

If you're enrolled in CS191/W, you are expected to fulfill the public presentation requirement portion of the course, before applying to graduate. Students generally satisfy this requirement by participating in the CS194 Software Fair that occurs every March and June. Typically, the Software Fairs are held during the CS194 Final Exam period. As soon as the Final Exam schedule is announced, we'll know the dates of the Software Fairs and inform the CS191/W students. During the CS194 Software Fair, you can expect that:   

  • Students prepared poster presentations for their research projects
  • Students prepared computer demos for their implementation projects

On Software Fair day, students will set up their posters or computers to showcase their senior projects for their peers and guests. The fair has reportedly been an experience many students enjoy and find as an fun opportunity! 

Important Note: If you are interested in arranging an alternative venue for your CS191/W project presentation to fulfill the requirement, you will need to connect with Jessica Valdez (valdezjr@stanford.edu) to ensure your plans satisfy the requirement. 

Another research-based option to fulfill the Senior Project requirement is to do a senior honors thesis. Writing an honors thesis includes a year-long research project supervised by a CS faculty member. Applications for the honors program are due by May 1st of each academic year.

For more information, see the Honors Page

For students who would like to take part in active research but don't have a specific project in mind (or would like some guidance), we encourage students to take CS294, as it's a direct research course. Everyone chooses a project from a set of little pieces of a big problem that the professor defines. For example, a CS294 student contributed to the award-winning DARPA grand challenge robot. The topics for CS294 change each year, though it's frequently been led by an AI professor. Professors may expect students to be comfortable with techniques used in the field. For example, an AI CS294 might expect students to have taken CS221.

CS191 & CS194: Project Tips

Set Yourself Up for Success

  • Establish a team that you collaborate with comfortably and confidently. You may encounter peers that have differing approaches to programs and projects. We advise that you seek out potential teammates by sharing your expectations and ideas before solidifying a team.
  • Curate a senior project topic that genuinely piques your interest. You will be dedicating a substantial amount of time to your Senior Project and want to ensure that you produce high-quality work. There will be obstacles during the curation of your senior project; however, your passion for that topic can propel you toward successfully producing the end product. Many former students have developed games for their senior project, as it serves as a strong motivator to play a program they've created and will soon enjoy. 
  • Don't overextend yourself. Many students beginning their Senior Project tend 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. At the end of the project, it is better to have a working application with fewer features than a non-working application which would be great were it to be fully implemented.
  • 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.
  • Use existing code. Most commercial programmers make use of lots of existing code and libraries. There is no reason why you should have to rewrite many common procedures and libraries that 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 unique to your application.
  • 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 and document your code in a way that prevents having to track down bugs caused by unexpected interactions between different code modules.
  • Be prepared to spend lots of time on your project. Your Senior Project is not just another programming assignment. You and your teammates will need to take the project seriously if you want to have any hope of making substantial progress in less than 10 weeks. Completing a project on the scale of the senior project requires starting early and maintaining dedication throughout.
  • 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 enjoy. Students who regard their senior project as one of their best experiences often attribute their enjoyment to the fact that they were genuinely interested in building a particular application or finding the results of a particular research problem. 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 requirements.

Upcoming Events

Department of Computer Science

Info Session Archive

Reference a summarized version of the CS Senior Project options with recorded sessions and presentation slides. 

Access Here