CS-BS - Computer Science (BS)
Download as PDF
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 course. course 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 course, course, and course or course. course 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: | ||
Introduction to Computing at Stanford | ||
For nontechnical use: | ||
Introduction to Computing Principles | ||
or course | Introduction to Computers | |
For scientific use: | ||
Programming Methodology | ||
For a technical introduction: | ||
Programming Methodology | ||
For significant use: | ||
& course | Programming Methodology and Programming Abstractions | |
Mathematical Foundations of Computing | ||
Computer Organization and Systems | ||
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
Minimum University Units
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.
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.
The Computational Biology Subplan requires a different set of Science courses. Please see the Computational Biology Subplan for details.
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.
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.
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.
See individual subplans for specific direction on selecting General Elective courses.
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.
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.
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).
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.
Complete at least nine units of course or course under the direction of their project sponsor
Attend a weekly honors seminar during winter and spring quarters
Complete an honors thesis deemed acceptable by the thesis advisor and at least one additional faculty member
Present the thesis at a public colloquium sponsored by the CS department
Maintain the 3.6 GPA required for admission to the honors program
Select a total of two courses, each course should be from a different area.
Select one additional course from the areas above or one from the following:
CS329 may be taken with advisor approval.
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.
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.
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.
CS173A was previously offered as CS273A. Either CS173A or CS273A can be used to complete this requirement.
Complete one course from one of the three areas.
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.)
Or student may instead choose one additional course from the list in number 4.
*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.
*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.
To be taken for 9-11 units
HCI Mezzanine (course denote upper division HCI courses that cover large bodies of knowledge in HCI dept)
*The CS247 suffix chosen for this requirement cannot satisfy the Human-Computer Interaction Subplan (Track Req A).
*Any suffix for three or more units can be taken.
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.
Complete two courses from different areas:
*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.
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.
Complete two additional courses from the list B, or one of the following:
*Enrollment in CS369 with permission of undergraduate advisor.
**Enrollment in MS&E310 with permission of undergraduate advisor.
Complete at least three additional courses selected from lists B or C, or from the Subplan Electives or General CS Electives listed below.
You may also choose from the list of CS-BS General Electives courses listed in the Core Program Requirements section.
*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.
Complete at least three additional courses selected from the list above, or from the Subplan Electives or General CS Electives listed below.
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.
*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.
Complete one additional course from the list above, or one of the following:
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.
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.
Students may also select any class from the Visual Computing Depth section (Note 4).
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.
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.