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 41E | Mechanics, Concepts, Calculations, and Context | |

PHYSICS 43 | Electricity and Magnetism | 4 |

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

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 |

CS 161 | Design and Analysis of Algorithms | 5 |

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

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

Senior Project | ||

Writing Intensive Senior Project | ||

Software Project | ||

User Interface Design Project | ||

Software Project | ||

Software Project Experience with Corporate Partners | ||

CS 294 | ^{6} | |

or CS 294W | 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: ^{4} | ||

Principles of Robot Autonomy II | ||

Decision Making under Uncertainty | ||

Logic and Artificial Intelligence | ||

Translational Bioinformatics | ||

Topics in Advanced Robotic Manipulation | ||

Deep Multi-task and Meta Learning | ||

Convex Optimization I | ||

or EE 364A | Convex Optimization I | |

Robot Perception and Decision-Making: Optimal and Learning-based Approaches | ||

Computational Education | ||

Computation and Cognition: The Probabilistic Approach | ||

Introduction to Linear Dynamical Systems | ||

Introduction to Statistical Signal Processing | ||

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: Ontology, Terminology, Problem Solving | ||

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 | 3-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 | 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 Automata and Complexity Theory | 3-4 |

CS 155 | Computer and Network Security | 3 |

CS 157 | Computational Logic | 3 |

or PHIL 151 | Metalogic | |

CS 166 | Data Structures | 3-4 |

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

CS 190 | Software Design Studio | 3 |

CS 195 | Supervised Undergraduate Research (4 units max) | 3-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 229T | Statistical 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 238 | Decision Making under Uncertainty | 3-4 |

CS 240 | Advanced Topics in Operating Systems | 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 255 | Introduction to Cryptography | 3 |

CS 261 | Optimization and Algorithmic Paradigms | 3 |

CS 264 | Beyond Worst-Case Analysis | 3 |

CS 265 | Randomized Algorithms and Probabilistic Analysis | 3 |

CS 269I | (Not Given This Year) | 3 |

CS 270 | Modeling Biomedical Systems: Ontology, Terminology, Problem Solving | 3 |

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 348B | Computer Graphics: Image Synthesis Techniques | 3-4 |

CS 348C | Computer Graphics: Animation and Simulation | 3 |

CS 348K | Visual Computing Systems | 3-4 |

CS 371 | Computational Biology in Four Dimensions | 3 |

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: Ontology, Terminology, Problem Solving | 3 |

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 |

CS 373 | Statistical and Machine Learning Methods for Genomics | 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 | Physical Chemistry I | 4 |

BIOC 241 | Biological Macromolecules | 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 | Physical Chemistry I | 4 |

BIOC 241 | Biological Macromolecules | 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 & EE 180 | Digital System Design and Digital Systems Architecture | 8 |

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

or CS 140E or CS 143 | ||

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

or CS 140E or CS 143 | ||

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 and Introduction to Computer Networking (CS 140E can substitute for CS 140) | ||

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

Advanced Topics in Operating Systems | ||

Embedded Systems Workshop | ||

Advanced Topics in Networking | ||

Distributed Systems | ||

Analog and Digital Communication Systems |

### Graphics Track—

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

CS 148 & CS 248 | Introduction to Computer Graphics and Imaging and Interactive Computer Graphics | 8 |

Select one of the following: ^{5} | 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 | ||

Geometric Algorithms | ||

Computer Graphics: Geometric Modeling & Processing | ||

Computer Graphics: Image Synthesis Techniques | ||

Computer Graphics: Animation and Simulation | ||

Character Animation: Modeling, Simulation, and Control of Human Motion | ||

Visual Computing Systems | ||

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: ^{4} | 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 | ||

Two-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 | 4 |

CS 247 | (Any suffix) | 4 |

Any three of the following: | ||

Web Applications | ||

Introduction to Game Design and Development | ||

Introduction to Computer Graphics and Imaging | ||

User Interface Design Project | ||

Exploring Computational Journalism | ||

Software Project Experience with Corporate Partners | ||

Social Computing | ||

Human-Computer Interaction Research | ||

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 above list, the general CS electives list, or the following: ^{4} | 3-6 | |

Any d.school class of 3 or more units | ||

Any class of 3 or more units at hci.stanford.edu under the 'courses' link | ||

Communication- | ||

Behavior and Social Media | ||

Lies, Trust, and Tech | ||

or COMM 224 | Lies, Trust, and Tech | |

The Politics of Algorithms | ||

Virtual People | ||

Media Psychology | ||

or COMM 272 | Media Psychology | |

The Politics of Algorithms | ||

Language and Technology | ||

Art Studio- | ||

Intro to Digital / Physical Design | ||

Embodied Interfaces | ||

Drawing with Code | ||

DESIGN IN PUBLIC SPACES | ||

Social Media and Performative Practices | ||

Data as Material | ||

Advanced Interaction Design | ||

Sculptural Screens / Malleable Media | ||

Emerging Technology Studio | ||

Sym Sys- | ||

Cognition in Interaction Design | ||

Psychology- | ||

Introduction to Perception | ||

Minds and Machines | ||

Introduction to Learning and Memory | ||

Introduction to Cognitive Neuroscience | ||

Introduction to Developmental Psychology | ||

Self and Society: Introduction to Social Psychology | ||

Introduction to Cultural Psychology | ||

Introduction to Personality and Affective Science | ||

INTRODUCTION TO CLINICAL PSYCHOLOGY: A NEUROSCIENCE PERSPECTIVE | ||

Introduction to Abnormal Psychology | ||

Empirical Methods- | ||

Ethnographic Methods | ||

Introduction to Applied Statistics | ||

Experimental Methods | ||

Statistical Methods for Behavioral and Social Sciences | ||

Advanced Statistical Modeling | ||

Introduction to Regression Models and Analysis of Variance | ||

Introduction to Survey Research | ||

Qualitative Research Methodology | ||

ME Design- | ||

Visual Thinking | ||

Introduction to Human Values in Design | ||

Design and Manufacturing | ||

Introduction to Mechatronics | ||

Advanced Product Design: Needfinding | ||

Learning Design + Tech- | ||

Beyond Bits and Atoms: Designing Technological Tools | ||

Technology for Learners | ||

Educating Young STEM Thinkers | ||

Innovations in Education | ||

Child Development and New Technologies | ||

Global Work | ||

Introduction to Computational Social Science | ||

Law, Bias, & Algorithms | ||

Computer Music- | ||

Fundamentals of Computer-Generated Sound | ||

Compositional Algorithms, Psychoacoustics, and Computational Music | ||

Research Seminar in Computer-Generated Music | ||

Physical Interaction Design for Music | ||

Music, Computing, Design I: The Art of Design | ||

Optional Elective ^{4} |

### 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 | ||

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

CS 345 | (Offered occasionally) | |

3) Information Systems in Biology | ||

Computational Methods for Biomedical Image Analysis and Interpretation | ||

Modeling Biomedical Systems: Ontology, Terminology, Problem Solving | ||

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 ^{4} |

### Systems Track—

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

CS 140 | Operating Systems and Systems Programming | 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 | ||

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 ^{4} | 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) | ||

CS 345 | (Advanced Topics in Database Systems - 3 or more units, any suffix. Offered occasionally.) | |

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

Topics in Computer Graphics | ||

Digital System Design | ||

Interconnection Networks | ||

Internet Routing Protocols and Standards | ||

Wireless Local and Wide Area Networks | ||

Performance Engineering of Computer Systems & Networks |

### Theory Track—

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

CS 154 | Introduction to Automata and Complexity Theory | 4 |

Select one of the following: | 3 | |

The Modern Algorithmic Toolbox | ||

Introduction to Cryptography | ||

Optimization and Algorithmic Paradigms | ||

Beyond Worst-Case Analysis | ||

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

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

CS 269I | (Not Given This Year) | |

Pseudo-Randomness | ||

The Practice of Theory Research | ||

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 ^{4} | 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 Automata and Complexity Theory | 4 |

Select one of the following: | 4 | |

Operating Systems and Systems Programming | ||

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 ^{4} |

### 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. See Handbook for Undergraduate Engineering Programs for further information.

For additional information and sample programs see the Handbook for Undergraduate Engineering Programs (UGHB)

#### Footnotes

^{1} | MATH 19, MATH 20, and MATH 21, or MATH 41 and MATH 42, 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 103 (or EE 103), CME 104. 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} | 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 166, CS 168, CS 190, CS 195 (4 units max), CS 197, CS 205L, CS 210A, CS 217, CS 223A, CS 224N, CS 224S, CS 224U, CS 224W, CS 225A, CS 227B, CS 228, CS 229, CS 229T, CS 231A, CS 231N, CS 232, CS 233, CS 234, CS 235, CS 237A, CS 237B, CS 238, CS 240, 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 264, CS 265, CS 269I (Not Given This Year), CS 269Q, CS 270, CS 272, CS 273A, CS 273B, CS 274, CS 276, CS 278, CS 279, CS 330, CS 336, CS 348B, CS 348C, CS 348E, CS 348K, CS 352, CS 353, CS 369L, CS 398, CME 108; EE 180, EE 282, EE 364A. |

^{5} | 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. |

^{6} | 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 |

^{7} | A course may only be counted towards one requirement; it may not be double-counted. All courses taken for the major must be taken for a letter grade if that option is offered by the instructor. Minimum Combined GPA for all courses in Engineering Fundamentals and Depth is 2.0. |

## 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 and Spring quarters.
- 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 Automata and Complexity Theory | 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.