Skip to Main Content

CS-BS - Computer Science (BS)

Download as PDF

Computer ScienceUndergraduate MatriculatedBS - Bachelor of Science

Program Overview

The undergraduate program in Computer Science aims to develop students’ breadth of knowledge across the subject areas of computer science, including their ability to apply the defining processes of computer science theory, abstraction, design, and implementation to solve problems in the discipline. Students take a set of core courses. After learning the essential programming techniques and the mathematical foundations of computer science, students take courses in programming techniques, automata and complexity theory, systems programming, computer architecture, analysis of algorithms, artificial intelligence, and applications. The program prepares students for careers in government, law, and the corporate sector and for graduate study.

Preparing for the Major

Guide to Choosing Introductory Courses

Students arriving at Stanford have widely differing backgrounds and goals, but most find that using computers effectively benefits their education. The department offers many introductory courses to meet the needs of these students.

For students whose principal interest is exposure to the fundamental ideas behind computer science and programming, course or course are the most appropriate courses. They are intended for students in nontechnical disciplines who expect to make some use of computers but do not expect to go on to more advanced courses. course and course meet the Ways of Thinking Ways of Doing breadth requirements in Formal Reasoning and include an introduction to programming and the use of modern Internet-based technologies. Students interested in computer use should consider course, Introduction to Computing at Stanford.

Students who intend to pursue a serious course of study in computer science may enter the program at various levels, depending on their background. Students with little prior experience or those who wish to take more time to study the fundamentals of programming should take course, followed by course. Students in course need not have prior programming experience. Students with significant previous exposure to programming or those who want an intensive introduction to the field may start directly in coursecourse uses Python as its programming language; course uses C++. No prior knowledge of these languages is assumed, and the previous programming experience required for course may be in any language. In all cases, students are encouraged to discuss their background with the instructors responsible for these courses.

After the introductory sequence, Computer Science majors and those needing a significant computer science background for related engineering majors should take coursecourse, and course or coursecourse offers an introduction to the mathematical and theoretical foundations of computer science. course exposes students to various programming concepts that illustrate critical strategies used in systems development; course and course build on this material, focusing on the development of larger-scale software, using systems and networking abstractions.

In summary:

For exposure:

course

Introduction to Computing at Stanford

For nontechnical use:

course

Introduction to Computing Principles

or course

Introduction to Computers

For scientific use:

course

Programming Methodology

For a technical introduction:

course

Programming Methodology

For significant use:

course

course

Programming Methodology

and Programming Abstractions

course

Mathematical Foundations of Computing

course

Computer Organization and Systems

course

or course

Principles of Computer Systems Operating Systems Principles

Overseas Studies Courses in Computer Science

See the listings in ExploreCourses or the Bing Overseas Studies website for course descriptions and additional offerings. Students should consult their department or program’s student services office for the applicability of Overseas Studies courses to a major or minor program.

See the Handbook for Undergraduate Engineering Programs (UGHB) for additional information and sample programs,

Minimum Units in the Program

96

Minimum University Units

180
Completion requirement
Fulfill ALL of the following requirements:
Complete ALL of the following Courses:

MATH 19, MATH 20, and MATH 21, or AP Calculus Credit may be used as long as at least 26 MATH units are taken. The School of Engineering must approve AP Calculus Credit.  

AND
Complete at least 2 of the following Courses:
  • Restrictions: CS 157 + Phil 151 may not be combined to satisfy the Math electives requirement. Students taking Math 51 & 52 may not count CME 100 as an elective.

  • Math electives are not required for the Computational Bio Subplan.

Fulfill ALL of the following requirements:
Complete ALL of the following Courses:

The Computational Biology Subplan requires a different set of Science courses. Please see the Computational Biology Subplan for details.

AND
Complete at least 1 of the following Courses:
  • The Science Elective may be any course of three or more units from the list above, PSYCH30, or AP Chemistry Credit. Either of the PHYSICS sequences 61/63 or 21/23 may be substituted for 41/43 as long as at least 11 science units are taken. The School of Engineering must approve AP Chemistry and AP Physics credits.

Complete at least 1 of the following Courses:
Complete ALL of the following Courses:

Fundamentals Elective for three to five units. (May be an ENGR fundamentals or an additional CS Depth course. See Fig. 3-4 in the UGHB for the approved ENGR fundamentals list. May not be any CS 106).

  • Students who take ENGR40A or ENGR40M for fewer than five units must take one to two additional units of ENGR Fundamentals (10 units minimum) or one to two additional units of Depth.

  • **Students without prior programming experience should first take CS106A.

Complete ALL of the following Courses:

Choose one of the ten CS degree subplans:

  • Artificial Intelligence

  • Individually Designed

  • Computational Biology

  • Computer Engineering

  • Visual Computing

  • Human-Computer Interaction

  • Information

  • Systems

  • Theory

  • Unspecialized

Each subplan has its own category below. A subplan must consist of at least 25 units and seven courses.

General Electives

The following subplans include an electives requirement :

  • Artificial Intelligence

  • Visual Computing

  • Human-Computer Interaction

  • Information

  • Systems

  • Theory

  • Unspecialized

These electives requirements can include choosing from a list of CS General Electives courses (listed immediately below):

If you see a reference to CS-BS General Electives in one of the subplans, you can refer here for that list.

Fulfill ANY of the following requirements:

See individual subplans for specific direction on selecting General Elective courses.

Complete ANY of the following Courses:
OR

The Department of Computer Science (CS) encourages undergraduates to take humanities and social science courses outside of CS to complement the technical curriculum. Students in the Artificial Intelligence, Human-Computer Interaction, Information, Systems, Theory, or Visual Computing tracks may use one course from the approved CS humanities electives list to fulfill a track elective requirement on their program sheet.

Complete at least 1 of the following Courses:

Note: This option is not available for students in the Computational Biology, Computer Engineering, or Unspecialized tracks.

Cross-listed versions of these courses are also acceptable.

 A course may only be counted toward one requirement, not double-counted. All courses taken for the major must be taken for a letter grade if that option is offered by the instructor, except courses taken in spring 2019-20 through summer 2020-21. Minimum Combined GPA for all courses in Engineering Fundamentals and Depth is 2.0.

Completion requirement
Complete at least 1 of the following Courses:
Completion requirement
Earn at least 3 credits from the following:

Independent study projects (course Senior Project or course Writing Intensive Senior Project) require faculty sponsorship and must be approved by the advisor, faculty sponsor, and the CS senior project advisor (Patrick Young). A signed approval form and a brief description of the proposed project should be filed the quarter before work begins. Further details can be found in the Handbook for Undergraduate Engineering Programs (UGHB).

Completion requirement

The Department of Computer Science (CS) offers an honors program for undergraduates whose academic records and personal initiative indicate that they have the necessary skills to undertake high-quality research in computer science. Admission to the program is by application only. To apply for the honors program, students must be majoring in Computer Science, have a grade point average (GPA) of at least 3.6 in courses that count toward the major, and achieve senior standing (135 or more units) by the end of the academic year in which they apply. Coterminal master’s students can apply if they have not received their undergraduate degree. Beyond these requirements, students who apply for the honors program must find a Computer Science faculty member who agrees to serve as the thesis advisor for the project. Thesis advisors must be members of Stanford’s Academic Council.

Applications must include an application letter (typically 3-5 pages) describing the research project and the applicant's background, a short letter of endorsement from the faculty sponsor, and an unofficial transcript. 

These qualifications are necessary but do not guarantee admission to the honors program. Honors students will be selected from the qualified applicants by a review committee. Applications for the honors program are due by May 1 of each year and can be submitted through the application form below. Any inquiries regarding the honors application or program can be sent to Danielle Gaspar (djgaspar@stanford.edu). Successful applicants will be notified by late May. 

For students participating in CURIS or have missed the first Honors program application deadline (May 1st), there is a second end-of-summer application deadline of August 31 of each year -- successful applicants will be notified by late September. At the start of August, the application form (via SmartSheet) will reopen for second-round submission students.  If admitted to the honors program, Summer quarter CURIS projects may be extended through the following year and used as honors projects if the faculty sponsor agrees to the extension. You can apply through the link below or the embedded SmartSheet form at the end of this page.

Upon acceptance into the Honors Program, students are required to fulfill the following requirements within the academic year of their admission.

  1. Complete at least nine units of course or course under the direction of their project sponsor

  2. Attend a weekly honors seminar during winter and spring quarters

  3. Complete an honors thesis deemed acceptable by the thesis advisor and at least one additional faculty member

  4. Present the thesis at a public colloquium sponsored by the CS department

  5. Maintain the 3.6 GPA required for admission to the honors program

Earn at least 9 credits from the following:
Completion requirement
Complete ALL of the following Courses:

Select a total of two courses, each course should be from a different area.

Complete at least 2 of the following:
Complete at least 1 of the following Courses:
OR
Complete at least 1 of the following Courses:
OR
Complete at least 1 of the following Courses:
OR
Complete at least 1 of the following Courses:

Select one additional course from the areas above or one from the following:

Fulfill ANY of the following requirements:
Complete at least 1 of the following Courses:
OR
Complete at least 1 of the following Courses:
OR
Complete at least 1 of the following Courses:
OR
Complete ALL of the following Courses:
OR
Complete at least 1 of the following Courses:

CS329 may be taken with advisor approval.

OR
Complete at least 1 of the following Courses:
OR
Complete at least 1 of the following Courses:

Complete at least three additional courses selected from the lists above, the Pathway Electives below, or the CS-BS General Electives listed in the Core Program Requirements section.

Fulfill ANY of the following requirements:
Complete ANY of the following Courses:
OR

You may also choose from the CS-BS General Electives courses in the Core Program Requirements section.

CS 195 can be taken for a maximum of four units.

Completion requirement

This track's Mathematics, Science, and Engineering Fundamentals requirements are non-standard. See Handbook for Undergraduate Engineering Programs for details.

Complete 12 units from either the Biology or Human Biology courses listed below.

Fulfill ANY of the following requirements:
Complete at least 3 of the following Courses:
OR
Complete ALL of the following Courses:
Complete ALL of the following Courses:

CS173A was previously offered as CS273A. Either CS173A or CS273A can be used to complete this requirement.

Complete at least 1 of the following Courses:
Complete at least 1 of the following Courses:
Complete at least 1 of the following Courses:

Complete one course from one of the three areas.

Fulfill ANY of the following requirements:
Complete at least 1 of the following Courses:
OR
Complete at least 1 of the following Courses:
OR
Complete at least 1 of the following Courses:
Complete at least 1 of the following Courses:

Or students may instead choose one additional class from CS 142, CS 147L, DATASCI 112, or a course from the list number 4 (see list D on bulletin), or one additional course from the number 5 (see list E on bulletin) area requirement. (The course should be from a distinct area.)

Complete at least 1 of the following Courses:

Or student may instead choose one additional course from the list in number 4.

Completion requirement
Fulfill ALL of the following requirements:
Complete ALL of the following Courses:
AND
Complete at least 2 of the following Courses:
AND
Fulfill ALL of the following requirements:
Complete ALL of the following Courses:
AND
Complete at least 1 of the following Courses:

*Students must successfully complete CS111 prior to taking CS112

*CS111 and CS212 cannot both be counted towards the BS requirements. However, counting CS111 and CS140E toward the BS requirements is acceptable.

AND
Complete ALL of the following Courses:
AND
Fulfill ALL of the following requirements:
Complete ALL of the following Courses:

*Students must successfully complete CS111 prior to taking CS112.

*CS111 and CS212 cannot both be counted toward the BS requirements. However, counting CS111 and CS140E towards the BS requirements is acceptable.

AND
Complete at least 1 of the following Courses:

To be taken for 9-11 units

Completion requirement
Fulfill ALL of the following requirements:
Complete ALL of the following Courses:
AND
Complete at least 1 courses in the following Course Sets:
AND

HCI Mezzanine (course denote upper division HCI courses that cover large bodies of knowledge in HCI dept)

Fulfill ALL of the following requirements:
Complete ALL of the following Courses:
AND
Fulfill ANY of the following requirements:
Complete at least 1 of the following Courses:
OR
Complete at least 1 courses in the following Course Sets:

*The CS247 suffix chosen for this requirement cannot satisfy the Human-Computer Interaction Subplan (Track Req A).

OR
Complete at least 1 courses in the following Course Sets:

*Any suffix for three or more units can be taken.

AND

Complete at least two additional courses selected from the CS-BS General Electives list in the Core Program Requirements section.

CS 195 can be taken for a maximum of four units.

Completion requirement
Fulfill ALL of the following requirements:
Complete ALL of the following Courses:
AND

Complete two courses from different areas:

Complete at least 2 of the following:
Complete at least 1 of the following Courses:
OR
Complete at least 1 of the following Courses:

*Student must successfully complete CS111 prior to taking CS112.

**CS111 and CS212 can both be counted towards the BS requirements. Students must successfully complete CS111 prior to taking CS140E.

OR
Complete at least 1 of the following Courses:
OR
Complete at least 1 of the following Courses:
AND

Complete at least two additional courses selected from the CS-BS General Electives list in the Core Program Requirements section.

CS195 can be taken for a maximum of four units.

Completion requirement
Fulfill ALL of the following requirements:
Complete ALL of the following Courses:
AND
Complete at least 1 of the following Courses:
AND

Complete two additional courses from the list B, or one of the following:

Complete at least 2 of the following Courses:

*Enrollment in CS369 with permission of undergraduate advisor.

**Enrollment in MS&E310 with permission of undergraduate advisor.

AND

Complete at least three additional courses selected from lists B or C, or from the Subplan Electives or General CS Electives listed below.

Fulfill ANY of the following requirements:
Complete ANY of the following Courses:
OR

You may also choose from the list of CS-BS General Electives courses listed in the Core Program Requirements section.

Completion requirement
Fulfill ALL of the following requirements:
Complete at least 1 of the following Courses:

*Student must successfully complete CS111 prior to taking CS112.

**CS111 and CS212 can both be counted towards the BS requirements. Students must successfully complete CS111 prior to taking CS140E.

AND
Complete at least 1 of the following Courses:
AND
Complete at least 2 of the following Courses:
AND

Complete at least three additional courses selected from the list above, or from the Subplan Electives or General CS Electives listed below.

Fulfill ANY of the following requirements:
Complete at least 3 of the following Courses:
OR

You may also choose from the list of CS-BS General Electives courses listed in the Core Program Requirements section.

CS195 can be taken for a maximum of 4 units.

Completion requirement
Fulfill ALL of the following requirements:
Complete ALL of the following Courses:
AND
Complete at least 1 of the following Courses:

*Student must successfully complete CS111 prior to taking CS112.

**CS111 and CS212 can both be counted towards the BS requirements. Students must successfully complete CS111 prior to taking CS140E.

AND

Complete one additional course from the list above, or one of the following:

Complete at least 1 of the following Courses:
AND
Complete at least 1 of the following Courses:
AND
Complete at least 1 of the following Courses:
AND

Complete at least two additional courses selected from the CS-BS General Electives list in the Core Program Requirements section.

CS195 can be taken for a maximum of four units.

Completion requirement
Fulfill ALL of the following requirements:
Complete at least 2 of the following Courses:
AND
Complete at least 3 of the following Courses:
AND

Three Additional Courses

Complete at least three additional courses selected from the list above, from the Subplan Electives list below, or the CS-BS General Electives list in the Core Program Requirements section.

Fulfill ANY of the following requirements:
Complete at least 3 of the following Courses:

Students may also select any class from the Visual Computing Depth section (Note 4).

OR

You may also choose from the list of CS-BS General Electives courses listed in the Core Program Requirements section.

CS195 can be taken for a maximum of four units.

Completion requirement

Students may propose an Individually Designed Track that includes a minimum of seven courses, at least four of which must be CS courses numbered 100 or above. Proposals must be submitted and approved at least two quarters before graduation. To create an individually designed program, students should complete an Individually Designed Track program sheet and obtain approval from their undergraduate advisor and the Associate Chair for Education, Chris Gregg. Proposals will be evaluated for coherence and rigor. Approved program sheets should be submitted to the staff in the CS undergraduate program office, and any subsequent changes must go through the same proposal and approval process.