BS | Senior Project Requirement
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.
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, you must first find a CS-affiliated faculty member or lecturer willing to support your project, meet with you throughout the quarter, review your final presentation, and provide a grade. For guidance on finding a research project, visit the undergraduate research page.
In addition, students taking CS191/W must submit a Senior Project Proposal and obtain approval from three individuals: their regular CS Major Advisor, the CS191/W Faculty Sponsor, and the Senior Project Supervisor (Jay Borenstein) before beginning the project.
Enrollment in CS191/W is by permission number only, which will be issued once your Senior Project Proposal has been signed and fully approved by the CS department. Therefore, this form should be submitted the quarter before you plan to enroll in either CS191 or CS191W offering.
Note: You must have completed 135 units to enroll in either CS191 or CS191W offering.
Your project description must include detailed and specific deliverables that you will provide to your advisor for grading at the end of the quarter. These deliverables should include:
- A conference-style paper that explains the motivations of your research, reviews related work, details your methods and process, and presents and explains your results. This paper should be submitted in PDF format via the CS191/W Submission Form (managed by Jessica Valdez, valdezjr@stanford.edu) for publication on the CS191 website (cs191.stanford.edu).
- Important Note: Your work must be submitted to be published on the cs191.stanford.edu website. The CS191/W SmartSheet Submission form is managed by Jessica Valdez (valdezjr@stanford.edu). Please refrain from asking form questions to our Senior Project Supervisor, as they don't have access to the submissions.
- A presentation to your faculty sponsor or your faculty sponsor’s research group.
Discuss your proposal with your CS191/W Faculty Sponsor (who will be grading your project) and the Senior Project Supervisor, Jay Borenstein (gretzky@stanford.edu). To arrange an appointment with Jay, please contact him directly. Once your proposal is approved by both your Faculty Sponsor and Jay, it will be submitted to the CS department. Upon approval, Jessica Valdez (valdezjr@stanford.edu) will issue you a permission number to enroll in your choice of either CS191 or the CS191W offering.
In some cases, it is possible to undertake a CS191/W project where day-to-day supervision is provided by a faculty member outside the CS department or even by a qualified person outside the University. However, these arrangements require a nominal advisor from within the CS department and must be approved by Jay Borenstein (gretzky@stanford.edu). Please note that University policy prohibits students from receiving both payment and academic credit for the same work. Therefore, students may not use work completed as part of a job for their senior project.
To be approved, a senior project proposal should typically consist of publishable research. This means the project involves directed research that could reasonably be expected to appear in an academic journal or be presented at a conference. To fulfill the presentation requirement for CS191/W, you will be expected to present your work in person to your faculty sponsor and/or their research group. Additionally, your work must be published on the CS191 website (cs191.stanford.edu).
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 (for CS194/W students) 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.