Program CS BS
Program CS BS
Overview
Pro gram 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.
G uide t o Cho o sing Int ro duct o ry Co urses
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, CS101 INTRO TO COMPUTING
PRINCIPLES or CS105 INTRODUCTION TO COMPUTERS 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. CS101 INTRO TO COMPUTING PRINCIPLES and CS105
INTRODUCTION TO COMPUTERS 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 CS1C INTRO COMPUTING AT
STANFORD, 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 CS106A
PROGRAMMING METHODOLOGY, followed by CS106B PROGRAMMING ABSTRACTIONS. Students in CS106A PROGRAMMING METHODOLOGY 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 CS106B PROGRAMMING ABSTRACTIONS. CS106A PROGRAMMING METHODOLOGY uses Python as its programming
language; CS106B PROGRAMMING ABSTRACTIONS uses C++. No prior knowledge of these languages is assumed, and the previous programming
experience required for CS106B PROGRAMMING ABSTRACTIONS 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 CS103 MATH FOUND OF COMPUTING, CS107 COMP ORG & SYSTEMS, and CS110 PRINCIPLES OF COMP SYS or CS111 OPERATING
SYSTEMS PRINCIPLES. CS103 MATH FOUND OF COMPUTING offers an introduction to the mathematical and theoretical foundations of computer
science. CS107 COMP ORG & SYSTEMS exposes students to various programming concepts that illustrate critical strategies used in systems
development; CS110 PRINCIPLES OF COMP SYS and CS111 OPERATING SYSTEMS PRINCIPLES build on this material, focusing on the development of
larger-scale software, using systems and networking abstractions.
In sum m ary:
For exposure:
CS1C INTRO COMPUTING AT STANFORD Introduction to Computing at Stanford
For nontechnical use:
CS101 INTRO TO COMPUTING PRINCIPLES Introduction to Computing Principles
or CS105 INTRODUCTION TO COMPUTERS Introduction to Computers
For scientific use:
CS106A PROGRAMMING METHODOLOGY Programming Methodology
For a technical introduction:
CS106A PROGRAMMING METHODOLOGY Programming Methodology
For significant use:
CS106A PROGRAMMING METHODOLOGY Programming Methodology
& CS106B PROGRAMMING ABSTRACTIONS and Programming Abstractions
CS103 MATH FOUND OF COMPUTING Mathematical Foundations of Computing
CS107 COMP ORG & SYSTEMS Computer Organization and Systems
CS110 PRINCIPLES OF COMP SYS
Principles of Computer Systems Operating Systems Principles
or CS111 OPERATING SYSTEMS PRINCIPLES
Overseas St udies Co urses in Co m put er 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,
Direct o r o f G raduat e S t udies Undergraduat e/G raduat e
Jerry Cain Undergraduate
S imple Requisit es
Co re Pro g ram Requirem ent s
T ype
Completion Requirement
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
Math Electives
Co m plet e at least 2 o f t he f o llo wing co urses:
MATH51 - Linear Algebra, Multivariable Calculus, and Modern Applications
MATH52 - Integral Calculus of Several Variables
MATH53 - Differential Equations with Linear Algebra, Fourier Methods, and Modern Applications
MATH104 - Applied Matrix Theory
MATH107 - Graph Theory
MATH108 - Introduction to Combinatorics and Its Applications
MATH109 - Groups and Symmetry
MATH110 - Number Theory for Cryptography
MATH113 - Linear Algebra and Matrix Theory
CS157 - Computational Logic
CS205L - Continuous Mathematical Methods with an Emphasis on Machine Learning
CME100 - Vector Calculus for Engineers
CME102 - Ordinary Differential Equations for Engineers
CME104 - Linear Algebra and Partial Differential Equations for Engineers
ENGR108 - Introduction to Matrix Methods
PHIL151 - Metalogic
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.
Plus one Science Elective. The Science Elective may be any course of three or more units from the School of Engineering Science list (Fig.
4-2 in the UGHB), PSYCH30 INTRO TO PERCEPTION, 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.
The Computational Biology Subplan requires a different set of Science courses. Please see the Computational Biology Subplan for details.
Engineering Fundamentals (13 units minimum; see Basic Requirement 3 in the School of Engineering section)
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 INTRODUCTORY ELECTRONICS or ENGR40M AN INTRO TO MAKING: WHAT IS EE for fewer than five units must take one
to two additional units of ENGR Fundamentals (13 units minimum) or one to two additional units of Depth.
***Students without prior programming experience should first take CS106A
Each subplan has its own category below. A subplan must consist of at least 25 units and seven courses.
G eneral Elect ives
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.
Fulf ill ANY o f t he f o llo wing requirem ent s:
Capst o ne Experience
T ype
Completion Requirement
Independent study projects (CS191 SENIOR PROJECT Senior Project or CS191W WRITING INTENSIVE SENIOR PROJ. 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).
Ho no rs (Opt io nal)
T ype
Completion Requirement
Addit io nal Co m m ent s:
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.
Students who meet the eligibility requirements and wish to be considered for the honors program must submit a written application to the CS
undergraduate program office by May 1 of the year preceding the honors work. The application must include a letter describing the research project,
a letter of endorsement from the faculty sponsor, and a transcript of courses taken at Stanford. Each year, a faculty review committee selects
successful candidates for honors from the pool of qualified applicants.
To receive departmental honors, students admitted to the honors program must, in addition to satisfying the standard requirements for the
undergraduate degree, do the following:
1. Complete at least nine units of CS191 SENIOR PROJECT or CS191W WRITING INTENSIVE SENIOR PROJ. under the direction of their project
sponsor
2. Attend a weekly honors seminar during winter quarter
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 department
5. Maintain the 3.6 GPA required for admission to the honors program
Subplan Areas
Select a total of two courses, each course should be from a different area.
Co m plet e at least 2 o f t he f o llo wing :
Area I: AI Methods
OR
OR
OR
Select one additional course from the areas above or one from the following:
Fulf ill ANY o f t he f o llo wing requirem ent s:
AI Methods
Co m plet e at least 1 o f t he f o llo wing co urses:
CS157 - Computational Logic
CS205L - Continuous Mathematical Methods with an Emphasis on Machine Learning
CS230 - Deep Learning
CS236 - Deep Generative Models
CS257 - Introduction to Automated Reasoning
STATS315A - Modern Applied Statistics: Learning
STATS315B - Modern Applied Statistics: Learning II
OR
Comp Bio
OR
OR
Ethics
OR
OR
Systems
Co m plet e at least 1 o f t he f o llo wing co urses:
CS229S - Systems for Machine Learning
OR
Other
Subplan Electives
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.
Students can replace one of these electives with a course found at https://cs.stanford.edu/explore.
Fulf ill ANY o f t he f o llo wing requirem ent s:
OR
Biology
Co m plet e at least 3 o f t he f o llo wing co urses:
BIO82 - Genetics
BIO83 - Biochemistry & Molecular Biology
BIO85 - Evolution
BIO86 - Cell Biology
OR
Human Biology
CS173A was previously offered as CS273A. Either CS173A or CS273A can be used to complete this requirement.
Area I: AI Methods
Co m plet e at least 1 o f t he f o llo wing co urses:
CS224R - Deep Reinforcement Learning
CS224W - Machine Learning with Graphs
CS228 - Probabilistic Graphical Models: Principles and Techniques
CS229 - Machine Learning
CS229S - Systems for Machine Learning
CS234 - Reinforcement Learning
CS238 - Decision Making under Uncertainty
OR
OR
Or students may instead choose one additional class from CS142, 147L, 448B, or a course from the list number 4, or one additional course from the
number 5 area requirement. (The course should be from a distinct area.)
Or student may instead choose one additional course from the list in number 4.
AND
Required Courses
AND
AND
AND
C. Networking Concentration
Fulf ill ALL o f t he f o llo wing requirem ent s:
Required Courses
Co m plet e ALL o f t he f o llo wing Co urses:
CS112 - Operating systems kernel implementation project
OR CS140E - Operating systems design and implementation
CS144 - Introduction to Computer Networking
AND
AND
AND
Subplan Electives
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 can replace one of these electives with a course found at https://cs.stanford.edu/explore.
Fulf ill ANY o f t he f o llo wing requirem ent s:
Students may also select any class from the Visual Computing Depth section (Note 4).
OR
A.
Co m plet e ALL o f t he f o llo wing Co urses:
CS142 - Web Applications
OR CS147L - Cross-platform Mobile App Development
CS147 - Introduction to Human-Computer Interaction Design
CS347 - Human-Computer Interaction: Foundations and Frontiers
AND
B.
Co m plet e at least 1 co urses in t he f o llo wing co urse set s:
CS-BS CS 247 Courses
AND
C.
HCI Mezzanine (course denote upper division HCI courses that cover large bodies of knowledge in HCI dept)
Fulf ill ALL o f t he f o llo wing requirem ent s:
AND
Electives Option 1
Co m plet e at least 1 o f t he f o llo wing co urses:
CS177 - Human Centered Product Management
CS194H - User Interface Design Project
CS206 - Exploring Computational Journalism
CS210A - Software Project Experience with Corporate Partners
OR
Electives Option 2
Co m plet e at least 1 co urses in t he f o llo wing co urse set s:
CS-BS CS 247 Courses
*The CS247 suffix chosen for this requirement cannot satisfy the Human-Computer Interaction Subplan (Track Req A).
OR
Electives Option 3
AND
D. Subplan Electives
Complete at least two additional courses selected from the CS-BS General Electives list in the Core Program Requirements section.
Students can replace one of these electives with a course found at https://cs.stanford.edu/explore.
CS 195 can be taken for a maximum of four units.
Subplan: Inf o rm at io n
T ype
Completion Requirement
Information Subplan
Fulf ill ALL o f t he f o llo wing requirem ent s:
A.
Co m plet e ALL o f t he f o llo wing Co urses:
CS124 - From Languages to Information
CS145 - Introduction to Big Data Systems
AND
OR
OR
AND
C. Subplan Electives
Complete at least two additional courses selected from the CS-BS General Electives list in the Core Program Requirements section.
Students can replace one of these electives with a course found at https://cs.stanford.edu/explore.
CS195 can be taken for a maximum of four units.
Subplan: Syst em s
T ype
Completion Requirement
Systems Subplan
Fulf ill ALL o f t he f o llo wing requirem ent s:
A.
AND
B.
Co m plet e at least 1 o f t he f o llo wing co urses:
CS143 - Compilers
EE180 - Digital Systems Architecture
AND
C.
Co m plet e at least 2 o f t he f o llo wing co urses:
CS144 - Introduction to Computer Networking
CS145 - Introduction to Big Data Systems
CS149 - Parallel Computing
CS155 - Computer and Network Security
CS190 - Software Design Studio
CS217 - Hardware Accelerators for Machine Learning
CS240 - Advanced Topics in Operating Systems
OR CS240LX - Advanced Systems Laboratory, Accelerated
CS242 - Programming Languages
CS243 - Program Analysis and Optimizations
CS244 - Advanced Topics in Networking
CS245 - Principles of Data-Intensive Systems
EE271 - Introduction to VLSI Systems
EE282 - Computer Systems Architecture
AND
D. Subplan Electives
Complete at least three additional courses selected from the list above, or from the Subplan Electives or General CS Electives listed below.
Students can replace one of these electives with a course found at https://cs.stanford.edu/explore.
Fulf ill ANY o f t he f o llo wing requirem ent s:
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.
Subplan: T heo ry
T ype
Completion Requirement
Theory Subplan
A.
Co m plet e ALL o f t he f o llo wing Co urses:
CS154 - Introduction to the Theory of Computation
AND
B.
Co m plet e at least 1 o f t he f o llo wing co urses:
CS168 - The Modern Algorithmic Toolbox
CS255 - Introduction to Cryptography
CS261 - Combinatorial Optimization
CS265 - Randomized Algorithms and Probabilistic Analysis
AND
C.
Complete two additional courses from the list B, or one of the following:
Co m plet e at least 2 o f t he f o llo wing co urses:
CS143 - Compilers
CS151 - Logic Programming
CS155 - Computer and Network Security
CS157 - Computational Logic
OR PHIL151 - Metalogic
CS163 - The Practice of Theory Research
CS166 - Advanced Data Structures
CS205L - Continuous Mathematical Methods with an Emphasis on Machine Learning
CS228 - Probabilistic Graphical Models: Principles and Techniques
CS233 - Geometric and Topological Data Analysis
CS235 - Computational Methods for Biomedical Image Analysis and Interpretation
CS236 - Deep Generative Models
CS242 - Programming Languages
CS250 - Algebraic Error Correcting Codes
CS251 - Cryptocurrencies and blockchain technologies
CS254 - Computational Complexity
CS259Q - Quantum Computing
CS263 - Counting and Sampling
CS264 - Beyond Worst-Case Analysis
CS269I - Incentives in Computer Science
CS353 - Seminar on Logic & Formal Philosophy
CS354 - Topics in Intractability: Unfulfilled Algorithmic Fantasies
MS&E310 - Linear Programming
AND
Subplan Electives
OR
Subplan: Unspecializ ed
T ype
Completion Requirement
Unspecialized Subplan
Fulf ill ALL o f t he f o llo wing requirem ent s:
A.
Co m plet e ALL o f t he f o llo wing Co urses:
CS154 - Introduction to the Theory of Computation
AND
B.
Co m plet e at least 1 o f t he f o llo wing co urses:
CS112 - Operating systems kernel implementation project
OR CS140E - Operating systems design and implementation
CS143 - Compilers
AND
C.
Complete one additional course from the list above, or one of the following:
Co m plet e at least 1 o f t he f o llo wing co urses:
CS144 - Introduction to Computer Networking
CS155 - Computer and Network Security
CS190 - Software Design Studio
CS242 - Programming Languages
CS244 - Advanced Topics in Networking
EE180 - Digital Systems Architecture
AND
D.
Co m plet e at least 1 o f t he f o llo wing co urses:
CS221 - Artificial Intelligence: Principles and Techniques
CS223A - Introduction to Robotics
CS228 - Probabilistic Graphical Models: Principles and Techniques
CS229 - Machine Learning
CS231A - Computer Vision: From 3D Perception to 3D Reconstruction and Beyond
AND
E.
AND
Program Policies
Ext ernal Credit Po licies
https://ughb.stanford.edu/transfers-ap-exceptions
Transfer and AP credits in Math, Science, Fundamentals, and the Technology in Society course must be confirmed for the major by the School of
Engineering Deanʼs office; see the UGHB page on petitions for more information.
Learning Outcomes
Pro gram Learning Out co mes
Learning outcomes are used in evaluating students and the departmentʼs undergraduate program. Students are expected to be able to:
Apply the knowledge of mathematics, science, and engineering
Design and conduct experiments, as well to analyze and interpret data
Design a system, component, or process to meet desired needs within realistic constraints such as economic, environmental, social, political,
ethical, health and safety, manufacturability, and sustainability
Function on multidisciplinary teams
Identify, formulate, and solve engineering problems
Understand professional and ethical responsibility
Communicate effectively
Understand the impact of engineering solutions in a global, economic, environmental, and societal context
Demonstrate a working knowledge of contemporary issues
Apply the techniques, skills, and modern engineering tools necessary for engineering practice
Transition from engineering concepts and theory to real engineering applications