CS-BS - Computer Science (BS)
Overview
Pro gram Overview
The undergraduate program in Computer Science aims to develop studentsʼ breadth of knowledge across the subject areas of computer science,
including their ability to apply the defining processes of computer science theory, abstraction, design, and implementation to solve problems in the
discipline. Students take a set of core courses. After learning the essential programming techniques and the mathematical foundations of computer
science, students take courses in programming techniques, automata and complexity theory, systems programming, computer architecture,
analysis of algorithms, artificial intelligence, and applications. The program prepares students for careers in government, law, and the corporate
sector and for graduate study.
G uide t o Cho o sing Int ro duct o ry Co urses
Students arriving at Stanford have widely differing backgrounds and goals, but most find that using computers effectively benefits their education. The
department offers many introductory courses to meet the needs of these students.
For students whose principal interest is exposure to the fundamental ideas behind computer science and programming, CS101 INTRO TO COMPUTING
PRINCIPLES or CS105 INTRODUCTION TO COMPUTERS are the most appropriate courses. They are intended for students in nontechnical disciplines
who expect to make some use of computers but do not expect to go on to more advanced courses. CS101 INTRO TO COMPUTING PRINCIPLES and CS105
INTRODUCTION TO COMPUTERS meet the Ways of Thinking Ways of Doing breadth requirements in Formal Reasoning and include an introduction to
programming and the use of modern Internet-based technologies. Students interested in computer use should consider CS1C INTRO COMPUTING AT
STANFORD, Introduction to Computing at Stanford.
Students who intend to pursue a serious course of study in computer science may enter the program at various levels, depending on their background.
Students with little prior experience or those who wish to take more time to study the fundamentals of programming should take CS106A
PROGRAMMING METHODOLOGY, followed by CS106B PROGRAMMING ABSTRACTIONS. Students in CS106A PROGRAMMING METHODOLOGY need not
have prior programming experience. Students with significant previous exposure to programming or those who want an intensive introduction to the
field may start directly in CS106B PROGRAMMING ABSTRACTIONS. CS106A PROGRAMMING METHODOLOGY uses Python as its programming
language; CS106B PROGRAMMING ABSTRACTIONS uses C++. No prior knowledge of these languages is assumed, and the previous programming
experience required for CS106B PROGRAMMING ABSTRACTIONS may be in any language. In all cases, students are encouraged to discuss their
background with the instructors responsible for these courses.
After the introductory sequence, Computer Science majors and those needing a significant computer science background for related engineering
majors should take CS103 MATH FOUND OF COMPUTING, CS107 COMP ORG & SYSTEMS, and CS110 PRINCIPLES OF COMP SYS or CS111 OPERATING
SYSTEMS PRINCIPLES. CS103 MATH FOUND OF COMPUTING offers an introduction to the mathematical and theoretical foundations of computer
science. CS107 COMP ORG & SYSTEMS exposes students to various programming concepts that illustrate critical strategies used in systems
development; CS110 PRINCIPLES OF COMP SYS and CS111 OPERATING SYSTEMS PRINCIPLES build on this material, focusing on the development of
larger-scale software, using systems and networking abstractions.
In sum m ary:
 For exposure:
 CS1C INTRO COMPUTING AT STANFORD                            Introduction to Computing at Stanford
 For nontechnical use:
 CS101 INTRO TO COMPUTING PRINCIPLES                         Introduction to Computing Principles
 or CS105 INTRODUCTION TO COMPUTERS                          Introduction to Computers
 For scientific use:
 CS106A PROGRAMMING METHODOLOGY                              Programming Methodology
 For a technical introduction:
 CS106A PROGRAMMING METHODOLOGY                              Programming Methodology
 For significant use:
 CS106A PROGRAMMING METHODOLOGY                              Programming Methodology
 & CS106B PROGRAMMING ABSTRACTIONS                           and Programming Abstractions
 CS103 MATH FOUND OF COMPUTING                               Mathematical Foundations of Computing
 CS107 COMP ORG & SYSTEMS                                    Computer Organization and Systems
 CS110 PRINCIPLES OF COMP SYS
                                                             Principles of Computer Systems Operating Systems Principles
 or CS111 OPERATING SYSTEMS PRINCIPLES
Overseas St udies Co urses in Co m put er Science
See the listings in ExploreCourses or the Bing Overseas Studies website for course descriptions and additional offerings. Students should consult their
department or programʼs student services office for the applicability of Overseas Studies courses to a major or minor program.
See the Handbook for Undergraduate Engineering Programs (UGHB) for additional information and sample programs,
Direct o r o f G raduat e S t udies                                   Undergraduat e/G raduat e
Jerry Cain                                                                  Undergraduate
S imple Requisit es
Co re Pro g ram Requirem ent s
T ype
Completion Requirement
 Mathematics (26 units minimum)
 Fulf ill ALL o f t he f o llo wing requirem ent s:
  Mathematics (26 units minimum)
  Co m plet e ALL o f t he f o llo wing Co urses:
         CS103 - Mathematical Foundations of Computing
          CS109 - Introduction to Probability for Computer Scientists
          MATH19 - Calculus
          MATH20 - Calculus
          MATH21 - Calculus
  MATH 19, MATH 20, and MATH 21, or AP Calculus Credit may be used as long as at least 26 MATH units are taken. The School of Engineering must
  approve AP Calculus Credit.
                                                                         AND
  Math Electives
  Co m plet e at least 2 o f t he f o llo wing co urses:
         MATH51 - Linear Algebra, Multivariable Calculus, and Modern Applications
          MATH52 - Integral Calculus of Several Variables
          MATH53 - Differential Equations with Linear Algebra, Fourier Methods, and Modern Applications
          MATH104 - Applied Matrix Theory
          MATH107 - Graph Theory
          MATH108 - Introduction to Combinatorics and Its Applications
          MATH109 - Groups and Symmetry
          MATH110 - Number Theory for Cryptography
          MATH113 - Linear Algebra and Matrix Theory
          CS157 - Computational Logic
          CS205L - Continuous Mathematical Methods with an Emphasis on Machine Learning
          CME100 - Vector Calculus for Engineers
          CME102 - Ordinary Differential Equations for Engineers
          CME104 - Linear Algebra and Partial Differential Equations for Engineers
          ENGR108 - Introduction to Matrix Methods
          PHIL151 - Metalogic
          Restrictions: CS 157 + Phil 151 may not be combined to satisfy the Math electives requirement. Students taking Math 51 & 52 may not
          count CME 100 as an elective.
          Math electives are not required for the Computational Bio Subplan.
 Science (11 units minimum)
 Co m plet e ALL o f t he f o llo wing Co urses:
        PHYSICS41 - Mechanics
         OR PHYSICS21 - Mechanics and Fluids
         OR PHYSICS61 - Mechanics and Special Relativity
         PHYSICS43 - Electricity and Magnetism
         OR PHYSICS23 - Electricity, Magnetism, and Optics
         OR PHYSICS81 - Electricity and Magnetism Using Special Relativity and Vector Calculus
         Plus one Science Elective. The Science Elective may be any course of three or more units from the School of Engineering Science list (Fig.
         4-2 in the UGHB), PSYCH30 INTRO TO PERCEPTION, or AP Chemistry Credit. Either of the PHYSICS sequences 61/63 or 21/23 may be
         substituted for 41/43 as long as at least 11 science units are taken. The School of Engineering must approve AP Chemistry and AP Physics
         credits.
         The Computational Biology Subplan requires a different set of Science courses. Please see the Computational Biology Subplan for details.
 Technology in Society (3-5 units)
 One T echno lo g y in So ciet y Co urse
The course chosen must be on the SoE Approved Courses list for the year taken; see Basic Requirements 4 in the School of Engineering section.
Engineering Fundamentals (13 units minimum; see Basic Requirement 3 in the School of Engineering section)
Co m plet e ALL o f t he f o llo wing Co urses:
        CS106B - Programming Abstractions
        ENGR40M - An Intro to Making: What is EE
        OR ENGR76 - Information Science and Engineering
Fundamentals Elective for three to five units. (May be an ENGR fundamentals or an additional CS Depth course. See Fig. 3-4 in the UGHB for the
approved ENGR fundamentals list. May not be any CS 106).
*Students who take ENGR40A INTRODUCTORY ELECTRONICS or ENGR40M AN INTRO TO MAKING: WHAT IS EE for fewer than five units must take one
to two additional units of ENGR Fundamentals (13 units minimum) or one to two additional units of Depth.
***Students without prior programming experience should first take CS106A
Computer Science Core (15 units)
Co m plet e ALL o f t he f o llo wing Co urses:
        CS107 - Computer Organization and Systems
        OR CS107E - Computer Systems from the Ground Up
        CS111 - Operating Systems Principles
        CS161 - Design and Analysis of Algorithms
Computer Science Subplan Requirements
Cho o se o ne o f t he t en CS deg ree subplans:
        Artificial Intelligence
        Individually Designed
        Computational Biology
        Computer Engineering
        Visual Computing
        Human-Computer Interaction
        Information
        Systems
        Theory
        Unspecialized
Each subplan has its own category below. A subplan must consist of at least 25 units and seven courses.
G eneral Elect ives
The following subplans include an electives requirement :
        Artificial Intelligence
        Visual Computing
        Human-Computer Interaction
        Information
        Systems
        Theory
        Unspecialized
These electives requirements can include choosing from a list of CS General Electives courses (listed immediately below):
If you see a reference to CS-BS General Electives in one of the subplans, you can refer here for that list.
Fulf ill ANY o f t he f o llo wing requirem ent s:
 CS-BS General Electives
 See individual subplans for specific direction on selecting General Elective courses.
 Co m plet e ANY o f t he f o llo wing Co urses:
         CS108 - Object-Oriented Systems Design
         CS112 - Operating systems kernel implementation project
         CS123 - A Hands-On Introduction to Building AI-Enabled Robots
         CS124 - From Languages to Information
         CS131 - Computer Vision: Foundations and Applications
         CS137A - Principles of Robot Autonomy I
         CS140E - Operating systems design and implementation
         CS142 - Web Applications
CS143 - Compilers
CS144 - Introduction to Computer Networking
CS145 - Introduction to Big Data Systems
CS147 - Introduction to Human-Computer Interaction Design
CS147L - Cross-platform Mobile App Development
CS148 - Introduction to Computer Graphics and Imaging
CS149 - Parallel Computing
CS151 - Logic Programming
CS153 - Applied Security at Scale
CS154 - Introduction to the Theory of Computation
CS155 - Computer and Network Security
CS157 - Computational Logic
OR PHIL151 - Metalogic
CS163 - The Practice of Theory Research
CS166 - Data Structures
CS168 - The Modern Algorithmic Toolbox
CS173A - Foundations of Computational Human Genomics
CS177 - Human Centered Product Management
CS190 - Software Design Studio
CS195 - Supervised Undergraduate Research
CS197 - Computer Science Research
CS197C - Computer Science Research: CURIS Internship Onramp
CS205L - Continuous Mathematical Methods with an Emphasis on Machine Learning
CS206 - Exploring Computational Journalism
CS210A - Software Project Experience with Corporate Partners
CS212 - Operating Systems and Systems Programming
CS217 - Hardware Accelerators for Machine Learning
CS221 - Artificial Intelligence: Principles and Techniques
CS223A - Introduction to Robotics
CS224G - Apps With LLMs Inside
CS224N - Natural Language Processing with Deep Learning
CS224R - Deep Reinforcement Learning
CS224S - Spoken Language Processing
CS224U - Natural Language Understanding
CS224V - Conversational Virtual Assistants with Deep Learning
CS224W - Machine Learning with Graphs
CS225A - Experimental Robotics
CS227B - General Game Playing
CS228 - Probabilistic Graphical Models: Principles and Techniques
CS229 - Machine Learning
CS229B - Machine Learning for Sequence Modeling
CS229M - Machine Learning Theory
CS229S - Systems for Machine Learning
CS230 - Deep Learning
CS231A - Computer Vision: From 3D Perception to 3D Reconstruction and Beyond
CS231N - Deep Learning for Computer Vision
CS232 - Digital Image Processing
CS233 - Geometric and Topological Data Analysis
CS234 - Reinforcement Learning
CS235 - Computational Methods for Biomedical Image Analysis and Interpretation
CS237A - Principles of Robot Autonomy I
CS237B - Principles of Robot Autonomy II
CS238 - Decision Making under Uncertainty
CS240 - Advanced Topics in Operating Systems
CS240LX - Advanced Systems Laboratory, Accelerated
CS242 - Programming Languages
CS243 - Program Analysis and Optimizations
CS244 - Advanced Topics in Networking
CS244B - Distributed Systems
CS245 - Principles of Data-Intensive Systems
CS246 - Mining Massive Data Sets
CS247 - Human-Computer Interaction Design Studio (Inactive)
CS247A - Design for Artificial Intelligence
CS247B - Design for Behavior Change
CS247G - Design for Play
CS247I - Design for Understanding
CS247L - Human Computer Interaction Technology Laboratory (Inactive)
CS247S - Service Design
CS248A - Computer Graphics: Rendering, Geometry, and Image Manipulation
CS248B - Fundamentals of Computer Graphics: Animation and Simulation
CS249I - The Modern Internet
CS250 - Algebraic Error Correcting Codes
CS251 - Cryptocurrencies and blockchain technologies
CS252 - Analysis of Boolean Functions (Inactive)
CS253 - Web Security
CS254 - Computational Complexity
CS254B - Computational Complexity II
CS255 - Introduction to Cryptography
CS256 - Algorithmic Fairness
CS257 - Introduction to Automated Reasoning
CS259Q - Quantum Computing
CS261 - Combinatorial Optimization
CS263 - Counting and Sampling
CS264 - Beyond Worst-Case Analysis
CS265 - Randomized Algorithms and Probabilistic Analysis
CS269I - Incentives in Computer Science
CS269O - Introduction to Optimization Theory
CS269Q - Elements of Quantum Computer Programming (Inactive)
CS270 - Modeling Biomedical Systems
CS271 - Artificial Intelligence in Healthcare (Inactive)
CS272 - Introduction to Biomedical Informatics Research Methodology
CS273B - Deep Learning in Genomics and Biomedicine
CS273C - Cloud Computing for Biology and Healthcare
CS274 - Representations and Algorithms for Computational Molecular Biology
CS275 - Translational Bioinformatics
CS276 - Information Retrieval and Web Search (Inactive)
CS278 - Social Computing
CS279 - Computational Biology: Structure and Organization of Biomolecules and Cells
CS281 - Ethics of Artificial Intelligence
CS323 - The AI Awakening: Implications for the Economy and Society
CS330 - Deep Multi-task and Meta Learning
CS333 - Algorithms for Interactive Robotics
CS336 - Robot Perception and Decision-Making: Optimal and Learning-based Approaches (Inactive)
CS342 - Building for Digital Health
CS348A - Computer Graphics: Geometric Modeling & Processing
CS348B - Computer Graphics: Image Synthesis Techniques
CS348C - Computer Graphics: Animation and Simulation
CS348E - Character Animation: Modeling, Simulation, and Control of Human Motion
CS348I - Computer Graphics in the Era of AI
CS348K - Visual Computing Systems
CS348N - Neural Models for 3D Geometry
CS351 - Open Problems in Coding Theory
CS355 - Advanced Topics in Cryptography
CS361 - Engineering Design Optimization
CS368 - Algorithmic Techniques for Big Data
CS377G - Designing Serious Games
CS398 - Computational Education
CS448B - Data Visualization
CME108 - Introduction to scientific computing with machine learning applications
EE108 - Digital System Design
EE180 - Digital Systems Architecture
EE267 - Virtual Reality
EE282 - Computer Systems Architecture
EE374 - Blockchain Foundations
          ENGR245 - The Lean LaunchPad: Getting Your Lean Startup Off the Ground
          MS&E234 - Data Privacy and Ethics
Addit io nal Co m m ent s:
A course may only be counted toward one requirement, not double-counted. All courses taken for the major must be taken for a letter grade if that
option is offered by the instructor, except courses taken in spring 2019-20 through summer 2020-21. Minimum Combined GPA for all courses in
Engineering Fundamentals and Depth is 2.0.
Writ ing in t he Majo r (WIM)
T ype
Completion Requirement
 Writing in the Major (WIM)
 Co m plet e at least 1 o f t he f o llo wing co urses:
         CS181W - Computers, Ethics, and Public Policy (WIM)
         CS182W - Ethics, Public Policy, and Technological Change (WIM)
         CS191W - Writing Intensive Senior Research Project
         CS194W - Software Project (WIM)
         CS210B - Software Project Experience with Corporate Partners
Addit io nal Co m m ent s:
Capst o ne Experience
T ype
Completion Requirement
 Senior Project (3 units)
 Earn at least 3 credit s f ro m t he f o llo wing :
         CS191 - Senior Project
         CS191W - Writing Intensive Senior Research Project
         CS194 - Software Project
         CS194H - User Interface Design Project
         CS194W - Software Project (WIM)
         CS210B - Software Project Experience with Corporate Partners
 Independent study projects (CS191 SENIOR PROJECT Senior Project or CS191W WRITING INTENSIVE SENIOR PROJ. Writing Intensive Senior Project)
 require faculty sponsorship and must be approved by the advisor, faculty sponsor, and the CS senior project advisor (Patrick Young). A signed
 approval form and a brief description of the proposed project should be filed the quarter before work begins. Further details can be found in
 the Handbook for Undergraduate Engineering Programs (UGHB).
Addit io nal Co m m ent s:
Ho no rs (Opt io nal)
T ype
Completion Requirement
Addit io nal Co m m ent s:
The Department of Computer Science (CS) offers an honors program for undergraduates whose academic records and personal initiative indicate
that they have the necessary skills to undertake high-quality research in computer science. Admission to the program is by application only. To
apply for the honors program, students must be majoring in Computer Science, have a grade point average (GPA) of at least 3.6 in courses that
count toward the major, and achieve senior standing (135 or more units) by the end of the academic year in which they apply. Coterminal masterʼs
students can apply if they have not received their undergraduate degree. Beyond these requirements, students who apply for the honors program
must find a Computer Science faculty member who agrees to serve as the thesis advisor for the project. Thesis advisors must be members of
Stanfordʼs Academic Council.
Students who meet the eligibility requirements and wish to be considered for the honors program must submit a written application to the CS
undergraduate program office by May 1 of the year preceding the honors work. The application must include a letter describing the research project,
a letter of endorsement from the faculty sponsor, and a transcript of courses taken at Stanford. Each year, a faculty review committee selects
successful candidates for honors from the pool of qualified applicants.
To receive departmental honors, students admitted to the honors program must, in addition to satisfying the standard requirements for the
undergraduate degree, do the following:
    1. Complete at least nine units of CS191 SENIOR PROJECT or CS191W WRITING INTENSIVE SENIOR PROJ. under the direction of their project
       sponsor
    2. Attend a weekly honors seminar during winter quarter
    3. Complete an honors thesis deemed acceptable by the thesis advisor and at least one additional faculty member
    4. Present the thesis at a public colloquium sponsored by the department
    5. Maintain the 3.6 GPA required for admission to the honors program
Subplan: Art if icial Int ellig ence
T ype
Completion Requirement
 Artificial Intelligence Subplan
 Co m plet e ALL o f t he f o llo wing Co urses:
         CS221 - Artificial Intelligence: Principles and Techniques
 Subplan Areas
 Select a total of two courses, each course should be from a different area.
 Co m plet e at least 2 o f t he f o llo wing :
  Area I: AI Methods
  Co m plet e at least 1 o f t he f o llo wing co urses:
         CS224R - Deep Reinforcement Learning
         CS228 - Probabilistic Graphical Models: Principles and Techniques
          CS229 - Machine Learning
          CS229M - Machine Learning Theory
          CS229T - Machine Learning Theory: A Modern Perspective (Inactive)
          CS234 - Reinforcement Learning
          CS238 - Decision Making under Uncertainty
                                                                          OR
  Area II: Natural Language Processing
  Co m plet e at least 1 o f t he f o llo wing co urses:
          CS124 - From Languages to Information
          CS224N - Natural Language Processing with Deep Learning
          CS224S - Spoken Language Processing
          CS224U - Natural Language Understanding
          CS224V - Conversational Virtual Assistants with Deep Learning
                                                                          OR
  Area III: Vision
  Co m plet e at least 1 o f t he f o llo wing co urses:
         CS131 - Computer Vision: Foundations and Applications
          CS231A - Computer Vision: From 3D Perception to 3D Reconstruction and Beyond
          CS231N - Deep Learning for Computer Vision
                                                                          OR
  Area IV: Robotics
  Co m plet e at least 1 o f t he f o llo wing co urses:
         CS123 - A Hands-On Introduction to Building AI-Enabled Robots
         CS137A - Principles of Robot Autonomy I
          CS223A - Introduction to Robotics
          CS237A - Principles of Robot Autonomy I
Additional Areas
Select one additional course from the areas above or one from the following:
Fulf ill ANY o f t he f o llo wing requirem ent s:
 AI Methods
 Co m plet e at least 1 o f t he f o llo wing co urses:
          CS157 - Computational Logic
          CS205L - Continuous Mathematical Methods with an Emphasis on Machine Learning
          CS230 - Deep Learning
          CS236 - Deep Generative Models
          CS257 - Introduction to Automated Reasoning
          STATS315A - Modern Applied Statistics: Learning
          STATS315B - Modern Applied Statistics: Learning II
                                                                        OR
 Comp Bio
 Co m plet e at least 1 o f t he f o llo wing co urses:
        CS235 - Computational Methods for Biomedical Image Analysis and Interpretation
        CS279 - Computational Biology: Structure and Organization of Biomolecules and Cells
          CS371 - Computational Biology in Four Dimensions
                                                                        OR
 Information and the Web
 Co m plet e at least 1 o f t he f o llo wing co urses:
          CS224W - Machine Learning with Graphs
          CS276 - Information Retrieval and Web Search (Inactive)
                                                                        OR
 Ethics
 Co m plet e ALL o f t he f o llo wing Co urses:
        CS256 - Algorithmic Fairness
                                                                        OR
 Robotics and Control
 Co m plet e at least 1 o f t he f o llo wing co urses:
        CS225A - Experimental Robotics
          CS327A - Advanced Robotic Manipulation
          CS329 - Topics in Artificial Intelligence (Inactive)
          ENGR205 - Introduction to Control Design Techniques
          MS&E251 - Introduction to Stochastic Control with Applications (Inactive)
          MS&E351 - Dynamic Programming and Stochastic Control (Inactive)
 CS329 may be taken with advisor approval.
                                                                        OR
 Systems
 Co m plet e at least 1 o f t he f o llo wing co urses:
          CS229S - Systems for Machine Learning
                                                                          OR
  Other
  Co m plet e at least 1 o f t he f o llo wing co urses:
         CS151 - Logic Programming
          CS227B - General Game Playing
 Subplan Electives
 Complete at least three additional courses selected from the lists above, the Pathway Electives below, or the CS-BS General Electives listed in the
 Core Program Requirements section.
 Students can replace one of these electives with a course found at https://cs.stanford.edu/explore.
 Fulf ill ANY o f t he f o llo wing requirem ent s:
  Subplan Elective Courses
  Co m plet e ANY o f t he f o llo wing Co urses:
          CS325B - Data for Sustainable Development
          CS326 - Topics in Advanced Robotic Manipulation
          CS329D - Machine Learning Under Distributional Shifts
          CS330 - Deep Multi-task and Meta Learning
          CS338 - Physical Human Robot Interaction
          CS342 - Building for Digital Health
          CS428 - Computation and Cognition: The Probabilistic Approach (Inactive)
          EE263 - Introduction to Linear Dynamical Systems
          EE278 - Probability and Statistical Inference
          EE364A - Convex Optimization I
          EE364B - Convex Optimization II
          MS&E252 - Foundations of Decision Analysis
          MS&E352 - Decision Analysis II: Professional Decision Analysis (Inactive)
          MS&E355 - Influence Diagrams and Probabilistics Networks
          PHIL152 - Computability and Logic
          PSYCH204A - Human Neuroimaging Methods
          PSYCH204B - Computational Neuroimaging: Data Analyses
          PSYCH209 - Neural Network Models of Cognition
          STATS200 - Introduction to Theoretical Statistics
          STATS202 - Statistical Learning and Data Science
          STATS203 - Regression Models and Analysis of Variance
          STATS205 - Introduction to Nonparametric Statistics
          STATS271 - Applied Bayesian Statistics
                                                                          OR
  CS General Elective Courses
  You may also choose from the CS-BS General Electives courses in the Core Program Requirements section.
  CS 195 can be taken for a maximum of four units.
Addit io nal Co m m ent s:
Subplan: Individually Desig ned
T ype
Completion Requirement
Addit io nal Co m m ent s:
Students may propose an Individually Designed subplan. Proposals should include a minimum of seven courses, at least four of which must be CS
courses numbered 100 or above. Proposals must be submitted & approved at least two quarters before graduation. To create an individually
designed program, students should complete an Individually Designed Track program sheet and seek approval from their undergrad advisor and
Associate Chair of Education (acting), Chris Gregg. Proposals will be evaluated for coherence and rigor. Approved program sheets should be given to
the CS undergraduate program office staff. Any subsequent changes must go through the same proposal and approval process.
Subplan: Co m put at io nal Bio lo g y
T ype
Completion Requirement
 Computational Biology Subplan
 This track's Mathematics, Science, and Engineering Fundamentals requirements are non-standard. See Handbook for Undergraduate
 Engineering Programs for details.
 Complete 12 units from either the Biology or Human Biology courses listed below.
 Fulf ill ANY o f t he f o llo wing requirem ent s:
  Biology
  Co m plet e at least 3 o f t he f o llo wing co urses:
          BIO82 - Genetics
          BIO83 - Biochemistry & Molecular Biology
          BIO85 - Evolution
          BIO86 - Cell Biology
                                                                          OR
  Human Biology
  Co m plet e ALL o f t he f o llo wing Co urses:
         HUMBIO2A - Genetics, Molecular Biology and Evolution
         HUMBIO3A - Cell and Developmental Biology
          HUMBIO4A - The Human Organism
 A. Complete the following courses:
 Co m plet e ALL o f t he f o llo wing Co urses:
         CS173A - Foundations of Computational Human Genomics
         CS221 - Artificial Intelligence: Principles and Techniques
 CS173A was previously offered as CS273A. Either CS173A or CS273A can be used to complete this requirement.
 B. Select one of the following:
 Co m plet e at least 1 o f t he f o llo wing co urses:
         CS145 - Introduction to Big Data Systems
         CS246 - Mining Massive Data Sets
 C. Select one of the following:
 Co m plet e at least 1 o f t he f o llo wing co urses:
        CS142 - Web Applications
         CS147L - Cross-platform Mobile App Development
         CS448B - Data Visualization
 D. One additional course selected from the following:
 Co m plet e at least 1 o f t he f o llo wing co urses:
        CS279 - Computational Biology: Structure and Organization of Biomolecules and Cells
        CS371 - Computational Biology in Four Dimensions
         BIOMEDIN210 - Modeling Biomedical Systems
         BIOMEDIN214 - Representations and Algorithms for Computational Molecular Biology
         BIOMEDIN215 - Data Science for Medicine
         BIOMEDIN217 - Translational Bioinformatics
         BIOMEDIN219 - Mathematical Models and Medical Decisions
         BIOMEDIN220 - Artificial Intelligence in Healthcare (Inactive)
         BIOMEDIN222 - Cloud Computing for Biology and Healthcare
         BIOMEDIN260 - Computational Methods for Biomedical Image Analysis and Interpretation
         BIOMEDIN273B - Deep Learning in Genomics and Biomedicine
         IMMUNOL207 - Essential Methods in Computational and Systems Immunology
E. Areas
Complete one course from one of the three areas.
Fulf ill ANY o f t he f o llo wing requirem ent s:
 Area I: AI Methods
 Co m plet e at least 1 o f t he f o llo wing co urses:
           CS224R - Deep Reinforcement Learning
           CS224W - Machine Learning with Graphs
           CS228 - Probabilistic Graphical Models: Principles and Techniques
           CS229 - Machine Learning
           CS229S - Systems for Machine Learning
           CS234 - Reinforcement Learning
           CS238 - Decision Making under Uncertainty
                                                                           OR
 Area II: Natural Language Processing
 Co m plet e at least 1 o f t he f o llo wing co urses:
        CS124 - From Languages to Information
           CS224N - Natural Language Processing with Deep Learning
           CS224V - Conversational Virtual Assistants with Deep Learning
                                                                           OR
 Area III: Vision
 Co m plet e at least 1 o f t he f o llo wing co urses:
        CS131 - Computer Vision: Foundations and Applications
        CS231N - Deep Learning for Computer Vision
F. Select one of the following:
Co m plet e at least 1 o f t he f o llo wing co urses:
       CS147 - Introduction to Human-Computer Interaction Design
        CS148 - Introduction to Computer Graphics and Imaging
        CS154 - Introduction to the Theory of Computation
        CS166 - Data Structures
        CS168 - The Modern Algorithmic Toolbox
        CS185 - Coding with LLM Assistants
        CS230 - Deep Learning
        CS248A - Computer Graphics: Rendering, Geometry, and Image Manipulation
        CS353 - Seminar on Logic & Formal Philosophy
        BIO183 - Theoretical Population Genetics
        BIO187 - Mathematical Population Biology
        BIOC241 - Biological Macromolecules
        BIOMEDIN248 - Causal Inference in Clinical Trials and Observational Study (II) (Inactive)
        EE263 - Introduction to Linear Dynamical Systems
        EE364A - Convex Optimization I
        MS&E152 - Introduction to Decision Analysis
        MS&E252 - Foundations of Decision Analysis
        STATS141 - Introduction to Statistics for Biology
        STATS202 - Statistical Learning and Data Science
        STATS203 - Regression Models and Analysis of Variance
        STATS205 - Introduction to Nonparametric Statistics
        STATS206 - Applied Multivariate Analysis
        STATS211 - Meta-research: Appraising Research Findings, Bias, and Meta-analysis
        STATS315A - Modern Applied Statistics: Learning
        STATS315B - Modern Applied Statistics: Learning II
        CHEMENG150 - Biochemical Engineering
         APPPHYS294 - Cellular Biophysics
 Or students may instead choose one additional class from CS142, 147L, 448B, or a course from the list number 4, or one additional course from the
 number 5 area requirement. (The course should be from a distinct area.)
 G. Select one of the following:
 Co m plet e at least 1 o f t he f o llo wing co urses:
         BIOE220 - Introduction to Imaging and Image-based Human Anatomy
         BIODS295 - Generative AI in Healthcare
         CHEMENG150 - Biochemical Engineering
         CHEMENG174 - Environmental Microbiology I
         GENE211 - Genomics
         HUMBIO151R - Biology, Health and Big Data
         ME281 - Biomechanics of Movement
         APPPHYS294 - Cellular Biophysics
         BIO81 - Introduction to Ecology
         BIO82 - Genetics
         BIO83 - Biochemistry & Molecular Biology
         BIO84 - Physiology
         BIO85 - Evolution
         BIO86 - Cell Biology
         BIO112 - Human Physiology
         BIO214 - Advanced Cell Biology
         BIO230 - Cellular and Molecular Immunology: An Introductory Course
         CHEM31A - Chemical Principles I
         CHEM31B - Chemical Principles II
         CHEM31E - Chemical Foundations and 21st Century Problems
         CHEM33 - Structure and Reactivity of Carbon-Based Molecules
         CHEM141 - The Chemical Principles of Life I
         CHEM143 - The Chemical Principles of Life II
         CHEM171 - Foundations of Physical Chemistry
         BIOC241 - Biological Macromolecules
         DBIO210 - Developmental Biology
         SURG101 - Regional Study of Human Structure
 Or student may instead choose one additional course from the list in number 4.
Addit io nal Co m m ent s:
Subplan: Co m put er Eng ineering
T ype
Completion Requirement
 Computer Engineering Subplan
 For this pathway, there is a ten-unit minimum for ENGR Fundamentals and a 29-unit minimum for Depth (for pathway and elective courses)
 Fulf ill ALL o f t he f o llo wing requirem ent s:
  Computer Engineering Suplan
  Co m plet e ALL o f t he f o llo wing Co urses:
         EE108 - Digital System Design
         EE180 - Digital Systems Architecture
                                                                       AND
  Select two of the following:
  Co m plet e at least 2 o f t he f o llo wing co urses:
         EE101A - Circuits I
          EE101B - Circuits II
          EE102A - Signals and Systems I
          EE102B - Signals and Systems II
                                                                     AND
A. Digital Systems Concentrations
Fulf ill ALL o f t he f o llo wing requirem ent s:
 Required Courses
 Co m plet e ALL o f t he f o llo wing Co urses:
        EE109 - Digital Systems Design Lab
         EE271 - Introduction to VLSI Systems
                                                                     AND
 Required Elective Options
 Co m plet e at least 1 o f t he f o llo wing co urses:
         CS112 - Operating systems kernel implementation project
         CS140E - Operating systems design and implementation
 *Students must successfully complete CS111 prior to taking CS112
 *CS111 and CS212 cannot both be counted towards the BS requirements. However, counting CS111 and CS140E toward the BS requirements
 is acceptable.
                                                                     AND
B. Robotics and Mechatronics Concentration
Co m plet e ALL o f t he f o llo wing Co urses:
        CS205L - Continuous Mathematical Methods with an Emphasis on Machine Learning
        CS223A - Introduction to Robotics
        ME210 - Introduction to Mechatronics
        OR CS225A - Experimental Robotics
                                                                     AND
C. Networking Concentration
Fulf ill ALL o f t he f o llo wing requirem ent s:
 Required Courses
 Co m plet e ALL o f t he f o llo wing Co urses:
         CS112 - Operating systems kernel implementation project
         OR CS140E - Operating systems design and implementation
         CS144 - Introduction to Computer Networking
 *Students must successfully complete CS111 prior to taking CS112.
 *CS111 and CS212 cannot both be counted toward the BS requirements. However, counting CS111 and CS140E towards the BS requirements
 is acceptable.
                                                                     AND
 Required Elective Options
 Co m plet e at least 1 o f t he f o llo wing co urses:
        CS240 - Advanced Topics in Operating Systems
         CS240LX - Advanced Systems Laboratory, Accelerated
         CS241 - Embedded Systems Workshop
         CS244 - Advanced Topics in Networking
         CS244B - Distributed Systems
         EE179 - Analog and Digital Communication Systems
 To be taken for 9-11 units
Addit io nal Co m m ent s:
Subplan: Visual Co m put ing
T ype
Completion Requirement
 Visual Computing Subplan
 Fulf ill ALL o f t he f o llo wing requirem ent s:
  Visual Computing Core:
  Co m plet e at least 2 o f t he f o llo wing co urses:
          CS225A - Experimental Robotics
          CS248A - Computer Graphics: Rendering, Geometry, and Image Manipulation
          CS248B - Fundamentals of Computer Graphics: Animation and Simulation
          CS231N - Deep Learning for Computer Vision
                                                                         AND
  Visual Computing Depth:
  Co m plet e at least 3 o f t he f o llo wing co urses:
          CS205L - Continuous Mathematical Methods with an Emphasis on Machine Learning
          CS223A - Introduction to Robotics
          CS225A - Experimental Robotics
          CS231A - Computer Vision: From 3D Perception to 3D Reconstruction and Beyond
          CS231N - Deep Learning for Computer Vision
          CS233 - Geometric and Topological Data Analysis
          CS248A - Computer Graphics: Rendering, Geometry, and Image Manipulation
          CS248B - Fundamentals of Computer Graphics: Animation and Simulation
          CS348B - Computer Graphics: Image Synthesis Techniques
          CS348C - Computer Graphics: Animation and Simulation
          CS348E - Character Animation: Modeling, Simulation, and Control of Human Motion
          CS348I - Computer Graphics in the Era of AI
          CS348K - Visual Computing Systems
          CS348N - Neural Models for 3D Geometry
          CS448I - Computational Imaging
          EE267 - Virtual Reality
                                                                         AND
  Subplan Electives
  Three Additional Courses
  Complete at least three additional courses selected from the list above, from the Subplan Electives list below, or the CS-BS General Electives
  list in the Core Program Requirements section.
  Students can replace one of these electives with a course found at https://cs.stanford.edu/explore.
  Fulf ill ANY o f t he f o llo wing requirem ent s:
    Subplan Elective Courses
    Co m plet e at least 3 o f t he f o llo wing co urses:
            CS123 - A Hands-On Introduction to Building AI-Enabled Robots
            CS131 - Computer Vision: Foundations and Applications
            CS148 - Introduction to Computer Graphics and Imaging
            CS149 - Parallel Computing
            CS221 - Artificial Intelligence: Principles and Techniques
            CS224N - Natural Language Processing with Deep Learning
            CS224R - Deep Reinforcement Learning
            CS229 - Machine Learning
            CS230 - Deep Learning
             CS234 - Reinforcement Learning
             CS236 - Deep Generative Models
             CS236G - Generative Adversarial Networks
             CS331B - Interactive Simulation for Robot Learning
             CS448B - Data Visualization
             CS448M - Making Making Machines for Makers (Inactive)
             CS448Z - Physically Based Animation and Sound
             EE261 - The Fourier Transform and Its Applications
    Students may also select any class from the Visual Computing Depth section (Note 4).
                                                                        OR
    General CS Elective Courses
    You may also choose from the list of CS-BS General Electives courses listed in the Core Program Requirements section.
    CS195 can be taken for a maximum of four units.
Addit io nal Co m m ent s:
Subplan: Hum an-Co m put er Int eract io n
T ype
Completion Requirement
 Human-Computer Interaction Subplan
 Fulf ill ALL o f t he f o llo wing requirem ent s:
  A.
  Co m plet e ALL o f t he f o llo wing Co urses:
           CS142 - Web Applications
           OR CS147L - Cross-platform Mobile App Development
           CS147 - Introduction to Human-Computer Interaction Design
           CS347 - Human-Computer Interaction: Foundations and Frontiers
                                                                        AND
  B.
  Co m plet e at least 1 co urses in t he f o llo wing co urse set s:
           CS-BS CS 247 Courses
                                                                        AND
  C.
  HCI Mezzanine (course denote upper division HCI courses that cover large bodies of knowledge in HCI dept)
  Fulf ill ALL o f t he f o llo wing requirem ent s:
    HCI Mezzanine Required Course
    Co m plet e ALL o f t he f o llo wing Co urses:
             CS177 - Human Centered Product Management
             CS278 - Social Computing
             CS448B - Data Visualization
                                                                        AND
    HCI Mezzanine Required Electives
    Fulf ill ANY o f t he f o llo wing requirem ent s:
       Electives Option 1
       Co m plet e at least 1 o f t he f o llo wing co urses:
               CS177 - Human Centered Product Management
               CS194H - User Interface Design Project
               CS206 - Exploring Computational Journalism
               CS210A - Software Project Experience with Corporate Partners
                                                                             OR
       Electives Option 2
       Co m plet e at least 1 co urses in t he f o llo wing co urse set s:
               CS-BS CS 247 Courses
       *The CS247 suffix chosen for this requirement cannot satisfy the Human-Computer Interaction Subplan (Track Req A).
                                                                             OR
       Electives Option 3
       Co m plet e at least 1 co urses in t he f o llo wing co urse set s:
              CS-BS CS 377 Courses
       *Any suffix for three or more units can be taken.
                                                                             AND
  D. Subplan Electives
  Complete at least two additional courses selected from the CS-BS General Electives list in the Core Program Requirements section.
  Students can replace one of these electives with a course found at https://cs.stanford.edu/explore.
  CS 195 can be taken for a maximum of four units.
Addit io nal Co m m ent s:
Subplan: Inf o rm at io n
T ype
Completion Requirement
 Information Subplan
 Fulf ill ALL o f t he f o llo wing requirem ent s:
  A.
  Co m plet e ALL o f t he f o llo wing Co urses:
            CS124 - From Languages to Information
            CS145 - Introduction to Big Data Systems
                                                                             AND
  B. Information Subplan Areas
  Complete two courses from different areas:
  Co m plet e at least 2 o f t he f o llo wing :
    Area I: Information-based AI Applications
    Co m plet e at least 1 o f t he f o llo wing co urses:
           CS224N - Natural Language Processing with Deep Learning
             CS224S - Spoken Language Processing
             CS229 - Machine Learning
             CS233 - Geometric and Topological Data Analysis
             CS234 - Reinforcement Learning
                                                                        OR
    Area II: Database and Information Systems
    Co m plet e at least 1 o f t he f o llo wing co urses:
            CS112 - Operating systems kernel implementation project
            OR CS140E - Operating systems design and implementation
            CS142 - Web Applications
            CS147 - Introduction to Human-Computer Interaction Design
            CS151 - Logic Programming
            CS245 - Principles of Data-Intensive Systems
            CS246 - Mining Massive Data Sets
    *Student must successfully complete CS111 prior to taking CS112.
    **CS111 and CS212 can both be counted towards the BS requirements. Students must successfully complete CS111 prior to taking CS140E.
                                                                        OR
    Area III: Information Systems in Biology
    Co m plet e at least 1 o f t he f o llo wing co urses:
            CS235 - Computational Methods for Biomedical Image Analysis and Interpretation
            CS270 - Modeling Biomedical Systems
            CS274 - Representations and Algorithms for Computational Molecular Biology
                                                                        OR
    Area IV: Information Systems on the Web
    Co m plet e at least 1 o f t he f o llo wing co urses:
            CS224W - Machine Learning with Graphs
                                                                       AND
  C. Subplan Electives
  Complete at least two additional courses selected from the CS-BS General Electives list in the Core Program Requirements section.
  Students can replace one of these electives with a course found at https://cs.stanford.edu/explore.
  CS195 can be taken for a maximum of four units.
Addit io nal Co m m ent s:
Subplan: Syst em s
T ype
Completion Requirement
 Systems Subplan
 Fulf ill ALL o f t he f o llo wing requirem ent s:
  A.
  Co m plet e ALL o f t he f o llo wing Co urses:
         CS112 - Operating systems kernel implementation project
          OR CS140E - Operating systems design and implementation
  *Student must successfully complete CS111 prior to taking CS112.
  **CS111 and CS212 can both be counted towards the BS requirements. Students must successfully complete CS111 prior to taking CS140E.
                                                                       AND
  B.
  Co m plet e at least 1 o f t he f o llo wing co urses:
          CS143 - Compilers
          EE180 - Digital Systems Architecture
                                                                        AND
  C.
  Co m plet e at least 2 o f t he f o llo wing co urses:
          CS144 - Introduction to Computer Networking
          CS145 - Introduction to Big Data Systems
          CS149 - Parallel Computing
          CS155 - Computer and Network Security
          CS190 - Software Design Studio
          CS217 - Hardware Accelerators for Machine Learning
          CS240 - Advanced Topics in Operating Systems
          OR CS240LX - Advanced Systems Laboratory, Accelerated
          CS242 - Programming Languages
          CS243 - Program Analysis and Optimizations
          CS244 - Advanced Topics in Networking
          CS245 - Principles of Data-Intensive Systems
          EE271 - Introduction to VLSI Systems
          EE282 - Computer Systems Architecture
                                                                        AND
  D. Subplan Electives
  Complete at least three additional courses selected from the list above, or from the Subplan Electives or General CS Electives listed below.
  Students can replace one of these electives with a course found at https://cs.stanford.edu/explore.
  Fulf ill ANY o f t he f o llo wing requirem ent s:
    Subplan Elective Courses
    Co m plet e at least 3 o f t he f o llo wing co urses:
            CS241 - Embedded Systems Workshop
            CS295 - Software Engineering
            CS340R - Rusty Systems
            CS343D - Domain-Specific Programming Models and Compilers
            CS349D - Cloud Computing Technology
            CS349H - Software Techniques for Emerging Hardware Platforms
            CS448I - Computational Imaging
            EE108 - Digital System Design
            EE382A - Parallel Processors Beyond Multicore Processing
            EE382C - Interconnection Networks
            EE384S - Performance Engineering of Computer Systems & Networks
                                                                         OR
    General CS Elective Courses
    You may also choose from the list of CS-BS General Electives courses listed in the Core Program Requirements section.
    CS195 can be taken for a maximum of 4 units.
Addit io nal Co m m ent s:
Subplan: T heo ry
T ype
Completion Requirement
 Theory Subplan
 Fulf ill ALL o f t he f o llo wing requirem ent s:
  A.
  Co m plet e ALL o f t he f o llo wing Co urses:
          CS154 - Introduction to the Theory of Computation
                                                                           AND
  B.
  Co m plet e at least 1 o f t he f o llo wing co urses:
          CS168 - The Modern Algorithmic Toolbox
          CS255 - Introduction to Cryptography
          CS261 - Combinatorial Optimization
          CS265 - Randomized Algorithms and Probabilistic Analysis
                                                                           AND
  C.
  Complete two additional courses from the list B, or one of the following:
  Co m plet e at least 2 o f t he f o llo wing co urses:
          CS143 - Compilers
          CS151 - Logic Programming
          CS155 - Computer and Network Security
          CS157 - Computational Logic
          OR PHIL151 - Metalogic
          CS163 - The Practice of Theory Research
          CS166 - Data Structures
          CS205L - Continuous Mathematical Methods with an Emphasis on Machine Learning
          CS228 - Probabilistic Graphical Models: Principles and Techniques
          CS233 - Geometric and Topological Data Analysis
          CS235 - Computational Methods for Biomedical Image Analysis and Interpretation
          CS236 - Deep Generative Models
          CS242 - Programming Languages
          CS250 - Algebraic Error Correcting Codes
          CS251 - Cryptocurrencies and blockchain technologies
          CS254 - Computational Complexity
          CS259Q - Quantum Computing
          CS263 - Counting and Sampling
          CS264 - Beyond Worst-Case Analysis
          CS269I - Incentives in Computer Science
          CS353 - Seminar on Logic & Formal Philosophy
          CS354 - Topics in Intractability: Unfulfilled Algorithmic Fantasies
          MS&E310 - Linear Programming
  *Enrollment in CS369 with permission of undergraduate advisor.
  **Enrollment in MS&E310 with permission of undergraduate advisor.
                                                                           AND
  D. Subplan Elective Courses
  Complete at least three additional courses selected from lists B or C, or from the Subplan Electives or General CS Electives listed below.
  Students can replace one of these electives with a course found at https://cs.stanford.edu/explore
  Fulf ill ANY o f t he f o llo wing requirem ent s:
   Subplan Electives
   Co m plet e ANY o f t he f o llo wing Co urses:
           CS254B - Computational Complexity II
           CME302 - Numerical Linear Algebra
           CME305 - Discrete Mathematics and Algorithms
           PHIL152 - Computability and Logic
                                                                         OR
    CS-BS General Electives
    You may also choose from the list of CS-BS General Electives courses listed in the Core Program Requirements section.
Addit io nal Co m m ent s:
Subplan: Unspecializ ed
T ype
Completion Requirement
 Unspecialized Subplan
 Fulf ill ALL o f t he f o llo wing requirem ent s:
  A.
  Co m plet e ALL o f t he f o llo wing Co urses:
          CS154 - Introduction to the Theory of Computation
                                                                        AND
  B.
  Co m plet e at least 1 o f t he f o llo wing co urses:
          CS112 - Operating systems kernel implementation project
          OR CS140E - Operating systems design and implementation
          CS143 - Compilers
  *Student must successfully complete CS111 prior to taking CS112.
  **CS111 and CS212 can both be counted towards the BS requirements. Students must successfully complete CS111 prior to taking CS140E.
                                                                        AND
  C.
  Complete one additional course from the list above, or one of the following:
  Co m plet e at least 1 o f t he f o llo wing co urses:
          CS144 - Introduction to Computer Networking
          CS155 - Computer and Network Security
          CS190 - Software Design Studio
          CS242 - Programming Languages
          CS244 - Advanced Topics in Networking
          EE180 - Digital Systems Architecture
                                                                        AND
  D.
  Co m plet e at least 1 o f t he f o llo wing co urses:
          CS221 - Artificial Intelligence: Principles and Techniques
          CS223A - Introduction to Robotics
          CS228 - Probabilistic Graphical Models: Principles and Techniques
          CS229 - Machine Learning
          CS231A - Computer Vision: From 3D Perception to 3D Reconstruction and Beyond
                                                                         AND
   E.
   Co m plet e at least 1 o f t he f o llo wing co urses:
          CS145 - Introduction to Big Data Systems
           CS147 - Introduction to Human-Computer Interaction Design
           CS148 - Introduction to Computer Graphics and Imaging
           CS235 - Computational Methods for Biomedical Image Analysis and Interpretation
           CS248A - Computer Graphics: Rendering, Geometry, and Image Manipulation
                                                                         AND
   F. Unspecialized Subplan Electives
   Complete at least two additional courses selected from the CS-BS General Electives list in the Core Program Requirements section.
   CS195 can be taken for a maximum of four units.
 Addit io nal Co m m ent s:
Program Policies
Ext ernal Credit Po licies
https://ughb.stanford.edu/transfers-ap-exceptions
Transfer and AP credits in Math, Science, Fundamentals, and the Technology in Society course must be confirmed for the major by the School of
Engineering Deanʼs office; see the UGHB page on petitions for more information.
Learning Outcomes
Pro gram Learning Out co mes
Learning outcomes are used in evaluating students and the departmentʼs undergraduate program. Students are expected to be able to:
        Apply the knowledge of mathematics, science, and engineering
        Design and conduct experiments, as well to analyze and interpret data
        Design a system, component, or process to meet desired needs within realistic constraints such as economic, environmental, social, political,
        ethical, health and safety, manufacturability, and sustainability
        Function on multidisciplinary teams
        Identify, formulate, and solve engineering problems
        Understand professional and ethical responsibility
        Communicate effectively
        Understand the impact of engineering solutions in a global, economic, environmental, and societal context
        Demonstrate a working knowledge of contemporary issues
        Apply the techniques, skills, and modern engineering tools necessary for engineering practice
        Transition from engineering concepts and theory to real engineering applications