0% found this document useful (0 votes)
7 views

Program CS BS

The Computer Science (BS) undergraduate program at Stanford aims to equip students with a comprehensive understanding of computer science principles, including programming, algorithms, and systems design, preparing them for careers and further studies. Students can choose from various introductory courses based on their background and interests, followed by core courses in mathematics, science, engineering fundamentals, and computer science. Additionally, students must complete a subplan and electives to fulfill degree requirements, ensuring a well-rounded education in the field.

Uploaded by

Manu Bajwa
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
7 views

Program CS BS

The Computer Science (BS) undergraduate program at Stanford aims to equip students with a comprehensive understanding of computer science principles, including programming, algorithms, and systems design, preparing them for careers and further studies. Students can choose from various introductory courses based on their background and interests, followed by core courses in mathematics, science, engineering fundamentals, and computer science. Additionally, students must complete a subplan and electives to fulfill degree requirements, ensuring a well-rounded education in the field.

Uploaded by

Manu Bajwa
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 21

CS-BS - Computer Science (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

Mathematics (26 units minimum)

Fulf ill ALL o f t he f o llo wing requirem ent s:

Mathematics (26 units minimum)

Co m plet e ALL o f t he f o llo wing Co urses:


CS103 - Mathematical Foundations of Computing
CS109 - Introduction to Probability for Computer Scientists
MATH19 - Calculus
MATH20 - Calculus
MATH21 - Calculus

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.

Science (11 units minimum)

Co m plet e ALL o f t he f o llo wing Co urses:


PHYSICS41 - Mechanics
OR PHYSICS21 - Mechanics and Fluids
OR PHYSICS61 - Mechanics and Special Relativity
PHYSICS43 - Electricity and Magnetism
OR PHYSICS23 - Electricity, Magnetism, and Optics
OR PHYSICS81 - Electricity and Magnetism Using Special Relativity and Vector Calculus
OR OSPPARIS53 - Electricity, Magnetism and Optics with Laboratory

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.

Technology in Society (3-5 units)


One T echno lo g y in So ciet y Co urse
The course chosen must be on the SoE Approved Courses list for the year taken; see Basic Requirements 4 in the School of Engineering section.

Engineering Fundamentals (13 units minimum; see Basic Requirement 3 in the School of Engineering section)

Co m plet e ALL o f t he f o llo wing Co urses:


CS106B - Programming Abstractions
ENGR40M - An Intro to Making: What is EE
OR ENGR76 - Information Science and Engineering

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

Computer Science Core (15 units)


Co m plet e ALL o f t he f o llo wing Co urses:
CS107 - Computer Organization and Systems
OR CS107E - Computer Systems from the Ground Up
CS111 - Operating Systems Principles
CS161 - Design and Analysis of Algorithms

Computer Science Subplan Requirements


Cho o se o ne o f t he t en CS deg ree 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.
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:

CS-BS General Electives


See individual subplans for specific direction on selecting General Elective courses.
Co m plet e ANY o f t he f o llo wing Co urses:
CS108 - Object-Oriented Systems Design
CS112 - Operating systems kernel implementation project
CS123 - A Hands-On Introduction to Building AI-Enabled Robots
CS124 - From Languages to Information
CS131 - Computer Vision: Foundations and Applications
CS137A - Principles of Robot Autonomy I
CS140E - Operating systems design and implementation
CS142 - Web Applications
CS143 - Compilers
CS144 - Introduction to Computer Networking
CS145 - Introduction to Big Data Systems
CS147 - Introduction to Human-Computer Interaction Design
CS147L - Cross-platform Mobile App Development
CS148 - Introduction to Computer Graphics and Imaging
CS149 - Parallel Computing
CS151 - Logic Programming
CS153 - Infrastructure at Scale
CS154 - Introduction to the Theory of Computation
CS155 - Computer and Network Security
CS157 - Computational Logic
OR PHIL151 - Metalogic
CS163 - The Practice of Theory Research
CS166 - Advanced Data Structures
CS168 - The Modern Algorithmic Toolbox
CS173A - Foundations of Computational Human Genomics
CS177 - Human Centered Product Management
CS190 - Software Design Studio
CS195 - Supervised Undergraduate Research
CS197 - Computer Science Research
CS197C - Computer Science Research: CURIS Internship Onramp
CS205L - Continuous Mathematical Methods with an Emphasis on Machine Learning
CS206 - Exploring Computational Journalism
CS210A - Software Project Experience with Corporate Partners
CS212 - Operating Systems and Systems Programming
CS217 - Hardware Accelerators for Machine Learning
CS221 - Artificial Intelligence: Principles and Techniques
CS223A - Introduction to Robotics
CS224G - Apps With LLMs Inside
CS224N - Natural Language Processing with Deep Learning
CS224R - Deep Reinforcement Learning
CS224S - Spoken Language Processing
CS224U - Natural Language Understanding
CS224V - Conversational Virtual Assistants with Deep Learning
CS224W - Machine Learning with Graphs
CS225A - Experimental Robotics
CS227B - General Game Playing
CS228 - Probabilistic Graphical Models: Principles and Techniques
CS229 - Machine Learning
CS229B - Machine Learning for Sequence Modeling
CS229M - Machine Learning Theory
CS229S - Systems for Machine Learning
CS230 - Deep Learning
CS231A - Computer Vision: From 3D Perception to 3D Reconstruction and Beyond
CS231N - Deep Learning for Computer Vision
CS232 - Digital Image Processing
CS233 - Geometric and Topological Data Analysis
CS234 - Reinforcement Learning
CS235 - Computational Methods for Biomedical Image Analysis and Interpretation
CS237A - Principles of Robot Autonomy I
CS237B - Principles of Robot Autonomy II
CS238 - Decision Making under Uncertainty
CS240 - Advanced Topics in Operating Systems
CS240LX - Advanced Systems Laboratory, Accelerated
CS242 - Programming Languages
CS243 - Program Analysis and Optimizations
CS244 - Advanced Topics in Networking
CS244B - Distributed Systems
CS245 - Principles of Data-Intensive Systems
CS246 - Mining Massive Data Sets
CS247 - Human-Computer Interaction Design Studio (Inactive)
CS247A - Design for Artificial Intelligence
CS247B - Design for Behavior Change
CS247G - Design for Play
CS247I - Design for Understanding
CS247L - Human Computer Interaction Technology Laboratory (Inactive)
CS247S - Service Design
CS248A - Computer Graphics: Rendering, Geometry, and Image Manipulation
CS248B - Fundamentals of Computer Graphics: Animation and Simulation
CS249I - The Modern Internet
CS250 - Algebraic Error Correcting Codes
CS251 - Cryptocurrencies and blockchain technologies
CS252 - Analysis of Boolean Functions (Inactive)
CS253 - Web Security
CS254 - Computational Complexity
CS254B - Computational Complexity II
CS255 - Introduction to Cryptography
CS256 - Algorithmic Fairness
CS257 - Introduction to Automated Reasoning
CS259Q - Quantum Computing
CS261 - Combinatorial Optimization
CS263 - Counting and Sampling
CS264 - Beyond Worst-Case Analysis
CS265 - Randomized Algorithms and Probabilistic Analysis
CS269I - Incentives in Computer Science
CS269O - Introduction to Optimization Theory
CS269Q - Elements of Quantum Computer Programming (Inactive)
CS270 - Modeling Biomedical Systems
CS271 - Artificial Intelligence in Healthcare (Inactive)
CS272 - Introduction to Biomedical Informatics Research Methodology
CS273B - Deep Learning in Genomics and Biomedicine
CS273C - Cloud Computing for Biology and Healthcare
CS274 - Representations and Algorithms for Computational Molecular Biology
CS275 - Translational Bioinformatics
CS276 - Information Retrieval and Web Search (Inactive)
CS278 - Social Computing
CS279 - Computational Biology: Structure and Organization of Biomolecules and Cells
CS281 - Ethics of Artificial Intelligence
CS323 - The AI Awakening: Implications for the Economy and Society
CS330 - Deep Multi-task and Meta Learning
CS333 - Algorithms for Interactive Robotics
CS336 - Robot Perception and Decision-Making: Optimal and Learning-based Approaches (Inactive)
CS342 - Building for Digital Health
CS348A - Computer Graphics: Geometric Modeling & Processing
CS348B - Computer Graphics: Image Synthesis Techniques
CS348C - Computer Graphics: Animation and Simulation
CS348E - Character Animation: Modeling, Simulation, and Control of Human Motion
CS348I - Computer Graphics in the Era of AI
CS348K - Visual Computing Systems
CS348N - Neural Models for 3D Geometry
CS351 - Open Problems in Coding Theory
CS355 - Advanced Topics in Cryptography
CS361 - Engineering Design Optimization
CS368 - Algorithmic Techniques for Big Data
CS377G - Designing Serious Games
CS398 - Computational Education
CS448B - Data Visualization
CME108 - Introduction to scientific computing with machine learning applications
EE108 - Digital System Design
EE180 - Digital Systems Architecture
EE267 - Virtual Reality
EE282 - Computer Systems Architecture
EE374 - Fundamentals of Blockchain Infrastructure
ENGR245 - The Lean LaunchPad: Getting Your Lean Startup Off the Ground
MS&E234 - Data Privacy and Ethics

Addit io nal Co m m ent s:


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.

Writ ing in t he Majo r (WIM)


T ype
Completion Requirement

Writing in the Major (WIM)


Co m plet e at least 1 o f t he f o llo wing co urses:
CS181W - Computers, Ethics, and Public Policy (WIM)
CS182W - Ethics, Public Policy, and Technological Change (WIM)
CS191W - Writing Intensive Senior Research Project
CS194W - Software Project (WIM)
CS210B - Software Project Experience with Corporate Partners

Addit io nal Co m m ent s:

Capst o ne Experience
T ype
Completion Requirement

Senior Project (3 units)

Earn at least 3 credit s f ro m t he f o llo wing :


CS191 - Senior Project
CS191W - Writing Intensive Senior Research Project
CS194 - Software Project
CS194H - User Interface Design Project
CS194W - Software Project (WIM)
CS210B - Software Project Experience with Corporate Partners

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).

Addit io nal Co m m ent s:

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: Art if icial Int ellig ence


T ype
Completion Requirement

Artificial Intelligence Subplan


Co m plet e ALL o f t he f o llo wing Co urses:
CS221 - Artificial Intelligence: Principles and Techniques

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

Co m plet e at least 1 o f t he f o llo wing co urses:


CS224R - Deep Reinforcement Learning
CS228 - Probabilistic Graphical Models: Principles and Techniques
CS229 - Machine Learning
CS229M - Machine Learning Theory
CS229T - Machine Learning Theory: A Modern Perspective (Inactive)
CS234 - Reinforcement Learning
CS238 - Decision Making under Uncertainty

OR

Area II: Natural Language Processing


Co m plet e at least 1 o f t he f o llo wing co urses:
CS124 - From Languages to Information
CS224N - Natural Language Processing with Deep Learning
CS224S - Spoken Language Processing
CS224U - Natural Language Understanding
CS224V - Conversational Virtual Assistants with Deep Learning

OR

Area III: Vision

Co m plet e at least 1 o f t he f o llo wing co urses:


CS131 - Computer Vision: Foundations and Applications
CS231A - Computer Vision: From 3D Perception to 3D Reconstruction and Beyond
CS231N - Deep Learning for Computer Vision

OR

Area IV: Robotics

Co m plet e at least 1 o f t he f o llo wing co urses:


CS123 - A Hands-On Introduction to Building AI-Enabled Robots
CS137A - Principles of Robot Autonomy I
CS223A - Introduction to Robotics
CS237A - Principles of Robot Autonomy I
Additional Areas

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

Co m plet e at least 1 o f t he f o llo wing co urses:


CS235 - Computational Methods for Biomedical Image Analysis and Interpretation
CS279 - Computational Biology: Structure and Organization of Biomolecules and Cells
CS371 - Computational Biology in Four Dimensions

OR

Information and the Web


Co m plet e at least 1 o f t he f o llo wing co urses:
CS224W - Machine Learning with Graphs
CS276 - Information Retrieval and Web Search (Inactive)

OR

Ethics

Co m plet e ALL o f t he f o llo wing Co urses:


CS256 - Algorithmic Fairness

OR

Robotics and Control

Co m plet e at least 1 o f t he f o llo wing co urses:


CS225A - Experimental Robotics
CS327A - Advanced Robotic Manipulation
CS329 - Topics in Artificial Intelligence (Inactive)
ENGR205 - Introduction to Control Design Techniques
MS&E251 - Introduction to Stochastic Control with Applications (Inactive)
MS&E351 - Dynamic Programming and Stochastic Control (Inactive)

CS329 may be taken with advisor approval.

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

Co m plet e at least 1 o f t he f o llo wing co urses:


CS151 - Logic Programming
CS227B - General Game Playing

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:

Subplan Elective Courses


Co m plet e ANY o f t he f o llo wing Co urses:
CS325B - Data for Sustainable Development
CS326 - Topics in Advanced Robotic Manipulation
CS329D - Machine Learning Under Distributional Shifts
CS330 - Deep Multi-task and Meta Learning
CS338 - Physical Human Robot Interaction
CS342 - Building for Digital Health
CS428 - Computation and Cognition: The Probabilistic Approach (Inactive)
EE263 - Introduction to Linear Dynamical Systems
EE278 - Probability and Statistical Inference
EE364A - Convex Optimization I
EE364B - Convex Optimization II
MS&E252 - Foundations of Decision Analysis
MS&E352 - Decision Analysis II: Professional Decision Analysis (Inactive)
MS&E355 - Influence Diagrams and Probabilistics Networks
PHIL152 - Computability and Logic
PSYCH204A - Human Neuroimaging Methods
PSYCH204B - Computational Neuroimaging: Data Analyses
PSYCH209 - Neural Network Models of Cognition
STATS200 - Introduction to Theoretical Statistics
STATS202 - Statistical Learning and Data Science
STATS203 - Regression Models and Analysis of Variance
STATS205 - Introduction to Nonparametric Statistics
STATS271 - Applied Bayesian Statistics

OR

CS General Elective Courses


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.

Addit io nal Co m m ent s:

Subplan: Individually Desig ned


T ype
Completion Requirement

Addit io nal Co m m ent s:


Students may propose an Individually Designed subplan. Proposals should include a minimum of seven courses, at least four of which must be CS
courses numbered 100 or above. Proposals must be submitted & approved at least two quarters before graduation. To create an individually
designed program, students should complete an Individually Designed Track program sheet and seek approval from their undergrad advisor and
Associate Chair of Education (acting), Chris Gregg. Proposals will be evaluated for coherence and rigor. Approved program sheets should be given to
the CS undergraduate program office staff. Any subsequent changes must go through the same proposal and approval process.
Subplan: Co m put at io nal Bio lo g y
T ype
Completion Requirement

Computational Biology Subplan


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.
Fulf ill ANY o f t he f o llo wing requirem ent s:

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

Co m plet e ALL o f t he f o llo wing Co urses:


HUMBIO2A - Genetics, Molecular Biology and Evolution
HUMBIO3A - Cell and Developmental Biology
HUMBIO4A - The Human Organism

A. Complete the following courses:


Co m plet e ALL o f t he f o llo wing Co urses:
CS173A - Foundations of Computational Human Genomics
CS221 - Artificial Intelligence: Principles and Techniques

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

B. Select one of the following:


Co m plet e at least 1 o f t he f o llo wing co urses:
CS145 - Introduction to Big Data Systems
CS246 - Mining Massive Data Sets

C. Select one of the following:

Co m plet e at least 1 o f t he f o llo wing co urses:


CS142 - Web Applications
CS147L - Cross-platform Mobile App Development
CS448B - Data Visualization

D. One additional course selected from the following:

Co m plet e at least 1 o f t he f o llo wing co urses:


CS279 - Computational Biology: Structure and Organization of Biomolecules and Cells
CS371 - Computational Biology in Four Dimensions
BIOMEDIN210 - Modeling Biomedical Systems
BIOMEDIN214 - Representations and Algorithms for Computational Molecular Biology
BIOMEDIN215 - Data Science for Medicine
BIOMEDIN217 - Translational Bioinformatics
BIOMEDIN219 - Mathematical Models and Medical Decisions
BIOMEDIN220 - Artificial Intelligence in Healthcare (Inactive)
BIOMEDIN222 - Cloud Computing for Biology and Healthcare
BIOMEDIN260 - Computational Methods for Biomedical Image Analysis and Interpretation
BIOMEDIN273B - Deep Learning in Genomics and Biomedicine
IMMUNOL207 - Essential Methods in Computational and Systems Immunology
E. Areas

Complete one course from one of the three areas.


Fulf ill ANY o f t he f o llo wing requirem ent s:

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

Area II: Natural Language Processing

Co m plet e at least 1 o f t he f o llo wing co urses:


CS124 - From Languages to Information
CS224N - Natural Language Processing with Deep Learning
CS224V - Conversational Virtual Assistants with Deep Learning

OR

Area III: Vision

Co m plet e at least 1 o f t he f o llo wing co urses:


CS131 - Computer Vision: Foundations and Applications
CS231N - Deep Learning for Computer Vision

F. Select one of the following:

Co m plet e at least 1 o f t he f o llo wing co urses:


CS147 - Introduction to Human-Computer Interaction Design
CS148 - Introduction to Computer Graphics and Imaging
CS154 - Introduction to the Theory of Computation
CS166 - Advanced Data Structures
CS168 - The Modern Algorithmic Toolbox
CS185 - Coding with LLM Assistants
CS230 - Deep Learning
CS248A - Computer Graphics: Rendering, Geometry, and Image Manipulation
CS353 - Seminar on Logic & Formal Philosophy
BIO183 - Theoretical Population Genetics
BIO187 - Mathematical Population Biology
BIOC241 - Biological Macromolecules
BIOMEDIN248 - Causal Inference in Clinical Trials and Observational Study (II) (Inactive)
EE263 - Introduction to Linear Dynamical Systems
EE364A - Convex Optimization I
MS&E152 - Introduction to Decision Analysis
MS&E252 - Foundations of Decision Analysis
STATS141 - Introduction to Statistics for Biology
STATS202 - Statistical Learning and Data Science
STATS203 - Regression Models and Analysis of Variance
STATS205 - Introduction to Nonparametric Statistics
STATS206 - Applied Multivariate Analysis
STATS211 - Meta-research: Appraising Research Findings, Bias, and Meta-analysis
STATS315A - Modern Applied Statistics: Learning
STATS315B - Modern Applied Statistics: Learning II
CHEMENG150 - Biochemical Engineering
APPPHYS294 - Cellular Biophysics

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.)

G. Select one of the following:


Co m plet e at least 1 o f t he f o llo wing co urses:
BIOE220 - Introduction to Imaging and Image-based Human Anatomy
BIODS295 - Generative AI in Healthcare
CHEMENG150 - Biochemical Engineering
CHEMENG174 - Environmental Microbiology I
GENE211 - Genomics
HUMBIO151R - Biology, Health and Big Data
ME281 - Biomechanics of Movement
APPPHYS294 - Cellular Biophysics
BIO81 - Introduction to Ecology
BIO82 - Genetics
BIO83 - Biochemistry & Molecular Biology
BIO84 - Physiology
BIO85 - Evolution
BIO86 - Cell Biology
BIO112 - Human Physiology
BIO214 - Advanced Cell Biology
BIO230 - Cellular and Molecular Immunology: An Introductory Course
CHEM31A - Chemical Principles I
CHEM31B - Chemical Principles II
CHEM31E - Chemical Foundations and 21st Century Problems
CHEM33 - Structure and Reactivity of Carbon-Based Molecules
CHEM141 - The Chemical Principles of Life I
CHEM143 - The Chemical Principles of Life II
CHEM171 - Foundations of Physical Chemistry
BIOC241 - Biological Macromolecules
DBIO210 - Developmental Biology
SURG101 - Regional Study of Human Structure

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

Addit io nal Co m m ent s:

Subplan: Co m put er Eng ineering


T ype
Completion Requirement

Computer Engineering Subplan


For this pathway, there is a ten-unit minimum for ENGR Fundamentals and a 29-unit minimum for Depth (for pathway and elective courses)
Fulf ill ALL o f t he f o llo wing requirem ent s:

Computer Engineering Suplan

Co m plet e ALL o f t he f o llo wing Co urses:


EE108 - Digital System Design
EE180 - Digital Systems Architecture

AND

Select two of the following:

Co m plet e at least 2 o f t he f o llo wing co urses:


EE101A - Circuits I
EE101B - Circuits II
EE102A - Signals and Systems I
EE102B - Signals and Systems II
AND

A. Digital Systems Concentrations


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:


EE109 - Digital Systems Design Lab
EE271 - Introduction to VLSI Systems

AND

Required Elective Options


Co m plet e at least 1 o f t he f o llo wing co urses:
CS112 - Operating systems kernel implementation project
CS140E - Operating systems design and implementation

*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

B. Robotics and Mechatronics Concentration


Co m plet e ALL o f t he f o llo wing Co urses:
CS205L - Continuous Mathematical Methods with an Emphasis on Machine Learning
CS223A - Introduction to Robotics
ME210 - Introduction to Mechatronics
OR CS225A - Experimental Robotics

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

*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

Required Elective Options

Co m plet e at least 1 o f t he f o llo wing co urses:


CS240 - Advanced Topics in Operating Systems
CS240LX - Advanced Systems Laboratory, Accelerated
CS241 - Embedded Systems Workshop
CS244 - Advanced Topics in Networking
CS244B - Distributed Systems
EE179 - Analog and Digital Communication Systems

To be taken for 9-11 units


Addit io nal Co m m ent s:

Subplan: Visual Co m put ing


T ype
Completion Requirement

Visual Computing Subplan


Fulf ill ALL o f t he f o llo wing requirem ent s:

Visual Computing Core:


Co m plet e at least 2 o f t he f o llo wing co urses:
CS225A - Experimental Robotics
CS248A - Computer Graphics: Rendering, Geometry, and Image Manipulation
CS248B - Fundamentals of Computer Graphics: Animation and Simulation
CS231N - Deep Learning for Computer Vision

AND

Visual Computing Depth:


Co m plet e at least 3 o f t he f o llo wing co urses:
CS205L - Continuous Mathematical Methods with an Emphasis on Machine Learning
CS223A - Introduction to Robotics
CS225A - Experimental Robotics
CS231A - Computer Vision: From 3D Perception to 3D Reconstruction and Beyond
CS231N - Deep Learning for Computer Vision
CS233 - Geometric and Topological Data Analysis
CS248A - Computer Graphics: Rendering, Geometry, and Image Manipulation
CS248B - Fundamentals of Computer Graphics: Animation and Simulation
CS348B - Computer Graphics: Image Synthesis Techniques
CS348C - Computer Graphics: Animation and Simulation
CS348E - Character Animation: Modeling, Simulation, and Control of Human Motion
CS348I - Computer Graphics in the Era of AI
CS348K - Visual Computing Systems
CS348N - Neural Models for 3D Geometry
CS448I - Computational Imaging
EE267 - Virtual Reality

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:

Subplan Elective Courses


Co m plet e at least 3 o f t he f o llo wing co urses:
CS123 - A Hands-On Introduction to Building AI-Enabled Robots
CS131 - Computer Vision: Foundations and Applications
CS148 - Introduction to Computer Graphics and Imaging
CS149 - Parallel Computing
CS221 - Artificial Intelligence: Principles and Techniques
CS224N - Natural Language Processing with Deep Learning
CS224R - Deep Reinforcement Learning
CS229 - Machine Learning
CS230 - Deep Learning
CS234 - Reinforcement Learning
CS236 - Deep Generative Models
CS236G - Generative Adversarial Networks
CS331B - Interactive Simulation for Robot Learning
CS448B - Data Visualization
CS448M - Making Making Machines for Makers (Inactive)
CS448Z - Physically Based Animation and Sound
EE261 - The Fourier Transform and Its Applications

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

OR

General CS Elective Courses


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.

Addit io nal Co m m ent s:

Subplan: Hum an-Co m put er Int eract io n


T ype
Completion Requirement

Human-Computer Interaction 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:
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:

HCI Mezzanine Required Course


Co m plet e ALL o f t he f o llo wing Co urses:
CS177 - Human Centered Product Management
CS278 - Social Computing
CS448B - Data Visualization

AND

HCI Mezzanine Required Electives


Fulf ill ANY o f t he f o llo wing requirem ent s:

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

Co m plet e at least 1 co urses in t he f o llo wing co urse set s:


CS-BS CS 377 Courses

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

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.

Addit io nal Co m m ent s:

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

B. Information Subplan Areas


Complete two courses from different areas:
Co m plet e at least 2 o f t he f o llo wing :

Area I: Information-based AI Applications

Co m plet e at least 1 o f t he f o llo wing co urses:


CS224N - Natural Language Processing with Deep Learning
CS224S - Spoken Language Processing
CS229 - Machine Learning
CS233 - Geometric and Topological Data Analysis
CS234 - Reinforcement Learning
OR

Area II: Database and Information Systems


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
CS142 - Web Applications
CS147 - Introduction to Human-Computer Interaction Design
CS151 - Logic Programming
CS245 - Principles of Data-Intensive Systems
CS246 - Mining Massive Data Sets

*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

Area III: Information Systems in Biology


Co m plet e at least 1 o f t he f o llo wing co urses:
CS235 - Computational Methods for Biomedical Image Analysis and Interpretation
CS270 - Modeling Biomedical Systems
CS274 - Representations and Algorithms for Computational Molecular Biology

OR

Area IV: Information Systems on the Web


Co m plet e at least 1 o f t he f o llo wing co urses:
CS224W - Machine Learning with Graphs

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.

Addit io nal Co m m ent s:

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.

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

*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
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:

Subplan Elective Courses


Co m plet e at least 3 o f t he f o llo wing co urses:
CS241 - Embedded Systems Workshop
CS295 - Software Engineering
CS340R - Rusty Systems
CS343D - Domain-Specific Programming Models and Compilers
CS349D - Cloud Computing Technology
CS349H - Software Techniques for Emerging Hardware Platforms
CS448I - Computational Imaging
EE108 - Digital System Design
EE382A - Parallel Processors Beyond Multicore Processing
EE382C - Interconnection Networks
EE384S - Performance Engineering of Computer Systems & Networks

OR

General CS Elective Courses

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.

Addit io nal Co m m ent s:

Subplan: T heo ry
T ype
Completion Requirement

Theory 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:
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

*Enrollment in CS369 with permission of undergraduate advisor.


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

AND

D. Subplan Elective Courses


Complete at least three additional courses selected from lists B or C, 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:

Subplan Electives

Co m plet e ANY o f t he f o llo wing Co urses:


CS254B - Computational Complexity II
CME302 - Numerical Linear Algebra
CME305 - Discrete Mathematics and Algorithms
PHIL152 - Computability and Logic

OR

CS-BS General Electives


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

Addit io nal Co m m ent s:

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

*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

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.

Co m plet e at least 1 o f t he f o llo wing co urses:


CS145 - Introduction to Big Data Systems
CS147 - Introduction to Human-Computer Interaction Design
CS148 - Introduction to Computer Graphics and Imaging
CS235 - Computational Methods for Biomedical Image Analysis and Interpretation
CS248A - Computer Graphics: Rendering, Geometry, and Image Manipulation

AND

F. Unspecialized Subplan Electives


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.

Addit io nal Co m m ent s:

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

You might also like