### COVID-19-Related Degree Requirement Changes

For information on how Computer Science degree requirements have been affected by the pandemic, see the "**COVID-19 Policies tab**" in the "Computer Science" of this bulletin. For University-wide policy changes related to the pandemic, see the "**COVID-19 and Academic Continuity**" section of this bulletin.

See the "Department of Computer Science" section of this bulletin for additional information on the department, and its programs and faculty.

The department offers a B.S. as well as a minor in Computer Science.

## Computer Science (CS)

Completion of the undergraduate program in Computer Science leads to the conferral of the Bachelor of Science in Computer Science.

## Mission of the Undergraduate Program in Computer Science

The mission of the undergraduate program in Computer Science is 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 areas such as 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, the corporate sector, and for graduate study.

## Requirements

##### Mathematics (26 units minimum)—

Units | ||
---|---|---|

CS 103 | Mathematical Foundations of Computing | 5 |

CS 109 | Introduction to Probability for Computer Scientists | 5 |

MATH 19 | Calculus ^{1} | 3 |

MATH 20 | Calculus ^{1} | 3 |

MATH 21 | Calculus ^{1} | 4 |

Plus two electives ^{2} |

##### Science (11 units minimum)—

Units | ||
---|---|---|

PHYSICS 41 | Mechanics | 4 |

or PHYSICS 21 | Mechanics, Fluids, and Heat | |

or PHYSICS 41E | Mechanics, Concepts, Calculations, and Context | |

PHYSICS 43 | Electricity and Magnetism | 4 |

or PHYSICS 23 | Electricity, Magnetism, and Optics | |

Science elective ^{3} | 3 |

##### Technology in Society (3-5 units)—

One course; course chosen must be on the SoE Approved Courses list at https://ughb.stanford.edu/ 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)—

Units | ||
---|---|---|

CS 106B | Programming Abstractions | 5 |

or CS 106X | Programming Abstractions | |

ENGR 40M | An Intro to Making: What is EE (or ENGR 40A and ENGR 40B) | 3-5 |

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

*Students who take ENGR 40A or 40M for fewer than 5 units are required to take 1-2 additional units of ENGR Fundamentals (13 units minimum), or 1-2 additional units of Depth. | ||

##### Writing in the Major—

Units | ||
---|---|---|

Select one of the following: | ||

Computers, Ethics, and Public Policy | ||

Ethics, Public Policy, and Technological Change | ||

Writing Intensive Senior Project | ||

Software Project | ||

Software Project Experience with Corporate Partners | ||

Writing Intensive Research Project in Computer Science |

##### Computer Science Core (15 units)—

Units | ||
---|---|---|

CS 107 | Computer Organization and Systems | 5 |

or CS 107E | Computer Systems from the Ground Up | |

CS 110 | Principles of Computer Systems | 5 |

or CS 111 | Operating Systems Principles | |

CS 161 | Design and Analysis of Algorithms | 5 |

##### Senior Project (3 units)—

Units | ||
---|---|---|

Senior Project ^{7} | ||

Writing Intensive Senior Project ^{7} | ||

Software Project | ||

User Interface Design Project | ||

Software Project | ||

Software Project Experience with Corporate Partners | ||

Research Project in Software Systems and Security | ||

Writing Intensive Research Project in Computer Science |

## Computer Science Depth B.S.

Choose one of the following ten CS degree tracks (a track must consist of at least 25 units and 7 classes):

### Artificial Intelligence Track—

Units | ||
---|---|---|

CS 221 | Artificial Intelligence: Principles and Techniques | 4 |

Select two courses, each from a different area: | ||

Area I, AI Methods: | ||

Probabilistic Graphical Models: Principles and Techniques | ||

Machine Learning | ||

Reinforcement Learning | ||

Decision Making under Uncertainty | ||

Area II, Natural Language Processing: | ||

From Languages to Information | ||

Natural Language Processing with Deep Learning | ||

Spoken Language Processing | ||

Natural Language Understanding | ||

Area III, Vision: | ||

Computer Vision: Foundations and Applications | ||

Computer Vision: From 3D Reconstruction to Recognition | ||

Convolutional Neural Networks for Visual Recognition | ||

Area IV, Robotics: | ||

Introduction to Robotics | ||

Principles of Robot Autonomy I | ||

Select one additional course from the Areas above or from the following: | ||

AI Methods: | ||

Computational Logic | ||

Continuous Mathematical Methods with an Emphasis on Machine Learning | ||

Deep Learning | ||

Deep Generative Models | ||

Modern Applied Statistics: Learning | ||

Modern Applied Statistics: Data Mining | ||

Comp Bio: | ||

Computational Methods for Biomedical Image Analysis and Interpretation | ||

Computational Biology: Structure and Organization of Biomolecules and Cells | ||

Computational Biology in Four Dimensions | ||

Information and the Web: | ||

Information Retrieval and Web Search | ||

Machine Learning with Graphs | ||

Other: | ||

Logic Programming | ||

General Game Playing | ||

Interdisciplinary Topics (Offered occasionally) | ||

Robotics and Control: | ||

Advanced Robotic Manipulation | ||

Topics in Artificial Intelligence (with advisor approval) | ||

Introduction to Control Design Techniques | ||

Introduction to Stochastic Control with Applications | ||

Dynamic Programming and Stochastic Control | ||

Track Electives: at least three additional courses selected from the Areas and lists above, general CS electives, or the courses listed below. Students can replace one of these electives with a course found at https://cs.stanford.edu/explore: ^{5} | ||

Principles of Robot Autonomy II | ||

Logic and Artificial Intelligence | ||

Translational Bioinformatics | ||

Topics in Advanced Robotic Manipulation | ||

Deep Multi-task and Meta Learning | ||

CS 336 | ||

Physical Human Robot Interaction | ||

Computational Education | ||

Computation and Cognition: The Probabilistic Approach | ||

Introduction to Linear Dynamical Systems | ||

Introduction to Statistical Signal Processing | ||

Convex Optimization I | ||

Convex Optimization II | ||

Game Theory and Economic Applications | ||

Decision Analysis I: Foundations of Decision Analysis | ||

Decision Analysis II: Professional Decision Analysis | ||

Influence Diagrams and Probabilistics Networks | ||

Computability and Logic | ||

Human Neuroimaging Methods | ||

Computational Neuroimaging | ||

Neural Network Models of Cognition | ||

Introduction to Statistical Inference | ||

Data Mining and Analysis | ||

Introduction to Nonparametric Statistics |

### Biocomputation Track—

Units | ||
---|---|---|

The Mathematics, Science, and Engineering Fundamentals requirements are non-standard for this track. See Handbook for Undergraduate Engineering Programs for details. | ||

Select one of the following: | 3-4 | |

Artificial Intelligence: Principles and Techniques | ||

Probabilistic Graphical Models: Principles and Techniques | ||

Machine Learning | ||

Computer Vision: From 3D Reconstruction to Recognition | ||

Select one of the following: | ||

Computational Methods for Biomedical Image Analysis and Interpretation | ||

Modeling Biomedical Systems | ||

The Human Genome Source Code | ||

Representations and Algorithms for Computational Molecular Biology | ||

Translational Bioinformatics | ||

Computational Biology: Structure and Organization of Biomolecules and Cells | ||

One additional course from the lists above or the following: | 3-4 | |

From Languages to Information | ||

Data Management and Data Systems | ||

Introduction to Human-Computer Interaction Design | ||

Introduction to Computer Graphics and Imaging | ||

Interactive Computer Graphics | ||

One course selected from the following: | 3-4 | |

CS 108 | Object-Oriented Systems Design | 4 |

CS 124 | From Languages to Information | 3-4 |

CS 131 | Computer Vision: Foundations and Applications | 3-4 |

CS 140 | Operating Systems and Systems Programming ^{4} | 3-4 |

or CS 140E | Operating systems design and implementation | |

CS 142 | Web Applications | 3 |

CS 143 | Compilers | 3-4 |

CS 144 | Introduction to Computer Networking | 3-4 |

CS 145 | Data Management and Data Systems | 3-4 |

CS 146 | Introduction to Game Design and Development | 3 |

CS 147 | Introduction to Human-Computer Interaction Design | 3-5 |

CS 148 | Introduction to Computer Graphics and Imaging | 3-4 |

CS 149 | Parallel Computing | 3-4 |

CS 151 | Logic Programming | 3 |

CS 154 | Introduction to the Theory of Computation | 3-4 |

CS 155 | Computer and Network Security | 3 |

CS 157 | Computational Logic | 3 |

or PHIL 151 | Metalogic | |

CS 163 | The Practice of Theory Research | 3 |

CS 166 | Data Structures | 3-4 |

CS 168 | The Modern Algorithmic Toolbox | 3-4 |

CS 190 | Software Design Studio | 3-4 |

CS 195 | Supervised Undergraduate Research (4 units max) | 3-4 |

CS 197 | Computer Science Research | 4 |

CS 205L | Continuous Mathematical Methods with an Emphasis on Machine Learning | 3 |

CS 210A | Software Project Experience with Corporate Partners | 3-4 |

CS 217 | Hardware Accelerators for Machine Learning | 3-4 |

CS 221 | Artificial Intelligence: Principles and Techniques | 3-4 |

CS 223A | Introduction to Robotics | 3 |

CS 224N | Natural Language Processing with Deep Learning | 3-4 |

CS 224S | Spoken Language Processing | 2-4 |

CS 224U | Natural Language Understanding | 3-4 |

CS 224W | Machine Learning with Graphs | 3-4 |

CS 225A | Experimental Robotics | 3 |

CS 227B | General Game Playing | 3 |

CS 228 | Probabilistic Graphical Models: Principles and Techniques | 3-4 |

CS 229 | Machine Learning | 3-4 |

CS 229M | Machine Learning Theory | 3 |

CS 230 | Deep Learning | 3-4 |

CS 231A | Computer Vision: From 3D Reconstruction to Recognition | 3-4 |

CS 231N | Convolutional Neural Networks for Visual Recognition | 3-4 |

CS 232 | Digital Image Processing | 3 |

CS 233 | Geometric and Topological Data Analysis | 3 |

CS 234 | Reinforcement Learning | 3 |

CS 235 | Computational Methods for Biomedical Image Analysis and Interpretation | 3-4 |

CS 236 | Deep Generative Models | 3 |

CS 237A | Principles of Robot Autonomy I | 3-5 |

CS 237B | Principles of Robot Autonomy II | 3-4 |

CS 238 | Decision Making under Uncertainty | 3-4 |

CS 240 | Advanced Topics in Operating Systems | 3 |

CS 240LX | Advanced Systems Laboratory, Accelerated | 3 |

CS 242 | Programming Languages | 3 |

CS 243 | Program Analysis and Optimizations | 3-4 |

CS 244 | Advanced Topics in Networking | 3-4 |

CS 244B | Distributed Systems | 3 |

CS 245 | Principles of Data-Intensive Systems | 3 |

CS 246 | Mining Massive Data Sets | 3-4 |

CS 247 | (Any suffix) | 3-4 |

CS 248 | Interactive Computer Graphics | 3-4 |

CS 251 | Cryptocurrencies and blockchain technologies | 3 |

CS 252 | Analysis of Boolean Functions | 3 |

CS 254 | Computational Complexity | 3 |

CS 254B | Computational Complexity II | 3 |

CS 255 | Introduction to Cryptography | 3 |

CS 261 | Optimization and Algorithmic Paradigms | 3 |

CS 263 | Counting and Sampling | 3 |

CS 265 | Randomized Algorithms and Probabilistic Analysis | 3 |

CS 269Q | Elements of Quantum Computer Programming | 3 |

CS 269I | Incentives in Computer Science (Not Given This Year) | 3 |

CS 270 | Modeling Biomedical Systems | 3 |

CS 271 | Artificial Intelligence in Healthcare | 3-4 |

CS 272 | Introduction to Biomedical Informatics Research Methodology | 3-5 |

CS 273A | The Human Genome Source Code | 3 |

CS 273B | Deep Learning in Genomics and Biomedicine | 3 |

CS 274 | Representations and Algorithms for Computational Molecular Biology | 3-4 |

CS 275 | Translational Bioinformatics | 4 |

CS 276 | Information Retrieval and Web Search | 3 |

CS 278 | Social Computing | 3 |

CS 279 | Computational Biology: Structure and Organization of Biomolecules and Cells | 3 |

CS 330 | Deep Multi-task and Meta Learning | 3 |

CS 336 | (Robot Perception and Decision Making: not offered this year) | |

CS 348 | (any suffix) | |

CS 351 | Open Problems in Coding Theory | 3 |

CS 352 | Pseudo-Randomness | 3-4 |

CS 369L | Algorithmic Perspective on Machine Learning | 3 |

CS 371 | Computational Biology in Four Dimensions | 3 |

CS 398 | Computational Education | 4 |

CME 108 | Introduction to Scientific Computing | 3 |

EE 180 | Digital Systems Architecture | 4 |

EE 263 | Introduction to Linear Dynamical Systems | 3 |

EE 282 | Computer Systems Architecture | 3 |

EE 364A | Convex Optimization I | 3 |

BIOE 101 | Systems Biology | 3 |

MS&E 152 | Introduction to Decision Analysis | 3-4 |

MS&E 252 | Decision Analysis I: Foundations of Decision Analysis | 3-4 |

STATS 206 | Applied Multivariate Analysis | 3 |

STATS 315A | Modern Applied Statistics: Learning | 3 |

STATS 315B | Modern Applied Statistics: Data Mining | 3 |

GENE 211 | Genomics | 3 |

One course from the following: | 3-5 | |

CS 145 | Data Management and Data Systems | 3-4 |

CS 147 | Introduction to Human-Computer Interaction Design | 3-5 |

CS 221 | Artificial Intelligence: Principles and Techniques | 3-4 |

CS 228 | Probabilistic Graphical Models: Principles and Techniques | 3-4 |

CS 229 | Machine Learning | 3-4 |

CS 235 | Computational Methods for Biomedical Image Analysis and Interpretation | 3-4 |

CS 270 | Modeling Biomedical Systems | 3 |

CS 271 | Artificial Intelligence in Healthcare | 3-4 |

CS 273A | The Human Genome Source Code | 3 |

CS 273B | Deep Learning in Genomics and Biomedicine | 3 |

CS 274 | Representations and Algorithms for Computational Molecular Biology | 3-4 |

CS 275 | Translational Bioinformatics | 4 |

CS 279 | Computational Biology: Structure and Organization of Biomolecules and Cells | 3 |

CS 371 | Computational Biology in Four Dimensions | 3 |

EE 263 | Introduction to Linear Dynamical Systems | 3 |

EE 364A | Convex Optimization I | 3 |

MS&E 152 | Introduction to Decision Analysis | 3-4 |

MS&E 252 | Decision Analysis I: Foundations of Decision Analysis | 3-4 |

STATS 206 | Applied Multivariate Analysis | 3 |

STATS 315A | Modern Applied Statistics: Learning | 3 |

STATS 315B | Modern Applied Statistics: Data Mining | 3 |

GENE 211 | Genomics | 3 |

One course selected from the list above or the following: | ||

CHEMENG 150 | Biochemical Engineering | 3 |

CHEMENG 174 | Environmental Microbiology I | 3 |

APPPHYS 294 | Cellular Biophysics | 3 |

BIO 104 | Advance Molecular Biology: Epigenetics and Proteostasis | 5 |

BIO 118 | (Not Given This Year) | 4 |

BIO 214 | Advanced Cell Biology | 4 |

BIO 230 | Molecular and Cellular Immunology | 4 |

CHEM 141 | The Chemical Principles of Life I | 4 |

CHEM 171 | Foundations of Physical Chemistry | 4 |

BIOC 241 | Biological Macromolecules | 3-5 |

One course from the following: | ||

BIOE 220 | Introduction to Imaging and Image-based Human Anatomy | 3 |

CHEMENG 150 | Biochemical Engineering | 3 |

CHEMENG 174 | Environmental Microbiology I | 3 |

CS 235 | Computational Methods for Biomedical Image Analysis and Interpretation | 3-4 |

CS 274 | Representations and Algorithms for Computational Molecular Biology | 3-4 |

CS 279 | Computational Biology: Structure and Organization of Biomolecules and Cells | 3 |

CS 371 | Computational Biology in Four Dimensions | 3 |

ME 281 | Biomechanics of Movement | 3 |

APPPHYS 294 | Cellular Biophysics | 3 |

BIO 104 | Advance Molecular Biology: Epigenetics and Proteostasis | 5 |

BIO 112 | Human Physiology | 4 |

BIO 118 | (Not Given This Year) | 4 |

BIO 158 | Developmental Neurobiology | 4 |

BIO 183 | Theoretical Population Genetics | 3 |

BIO 214 | Advanced Cell Biology | 4 |

BIO 230 | Molecular and Cellular Immunology | 4 |

CHEM 171 | Foundations of Physical Chemistry | 4 |

CHEM 141 | The Chemical Principles of Life I | 4 |

BIOC 241 | Biological Macromolecules | 3-5 |

DBIO 210 | Developmental Biology | 4 |

GENE 211 | Genomics | 3 |

SURG 101 | Regional Study of Human Structure | 5 |

### Computer Engineering Track—

Units | ||
---|---|---|

For this track there is a 10 unit minimum for ENGR Fundamentals and a 29 unit minimum for Depth (for track and elective courses) | ||

EE 108 | Digital System Design | 4 |

EE 180 | Digital Systems Architecture | 4 |

Select two of the following: | 8 | |

Circuits I | ||

Circuits II | ||

Signal Processing and Linear Systems I | ||

Signal Processing and Linear Systems II | ||

Satisfy the requirements of one of the following concentrations: | ||

1) Digital Systems Concentration | ||

Operating Systems and Systems Programming ^{4} | ||

or CS 140E | Operating systems design and implementation | |

or CS 143 | Compilers | |

Digital Systems Design Lab | ||

Introduction to VLSI Systems | ||

Plus two of the following (6-8 units): | ||

Operating Systems and Systems Programming (if not counted above) ^{4} | ||

or CS 140E | Operating systems design and implementation | |

or CS 143 | Compilers | |

Introduction to Computer Networking | ||

Parallel Computing | ||

Software Design Studio | ||

Hardware Accelerators for Machine Learning | ||

Advanced Topics in Networking | ||

Digital Systems Engineering | ||

Computer Systems Architecture | ||

2) Robotics and Mechatronics Concentration | ||

Continuous Mathematical Methods with an Emphasis on Machine Learning | ||

Introduction to Robotics | ||

Introduction to Mechatronics | ||

Feedback Control Design | ||

Plus one of the following (3-4 units): | ||

Experimental Robotics | ||

Computer Vision: From 3D Reconstruction to Recognition | ||

Introduction to Control Design Techniques | ||

Linear Control Systems II | ||

3) Networking Concentration | ||

Operating Systems and Systems Programming (CS 140E can substitute for CS 140) ^{4} | ||

Introduction to Computer Networking | ||

Plus three of the following (9-11 units): | ||

Advanced Topics in Operating Systems | ||

or CS 240LX | Advanced Systems Laboratory, Accelerated | |

Embedded Systems Workshop | ||

Advanced Topics in Networking | ||

Distributed Systems | ||

Analog and Digital Communication Systems |

### Graphics Track—

Units | ||
---|---|---|

CS 148 | Introduction to Computer Graphics and Imaging | 4 |

CS 244 | Advanced Topics in Networking | 4 |

Select one of the following: ^{6} | 3-5 | |

Continuous Mathematical Methods with an Emphasis on Machine Learning | ||

Linear Algebra and Partial Differential Equations for Engineers (Note: students taking CME 104 are also required to take its prerequisite course, CME 102) | ||

Introduction to Scientific Computing | ||

Integral Calculus of Several Variables | ||

Linear Algebra and Matrix Theory | ||

Select two of the following: | 6-8 | |

Introduction to Game Design and Development | ||

Computer Vision: From 3D Reconstruction to Recognition | ||

or CS 131 | Computer Vision: Foundations and Applications | |

Geometric and Topological Data Analysis | ||

CS 348 | (Computer Graphics: any suffix) | |

Topics in Computer Graphics | ||

Track Electives: at least two additional courses from the lists above, the general CS electives list, or the courses listed below. Students can replace one of these electives with a course found at: https://cs.stanford.edu/explore: ^{5} | 6-8 | |

Intro to Digital / Physical Design | ||

Photography I: Black and White | ||

Digital Art I | ||

Numerical Linear Algebra | ||

Numerical Solution of Partial Differential Equations | ||

Introduction to Digital Image Processing | ||

Three-Dimensional Imaging | ||

Digital Signal Processing | ||

Introduction to Statistical Signal Processing | ||

Digital Image Processing | ||

Visual Thinking | ||

Introduction to Perception | ||

Image Systems Engineering |

### Human-Computer Interaction Track—

Units | ||
---|---|---|

CS 147 | Introduction to Human-Computer Interaction Design | 5 |

CS 247 | (Any suffix) | 4 |

CS 347 | Human-Computer Interaction: Foundations and Frontiers | 4 |

CS 142 | Web Applications | 3 |

Any one of the following: | ||

User Interface Design Project | ||

Exploring Computational Journalism | ||

Software Project Experience with Corporate Partners | ||

CS 247 | (Any suffix beyond the course used above) | |

Social Computing | ||

Any CS 377 'Topics in HCI' of three or more units | ||

Data Visualization | ||

Introduction to the Design of Smart Products | ||

At least two additional courses from the above areas or the general CS electives list. Students can replace one of these electives with a course found at https://cs.stanford.edu/explore | ||

Optional Elective ^{5} |

### Information Track—

Units | ||
---|---|---|

CS 124 | From Languages to Information | 4 |

CS 145 | Data Management and Data Systems | 4 |

Two courses, from different areas: | 6-9 | |

1) Information-based AI applications | ||

Natural Language Processing with Deep Learning | ||

Spoken Language Processing | ||

Machine Learning | ||

Geometric and Topological Data Analysis | ||

Reinforcement Learning | ||

2) Database and Information Systems | ||

Operating Systems and Systems Programming ^{4} | ||

or CS 140E | Operating systems design and implementation | |

Web Applications | ||

Logic Programming | ||

Principles of Data-Intensive Systems | ||

Mining Massive Data Sets | ||

Project in Mining Massive Data Sets | ||

3) Information Systems in Biology | ||

Computational Methods for Biomedical Image Analysis and Interpretation | ||

Modeling Biomedical Systems | ||

Representations and Algorithms for Computational Molecular Biology | ||

4) Information Systems on the Web | ||

Machine Learning with Graphs | ||

Information Retrieval and Web Search | ||

At least three additional courses from the above areas or the general CS electives list. Students can replace one of these electives with a course found at https://cs.stanford.edu/explore ^{5} |

### Systems Track—

Units | ||
---|---|---|

CS 140 | Operating Systems and Systems Programming ^{4} | 4 |

or CS 140E | Operating systems design and implementation | |

Select one of the following: | 3-4 | |

Compilers | ||

Digital Systems Architecture | ||

Two additional courses from the list above or the following: | 6-8 | |

Introduction to Computer Networking | ||

Data Management and Data Systems | ||

Parallel Computing | ||

Computer and Network Security | ||

Software Design Studio | ||

Hardware Accelerators for Machine Learning | ||

Advanced Topics in Operating Systems | ||

or CS 240LX | Advanced Systems Laboratory, Accelerated | |

Programming Languages | ||

Program Analysis and Optimizations | ||

Advanced Topics in Networking | ||

Principles of Data-Intensive Systems | ||

Introduction to VLSI Systems | ||

Computer Systems Architecture | ||

Track Electives: at least three additional courses selected from the list above, the general CS electives list, or the courses listed below. Students can replace one of these electives with a course found at: https://cs.stanford.edu/explore ^{5} | 9-12 | |

Embedded Systems Workshop | ||

Elements of Quantum Computer Programming | ||

Advanced Multi-Core Systems | ||

Project in Mining Massive Data Sets | ||

Topics in Computer Networks (3 or more units, any suffix) | ||

Topics in Programming Systems (with permission of undergraduate advisor) | ||

Formal Methods for Computer Systems | ||

Topics in Computer Graphics | ||

Digital System Design | ||

Interconnection Networks | ||

Internet Routing Protocols and Standards | ||

Wireless Local and Wide Area Networks | ||

Networked Wireless Systems | ||

Performance Engineering of Computer Systems & Networks |

### Theory Track—

Units | ||
---|---|---|

CS 154 | Introduction to the Theory of Computation | 4 |

Select one of the following: | 3 | |

The Modern Algorithmic Toolbox | ||

Introduction to Cryptography | ||

Optimization and Algorithmic Paradigms | ||

Randomized Algorithms and Probabilistic Analysis | ||

Geometric Algorithms | ||

Two additional courses from the list above or the following: | 6-8 | |

Compilers | ||

Logic Programming | ||

Computer and Network Security | ||

Computational Logic | ||

or PHIL 151 | Metalogic | |

The Practice of Theory Research | ||

Data Structures | ||

Continuous Mathematical Methods with an Emphasis on Machine Learning | ||

Probabilistic Graphical Models: Principles and Techniques | ||

Geometric and Topological Data Analysis | ||

Computational Methods for Biomedical Image Analysis and Interpretation | ||

Deep Generative Models | ||

Programming Languages | ||

Algebraic Error Correcting Codes | ||

Cryptocurrencies and blockchain technologies | ||

Analysis of Boolean Functions | ||

Computational Complexity | ||

CS 259 | (With permission of undergraduate advisor. Course offered occasionally.) | |

Counting and Sampling | ||

Incentives in Computer Science (Not Given This Year) | ||

Open Problems in Coding Theory | ||

Topics in Intractability: Unfulfilled Algorithmic Fantasies (Not given this year) | ||

Advanced Topics in Cryptography (Not given this year) | ||

Advanced Topics in Formal Methods (Not given this year) | ||

Topics in Programming Language Theory | ||

Topics in the Theory of Computation (with permission of undergraduate advisor) | ||

Topics in Analysis of Algorithms (with permission of undergraduate advisor) | ||

Linear Programming | ||

Track Electives: at least three additional courses from the lists above, the general CS electives list, or the courses listed below. Students can replace one of these electives with a course found at: https://cs.stanford.edu/explore ^{5} | 9-12 | |

Computational Complexity II | ||

Almost Linear Time Graph Algorithms | ||

Numerical Linear Algebra | ||

Discrete Mathematics and Algorithms | ||

Computability and Logic |

### Unspecialized Track—

Units | ||
---|---|---|

CS 154 | Introduction to the Theory of Computation | 4 |

Select one of the following: | 4 | |

Operating Systems and Systems Programming ^{4} | ||

or CS 140E | Operating systems design and implementation | |

Compilers | ||

One additional course from the list above or the following: | 3-4 | |

Introduction to Computer Networking | ||

Computer and Network Security | ||

Software Design Studio | ||

Programming Languages | ||

Advanced Topics in Networking | ||

Digital Systems Architecture | ||

Select one of the following: | 3-4 | |

Artificial Intelligence: Principles and Techniques | ||

Introduction to Robotics | ||

Probabilistic Graphical Models: Principles and Techniques | ||

Machine Learning | ||

Computer Vision: From 3D Reconstruction to Recognition | ||

Select one of the following: | 3-4 | |

Data Management and Data Systems | ||

Introduction to Human-Computer Interaction Design | ||

Introduction to Computer Graphics and Imaging | ||

Computational Methods for Biomedical Image Analysis and Interpretation | ||

Interactive Computer Graphics | ||

At least two courses from the general CS electives list ^{5} |

### Individually Designed Track—

Students may propose an individually designed track. Proposals should include a minimum of 25 units and seven courses, at least four of which must be CS courses numbered 100 or above. Proposals must be approved by the faculty advisor and Director of Undergraduate Studies. See Handbook for Undergraduate Engineering Programs for further information.

### Footnotes for Track Course Lists

^{1} | MATH 19, MATH 20, and MATH 21, or AP Calculus Credit may be used as long as at least 26 MATH units are taken. AP Calculus Credit must be approved by the School of Engineering. |

^{2} | The math electives list consists of: MATH 51, MATH 52, MATH 53, MATH 104, MATH 107, MATH 108, MATH 109, MATH 110, MATH 113; CS 157, CS 205L, PHIL 151; CME 100, CME 102, CME 104, ENGR 108. Restrictions: CS 157 and PHIL 151 may not be used in combination to satisfy the math electives requirement. Students who have taken both MATH 51 and MATH 52 may not count CME 100 as an elective. Courses counted as math electives cannot also count as CS electives, and vice versa. |

^{3} | The science elective may be any course of 3 or more units from the School of Engineering Science list (Fig. 4-2 in the UGHB), PSYCH 30, 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. AP Chemistry Credit and AP Physics Credit must be approved by the School of Engineering. |

^{4} | CS 111 and CS 140 cannot both be counted towards the BS requirements. However, it is acceptable to count both CS 111 and CS 140E towards the BS requirements. |

^{5} | General CS Electives: CS 108, CS 124, CS 131, CS 140 (or CS 140E), CS 142, CS 143, CS 144, CS 145, CS 146, CS 147, CS 148, CS 149, CS 154, CS 155, CS 157(or PHIL 151), CS 163, CS 166, CS 168, CS 190, CS 195 (4 units max), CS 197, CS 205L, CS 210A, CS 217, CS 221, CS 223A, CS 224N, CS 224S, CS 224U, CS 224W, CS 225A, CS 227B, CS 228, CS 229, CS 229M, CS 230, CS 231A, CS 231N, CS 232, CS 233, CS 234CS 234CS 234CS 234CS 234CS 234CS 234CS 234CS 234, CS 235, CS 237A, CS 237B, CS 238, CS 240, CS 240LX, CS 242, CS 243, CS 244, CS 244B, CS 245, CS 246, CS 247(any suffix), CS 248, CS 251, CS 252, CS 254, CS 254B, CS 255, CS 261, CS 263, CS 265, CS 269I, CS 269Q, CS 270, CS 271, CS 272, CS 273A, CS 273B, CS 274, CS 276, CS 278, CS 279, CS 330, CS 336, CS 348 (any suffix), CS 351, CS 352, CS 369L, CS 398, CME 108; EE 180, EE 282. |

^{6} | CS 205L is strongly recommended in this list for the Graphics track. Students taking CME 104 Linear Algebra and Partial Differential Equations for Engineers are also required to take its prerequisite, CME 102 Ordinary Differential Equations for Engineers. |

^{7} | Independent study projects (CS 191 Senior Project or CS 191W Writing Intensive Senior Project) require faculty sponsorship and must be approved by the adviser, faculty sponsor, and the CS senior project adviser (Patrick Young). A signed approval form, along with a brief description of the proposed project, should be filed the quarter before work on the project is begun. Further details can be found in the |

^{8} |

### Additional Information

## Honors Program in Computer Science

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 are eligible to apply as long as they have not already 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 adviser for the project. Thesis advisers 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 the successful candidates for honors from the pool of qualified applicants.

In order 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:

- Complete at least 9 units of CS 191 or CS 191W under the direction of their project sponsor.
- Attend a weekly honors seminar Winter Quarter.
- Complete an honors thesis deemed acceptable by the thesis adviser and at least one additional faculty member.
- Present the thesis at a public colloquium sponsored by the department.
- Maintain the 3.6 GPA required for admission to the honors program.

## Computer Science (CS) Minor

The following core courses fulfill the minor requirements. Prerequisites include the standard mathematics sequence through MATH 51 (or CME 100).

Units | ||
---|---|---|

Introductory Programming (AP Credit may be used to fulfill this requirement): | ||

CS 106B | Programming Abstractions | 5 |

or CS 106X | Programming Abstractions | |

Core: | ||

CS 103 | Mathematical Foundations of Computing | 5 |

CS 107 | Computer Organization and Systems | 5 |

or CS 107E | Computer Systems from the Ground Up | |

CS 109 | Introduction to Probability for Computer Scientists | 5 |

Electives (choose two courses from different areas): | ||

Artificial Intelligence— | ||

CS 124 | From Languages to Information | 4 |

CS 221 | Artificial Intelligence: Principles and Techniques | 4 |

CS 229 | Machine Learning | 3-4 |

Human-Computer Interaction— | ||

CS 147 | Introduction to Human-Computer Interaction Design | 4 |

Software— | ||

CS 108 | Object-Oriented Systems Design | 4 |

CS 110 | Principles of Computer Systems | 5 |

Systems— | ||

CS 140 | Operating Systems and Systems Programming | 4 |

or CS 140E | Operating systems design and implementation | |

CS 143 | Compilers | 4 |

CS 144 | Introduction to Computer Networking | 4 |

CS 145 | Data Management and Data Systems | 4 |

CS 148 | Introduction to Computer Graphics and Imaging | 4 |

Theory— | ||

CS 154 | Introduction to the Theory of Computation | 4 |

CS 157 | Computational Logic | 3 |

CS 161 | Design and Analysis of Algorithms | 5 |

*Note:* for students with no programming background and who begin with CS 106A, the minor consists of seven courses.