Catalog Navigation

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 103Mathematical Foundations of Computing5
CS 109Introduction to Probability for Computer Scientists5
MATH 19Calculus 13
MATH 20Calculus 13
MATH 21Calculus 14
Plus two electives 2
Science (11 units minimum)
Units
PHYSICS 41Mechanics4
or PHYSICS 21 Mechanics, Fluids, and Heat
or PHYSICS 41E Mechanics, Concepts, Calculations, and Context
PHYSICS 43Electricity and Magnetism4
or PHYSICS 23 Electricity, Magnetism, and Optics
Science elective 33
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 106BProgramming Abstractions5
or CS 106X Programming Abstractions
ENGR 40MAn 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 107Computer Organization and Systems5
or CS 107E Computer Systems from the Ground Up
CS 110Principles of Computer Systems5
or CS 111 Operating Systems Principles
CS 161Design and Analysis of Algorithms5
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 221Artificial Intelligence: Principles and Techniques4
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 108Object-Oriented Systems Design4
CS 124From Languages to Information3-4
CS 131Computer Vision: Foundations and Applications3-4
CS 140Operating Systems and Systems Programming 43-4
or CS 140E Operating systems design and implementation
CS 142Web Applications3
CS 143Compilers3-4
CS 144Introduction to Computer Networking3-4
CS 145Data Management and Data Systems3-4
CS 146Introduction to Game Design and Development3
CS 147Introduction to Human-Computer Interaction Design3-5
CS 148Introduction to Computer Graphics and Imaging3-4
CS 149Parallel Computing3-4
CS 151Logic Programming3
CS 154Introduction to the Theory of Computation3-4
CS 155Computer and Network Security3
CS 157Computational Logic3
or PHIL 151 Metalogic
CS 163The Practice of Theory Research3
CS 166Data Structures3-4
CS 168The Modern Algorithmic Toolbox3-4
CS 190Software Design Studio3-4
CS 195Supervised Undergraduate Research (4 units max)3-4
CS 197Computer Science Research4
CS 205LContinuous Mathematical Methods with an Emphasis on Machine Learning3
CS 210ASoftware Project Experience with Corporate Partners3-4
CS 217Hardware Accelerators for Machine Learning3-4
CS 221Artificial Intelligence: Principles and Techniques3-4
CS 223AIntroduction to Robotics3
CS 224NNatural Language Processing with Deep Learning3-4
CS 224SSpoken Language Processing2-4
CS 224UNatural Language Understanding3-4
CS 224WMachine Learning with Graphs3-4
CS 225AExperimental Robotics3
CS 227BGeneral Game Playing3
CS 228Probabilistic Graphical Models: Principles and Techniques3-4
CS 229Machine Learning3-4
CS 229MMachine Learning Theory3
CS 230Deep Learning3-4
CS 231AComputer Vision: From 3D Reconstruction to Recognition3-4
CS 231NConvolutional Neural Networks for Visual Recognition3-4
CS 232Digital Image Processing3
CS 233Geometric and Topological Data Analysis3
CS 234Reinforcement Learning3
CS 235Computational Methods for Biomedical Image Analysis and Interpretation3-4
CS 236Deep Generative Models3
CS 237APrinciples of Robot Autonomy I3-5
CS 237BPrinciples of Robot Autonomy II3-4
CS 238Decision Making under Uncertainty3-4
CS 240Advanced Topics in Operating Systems3
CS 240LXAdvanced Systems Laboratory, Accelerated3
CS 242Programming Languages3
CS 243Program Analysis and Optimizations3-4
CS 244Advanced Topics in Networking3-4
CS 244BDistributed Systems3
CS 245Principles of Data-Intensive Systems3
CS 246Mining Massive Data Sets3-4
CS 247 (Any suffix)3-4
CS 248Interactive Computer Graphics3-4
CS 251Cryptocurrencies and blockchain technologies3
CS 252Analysis of Boolean Functions3
CS 254Computational Complexity3
CS 254BComputational Complexity II3
CS 255Introduction to Cryptography3
CS 261Optimization and Algorithmic Paradigms3
CS 263Counting and Sampling3
CS 265Randomized Algorithms and Probabilistic Analysis3
CS 269QElements of Quantum Computer Programming3
CS 269IIncentives in Computer Science (Not Given This Year)3
CS 270Modeling Biomedical Systems3
CS 271Artificial Intelligence in Healthcare3-4
CS 272Introduction to Biomedical Informatics Research Methodology3-5
CS 273AThe Human Genome Source Code3
CS 273BDeep Learning in Genomics and Biomedicine3
CS 274Representations and Algorithms for Computational Molecular Biology3-4
CS 275Translational Bioinformatics4
CS 276Information Retrieval and Web Search3
CS 278Social Computing3
CS 279Computational Biology: Structure and Organization of Biomolecules and Cells3
CS 330Deep Multi-task and Meta Learning3
CS 336 (Robot Perception and Decision Making: not offered this year)
CS 348 (any suffix)
CS 351Open Problems in Coding Theory3
CS 352Pseudo-Randomness3-4
CS 369LAlgorithmic Perspective on Machine Learning3
CS 371Computational Biology in Four Dimensions3
CS 398Computational Education4
CME 108Introduction to Scientific Computing3
EE 180Digital Systems Architecture4
EE 263Introduction to Linear Dynamical Systems3
EE 282Computer Systems Architecture3
EE 364AConvex Optimization I3
BIOE 101Systems Biology3
MS&E 152Introduction to Decision Analysis3-4
MS&E 252Decision Analysis I: Foundations of Decision Analysis3-4
STATS 206Applied Multivariate Analysis3
STATS 315AModern Applied Statistics: Learning3
STATS 315BModern Applied Statistics: Data Mining3
GENE 211Genomics3
One course from the following:3-5
CS 145Data Management and Data Systems3-4
CS 147Introduction to Human-Computer Interaction Design3-5
CS 221Artificial Intelligence: Principles and Techniques3-4
CS 228Probabilistic Graphical Models: Principles and Techniques3-4
CS 229Machine Learning3-4
CS 235Computational Methods for Biomedical Image Analysis and Interpretation3-4
CS 270Modeling Biomedical Systems3
CS 271Artificial Intelligence in Healthcare3-4
CS 273AThe Human Genome Source Code3
CS 273BDeep Learning in Genomics and Biomedicine3
CS 274Representations and Algorithms for Computational Molecular Biology3-4
CS 275Translational Bioinformatics4
CS 279Computational Biology: Structure and Organization of Biomolecules and Cells3
CS 371Computational Biology in Four Dimensions3
EE 263Introduction to Linear Dynamical Systems3
EE 364AConvex Optimization I3
MS&E 152Introduction to Decision Analysis3-4
MS&E 252Decision Analysis I: Foundations of Decision Analysis3-4
STATS 206Applied Multivariate Analysis3
STATS 315AModern Applied Statistics: Learning3
STATS 315BModern Applied Statistics: Data Mining3
GENE 211Genomics3
One course selected from the list above or the following:
CHEMENG 150Biochemical Engineering3
CHEMENG 174Environmental Microbiology I3
APPPHYS 294Cellular Biophysics3
BIO 104Advance Molecular Biology: Epigenetics and Proteostasis5
BIO 118 (Not Given This Year)4
BIO 214Advanced Cell Biology4
BIO 230Molecular and Cellular Immunology4
CHEM 141The Chemical Principles of Life I4
CHEM 171Foundations of Physical Chemistry4
BIOC 241Biological Macromolecules3-5
One course from the following:
BIOE 220Introduction to Imaging and Image-based Human Anatomy3
CHEMENG 150Biochemical Engineering3
CHEMENG 174Environmental Microbiology I3
CS 235Computational Methods for Biomedical Image Analysis and Interpretation3-4
CS 274Representations and Algorithms for Computational Molecular Biology3-4
CS 279Computational Biology: Structure and Organization of Biomolecules and Cells3
CS 371Computational Biology in Four Dimensions3
ME 281Biomechanics of Movement3
APPPHYS 294Cellular Biophysics3
BIO 104Advance Molecular Biology: Epigenetics and Proteostasis5
BIO 112Human Physiology4
BIO 118 (Not Given This Year)4
BIO 158Developmental Neurobiology4
BIO 183Theoretical Population Genetics3
BIO 214Advanced Cell Biology4
BIO 230Molecular and Cellular Immunology4
CHEM 171Foundations of Physical Chemistry4
CHEM 141The Chemical Principles of Life I4
BIOC 241Biological Macromolecules3-5
DBIO 210Developmental Biology4
GENE 211Genomics3
SURG 101Regional Study of Human Structure5

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 108Digital System Design4
EE 180Digital Systems Architecture4
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
Operating systems design and implementation
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
Operating systems design and implementation
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
Advanced Systems Laboratory, Accelerated
Embedded Systems Workshop
Advanced Topics in Networking
Distributed Systems
Analog and Digital Communication Systems

Graphics Track

Units
CS 148Introduction to Computer Graphics and Imaging4
CS 244Advanced Topics in Networking4
Select one of the following: 63-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
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: 56-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 147Introduction to Human-Computer Interaction Design5
CS 247 (Any suffix)4
CS 347Human-Computer Interaction: Foundations and Frontiers4
CS 142Web Applications3
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 124From Languages to Information4
CS 145Data Management and Data Systems4
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
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 140Operating Systems and Systems Programming 44
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
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 59-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 154Introduction to the Theory of Computation4
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
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 59-12
Computational Complexity II
Almost Linear Time Graph Algorithms
Numerical Linear Algebra
Discrete Mathematics and Algorithms
Computability and Logic

Unspecialized Track

Units
CS 154Introduction to the Theory of Computation4
Select one of the following:4
Operating Systems and Systems Programming 4
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

Additional Information

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

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:

  1. Complete at least 9 units of CS 191 or CS 191W under the direction of their project sponsor.
  2. Attend a weekly honors seminar Winter Quarter.
  3. Complete an honors thesis deemed acceptable by the thesis adviser 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.

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 106BProgramming Abstractions5
or CS 106X Programming Abstractions
Core:
CS 103Mathematical Foundations of Computing5
CS 107Computer Organization and Systems5
or CS 107E Computer Systems from the Ground Up
CS 109Introduction to Probability for Computer Scientists5
Electives (choose two courses from different areas):
Artificial Intelligence—
CS 124From Languages to Information4
CS 221Artificial Intelligence: Principles and Techniques4
CS 229Machine Learning3-4
Human-Computer Interaction—
CS 147Introduction to Human-Computer Interaction Design4
Software—
CS 108Object-Oriented Systems Design4
CS 110Principles of Computer Systems5
Systems—
CS 140Operating Systems and Systems Programming4
or CS 140E Operating systems design and implementation
CS 143Compilers4
CS 144Introduction to Computer Networking4
CS 145Data Management and Data Systems4
CS 148Introduction to Computer Graphics and Imaging4
Theory—
CS 154Introduction to the Theory of Computation4
CS 157Computational Logic3
CS 161Design and Analysis of Algorithms5

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