Skip to content
Skip to navigation
# Explore Formal Reasoning (FR) WAYS Courses

## Ways of Thinking/Ways of Doing

## Pages

Title | Requirements | |
---|---|---|

BIODS 48N Riding the Data Wave (STATS 48N) |
WAY-AQR, WAY-FR |
Imagine collecting a bit of your saliva and sending it in to one of the personalized genomics company: for very little money you will get back information about hundreds of thousands of variable sites in your genome. Records of exposure to a variety of chemicals in the areas you have lived are only a few clicks away on the web; as are thousands of studies and informal reports on the effects of different diets, to which you can compare your own. What does this all mean for you? Never before in history humans have recorded so much information about themselves and the world that surrounds them. Nor has this data been so readily available to the lay person. Expression as "data deluge'' are used to describe such wealth as well as the loss of proper bearings that it often generates. How to summarize all this information in a useful way? How to boil down millions of numbers to just a meaningful few? How to convey the gist of the story in a picture without misleading oversimplifications? To answer these questions we need to consider the use of the data, appreciate the diversity that they represent, and understand how people instinctively interpret numbers and pictures. During each week, we will consider a different data set to be summarized with a different goal. We will review analysis of similar problems carried out in the past and explore if and how the same tools can be useful today. We will pay attention to contemporary media (newspapers, blogs, etc.) to identify settings similar to the ones we are examining and critique the displays and summaries there documented. Taking an experimental approach, we will evaluate the effectiveness of different data summaries in conveying the desired information by testing them on subsets of the enrolled students. |

BIOE 80 Introduction to Bioengineering (Engineering Living Matter) (ENGR 80) |
GER:DB-EngrAppSci, WAY-FR |
Students completing BIOE.80 should have a working understanding for how to approach the systematic engineering of living systems to benefit all people and the planet. Our main goals are (1) to help students learn ways of thinking about engineering living matter and (2) to empower students to explore the broader ramifications of engineering life. Specific concepts and skills covered include but are not limited to: capacities of natural life on Earth; scope of the existing human-directed bioeconomy; deconstructing complicated problems; reaction & diffusion systems; microbial human anatomy; conceptualizing the engineering of biology; how atoms can be organized to make molecules; how to print DNA from scratch; programming genetic sensors, logic, & actuators; biology beyond molecules (photons, electrons, etc.); what constraints limit what life can do?; what will be the major health challenges in 2030?; how does what we want shape bioengineering?; who should choose and realize various competing bioengineering futures? |

BIOE 80 Introduction to Bioengineering (Engineering Living Matter) (ENGR 80) |
GER:DB-EngrAppSci, WAY-FR |
Students completing BIOE.80 should have a working understanding for how to approach the systematic engineering of living systems to benefit all people and the planet. Our main goals are (1) to help students learn ways of thinking about engineering living matter and (2) to empower students to explore the broader ramifications of engineering life. Specific concepts and skills covered include but are not limited to: capacities of natural life on Earth; scope of the existing human-directed bioeconomy; deconstructing complicated problems; reaction & diffusion systems; microbial human anatomy; conceptualizing the engineering of biology; how atoms can be organized to make molecules; how to print DNA from scratch; programming genetic sensors, logic, & actuators; biology beyond molecules (photons, electrons, etc.); what constraints limit what life can do?; what will be the major health challenges in 2030?; how does what we want shape bioengineering?; who should choose and realize various competing bioengineering futures? |

BIOE 80 Introduction to Bioengineering (Engineering Living Matter) (ENGR 80) |
GER:DB-EngrAppSci, WAY-FR |
Students completing BIOE.80 should have a working understanding for how to approach the systematic engineering of living systems to benefit all people and the planet. Our main goals are (1) to help students learn ways of thinking about engineering living matter and (2) to empower students to explore the broader ramifications of engineering life. Specific concepts and skills covered include but are not limited to: capacities of natural life on Earth; scope of the existing human-directed bioeconomy; deconstructing complicated problems; reaction & diffusion systems; microbial human anatomy; conceptualizing the engineering of biology; how atoms can be organized to make molecules; how to print DNA from scratch; programming genetic sensors, logic, & actuators; biology beyond molecules (photons, electrons, etc.); what constraints limit what life can do?; what will be the major health challenges in 2030?; how does what we want shape bioengineering?; who should choose and realize various competing bioengineering futures? |

BIOHOPK 174H Experimental Design and Probability (BIOHOPK 274H) |
GER: DB-NatSci, GER:DB-Math, WAY-AQR, WAY-FR |
(Graduate students register for 274H.) Variability is an integral part of biology. Introduction to probability and its use in designing experiments to address biological problems. Focus is on analysis of variance, when and how to use it, why it works, and how to interpret the results. Design of complex, but practical, asymmetrical experiments and environmental impact studies, and regression and analysis of covariance. Computer-based data analysis. Prerequisite: Biology core or consent of instructor. |

BIOHOPK 174H Experimental Design and Probability (BIOHOPK 274H) |
GER: DB-NatSci, GER:DB-Math, WAY-AQR, WAY-FR |
(Graduate students register for 274H.) Variability is an integral part of biology. Introduction to probability and its use in designing experiments to address biological problems. Focus is on experimental design and the use of linear models in testing hypotheses (e.g., analysis of variance, regression). Students will use R to explore and analyze locally relevant biological datasets. No programming or statistical background is assumed. Prerequisite: consent of instructor. |

BIOHOPK 174H Experimental Design and Probability (BIOHOPK 274H) |
GER: DB-NatSci, GER:DB-Math, WAY-AQR, WAY-FR |
(Graduate students register for 274H.) Variability is an integral part of biology. Introduction to probability and its use in designing experiments to address biological problems. Focus is on experimental design and the use of linear models in testing hypotheses (e.g., analysis of variance, regression). Students will use R to explore and analyze locally relevant biological datasets. No programming or statistical background is assumed. Prerequisite: consent of instructor. |

CME 100 Vector Calculus for Engineers (ENGR 154) |
GER:DB-Math, WAY-FR |
Computation and visualization using MATLAB. Differential vector calculus: analytic geometry in space, functions of several variables, partial derivatives, gradient, unconstrained maxima and minima, Lagrange multipliers. Introduction to linear algebra: matrix operations, systems of algebraic equations, methods of solution and applications. Integral vector calculus: multiple integrals in Cartesian, cylindrical, and spherical coordinates, line integrals, scalar potential, surface integrals, Green¿s, divergence, and Stokes¿ theorems. Examples and applications drawn from various engineering fields. Prerequisites: 10 units of AP credit (Calc BC with 5, or Calc AB with 5 or placing out of the single variable math placement test: https://exploredegrees.stanford.edu/undergraduatedegreesandprograms/#aptext), or Math 19-21. |

CME 100 Vector Calculus for Engineers (ENGR 154) |
GER:DB-Math, WAY-FR |
Computation and visualization using MATLAB. Differential vector calculus: analytic geometry in space, functions of several variables, partial derivatives, gradient, unconstrained maxima and minima, Lagrange multipliers. Introduction to linear algebra: matrix operations, systems of algebraic equations, methods of solution and applications. Integral vector calculus: multiple integrals in Cartesian, cylindrical, and spherical coordinates, line integrals, scalar potential, surface integrals, Green's, divergence, and Stokes' theorems. Examples and applications drawn from various engineering fields. Prerequisites: knowledge of single-variable calculus equivalent to the content of Math 19-21 (e.g., 5 on Calc BC, 4 on Calc BC with Math 21, 5 on Calc AB with Math21). Placement diagnostic (recommendation non binding) at:(https://exploredegrees.stanford.edu/undergraduatedegreesandprograms/#aptext). |

CME 100 Vector Calculus for Engineers (ENGR 154) |
GER:DB-Math, WAY-FR |
Computation and visualization using MATLAB. Differential vector calculus: analytic geometry in space, functions of several variables, partial derivatives, gradient, unconstrained maxima and minima, Lagrange multipliers. Introduction to linear algebra: matrix operations, systems of algebraic equations, methods of solution and applications. Integral vector calculus: multiple integrals in Cartesian, cylindrical, and spherical coordinates, line integrals, scalar potential, surface integrals, Green's, divergence, and Stokes' theorems. Examples and applications drawn from various engineering fields. Prerequisites: knowledge of single-variable calculus equivalent to the content of Math 19-21 (e.g., 5 on Calc BC, 4 on Calc BC with Math 21, 5 on Calc AB with Math21). Placement diagnostic (recommendation non binding) at:(https://exploredegrees.stanford.edu/undergraduatedegreesandprograms/#aptext). |

CME 100A Vector Calculus for Engineers, ACE |
GER:DB-Math, WAY-FR |
Students attend CME100/ENGR154 lectures with additional recitation sessions; two to four hours per week, emphasizing engineering mathematical applications and collaboration methods. Enrollment by department permission only. Prerequisite: must be enrolled in the regular CME100-01 or 02. Application at: https://engineering.stanford.edu/students/programs/engineering-diversity... |

CME 100A Vector Calculus for Engineers, ACE |
GER:DB-Math, WAY-FR |
Students attend CME100/ENGR154 lectures with additional recitation sessions; two to four hours per week, emphasizing engineering mathematical applications and collaboration methods. Enrollment by department permission only. Prerequisite: must be enrolled in the regular CME100-01 or 02. Application at: https://engineering.stanford.edu/students/programs/engineering-diversity... |

CME 100A Vector Calculus for Engineers, ACE |
GER:DB-Math, WAY-FR |
Students attend CME100/ENGR154 lectures with additional recitation sessions; two to four hours per week, emphasizing engineering mathematical applications and collaboration methods. Enrollment by department permission only. Prerequisite: must be enrolled in the regular CME100-01 or 02. Application at: https://engineering.stanford.edu/students/programs/engineering-diversity... |

CME 102 Ordinary Differential Equations for Engineers (ENGR 155A) |
GER:DB-Math, WAY-FR |
Analytical and numerical methods for solving ordinary differential equations arising in engineering applications: Solution of initial and boundary value problems, series solutions, Laplace transforms, and nonlinear equations; numerical methods for solving ordinary differential equations, accuracy of numerical methods, linear stability theory, finite differences. Introduction to MATLAB programming as a basic tool kit for computations. Problems from various engineering fields. Prerequisite: 10 units of AP credit (Calc BC with 5, or Calc AB with 5 or placing out of the single variable math placement test: https://exploredegrees.stanford.edu/undergraduatedegreesandprograms/#aptext), or MATH 19-21. Recommended: CME100. |

CME 102 Ordinary Differential Equations for Engineers (ENGR 155A) |
GER:DB-Math, WAY-FR |
Analytical and numerical methods for solving ordinary differential equations arising in engineering applications: Solution of initial and boundary value problems, series solutions, Laplace transforms, and nonlinear equations; numerical methods for solving ordinary differential equations, accuracy of numerical methods, linear stability theory, finite differences. Introduction to MATLAB programming as a basic tool kit for computations. Problems from various engineering fields.Prerequisites: knowledge of single-variable calculus equivalent to the content of Math 19-21 (e.g., 5 on Calc BC, 4 on Calc BC with Math 21, 5 on Calc AB with Math21). Placement diagnostic (recommendation non binding) at:(https://exploredegrees.stanford.edu/undergraduatedegreesandprograms/#aptext). Recommended: CME100. |

CME 102 Ordinary Differential Equations for Engineers (ENGR 155A) |
GER:DB-Math, WAY-FR |
Analytical and numerical methods for solving ordinary differential equations arising in engineering applications: Solution of initial and boundary value problems, series solutions, Laplace transforms, and nonlinear equations; numerical methods for solving ordinary differential equations, accuracy of numerical methods, linear stability theory, finite differences. Introduction to MATLAB programming as a basic tool kit for computations. Problems from various engineering fields.Prerequisites: knowledge of single-variable calculus equivalent to the content of Math 19-21 (e.g., 5 on Calc BC, 4 on Calc BC with Math 21, 5 on Calc AB with Math21). Placement diagnostic (recommendation non binding) at:(https://exploredegrees.stanford.edu/undergraduatedegreesandprograms/#aptext). Recommended: CME100. |

CME 102A Ordinary Differential Equations for Engineers, ACE |
GER:DB-Math, WAY-FR |
Students attend CME102/ENGR155A lectures with additional recitation sessions; two to four hours per week, emphasizing engineering mathematical applications and collaboration methods. Prerequisite: students must be enrolled in the regular section (CME102) prior to submitting application at:nhttps://engineering.stanford.edu/students/programs/engineering-diversity... |

CME 102A Ordinary Differential Equations for Engineers, ACE |
GER:DB-Math, WAY-FR |
Students attend CME102/ENGR155A lectures with additional recitation sessions; two to four hours per week, emphasizing engineering mathematical applications and collaboration methods. Prerequisite: students must be enrolled in the regular section (CME102) prior to submitting application at:nhttps://engineering.stanford.edu/students/programs/engineering-diversity... |

CME 102A Ordinary Differential Equations for Engineers, ACE |
GER:DB-Math, WAY-FR |
Students attend CME102/ENGR155A lectures with additional recitation sessions; two to four hours per week, emphasizing engineering mathematical applications and collaboration methods. Prerequisite: students must be enrolled in the regular section (CME102) prior to submitting application at:nhttps://engineering.stanford.edu/students/programs/engineering-diversity... |

CME 103 Introduction to Matrix Methods (EE 103) |
GER:DB-Math, WAY-AQR, WAY-FR |
Introduction to applied linear algebra with emphasis on applications. Vectors, norm, and angle; linear independence and orthonormal sets; applications to document analysis. Clustering and the k-means algorithm. Matrices, left and right inverses, QR factorization. Least-squares and model fitting, regularization and cross-validation. Constrained and nonlinear least-squares. Applications include time-series prediction, tomography, optimal control, and portfolio optimization. Undergraduate students should enroll for 5 units, and graduate students should enroll for 3 units. Prerequisites:MATH 51 or CME 100, and basic knowledge of computing (CS 106A is more than enough, and can be taken concurrently). EE103/CME103 and Math 104 cover complementary topics in applied linear algebra. The focus of EE103 is on a few linear algebra concepts, and many applications; the focus of Math 104 is on algorithms and concepts. |

CME 103 Introduction to Matrix Methods (EE 103) |
GER:DB-Math, WAY-AQR, WAY-FR |
Introduction to applied linear algebra with emphasis on applications. Vectors, norm, and angle; linear independence and orthonormal sets; applications to document analysis. Clustering and the k-means algorithm. Matrices, left and right inverses, QR factorization. Least-squares and model fitting, regularization and cross-validation. Constrained and nonlinear least-squares. Applications include time-series prediction, tomography, optimal control, and portfolio optimization. Undergraduate students should enroll for 5 units, and graduate students should enroll for 3 units. Prerequisites:MATH 51 or CME 100, and basic knowledge of computing (CS 106A is more than enough, and can be taken concurrently). EE103/CME103 and Math 104 cover complementary topics in applied linear algebra. The focus of EE103 is on a few linear algebra concepts, and many applications; the focus of Math 104 is on algorithms and concepts. |

CME 103 Introduction to Matrix Methods (EE 103) |
GER:DB-Math, WAY-AQR, WAY-FR |
Introduction to applied linear algebra with emphasis on applications. Vectors, norm, and angle; linear independence and orthonormal sets; applications to document analysis. Clustering and the k-means algorithm. Matrices, left and right inverses, QR factorization. Least-squares and model fitting, regularization and cross-validation. Constrained and nonlinear least-squares. Applications include time-series prediction, tomography, optimal control, and portfolio optimization. Undergraduate students should enroll for 5 units, and graduate students should enroll for 3 units. Prerequisites:MATH 51 or CME 100, and basic knowledge of computing (CS 106A is more than enough, and can be taken concurrently). EE103/CME103 and Math 104 cover complementary topics in applied linear algebra. The focus of EE103 is on a few linear algebra concepts, and many applications; the focus of Math 104 is on algorithms and concepts. |

CME 104 Linear Algebra and Partial Differential Equations for Engineers (ENGR 155B) |
GER:DB-Math, WAY-FR |
Linear algebra: matrix operations, systems of algebraic equations, Gaussian elimination, undetermined and overdetermined systems, coupled systems of ordinary differential equations, eigensystem analysis, normal modes. Fourier series with applications, partial differential equations arising in science and engineering, analytical solutions of partial differential equations. Numerical methods for solution of partial differential equations: iterative techniques, stability and convergence, time advancement, implicit methods, von Neumann stability analysis. Examples and applications from various engineering fields. Prerequisite: CME 102/ENGR 155A. |

CME 104 Linear Algebra and Partial Differential Equations for Engineers (ENGR 155B) |
GER:DB-Math, WAY-FR |
Linear algebra: matrix operations, systems of algebraic equations, Gaussian elimination, undetermined and overdetermined systems, coupled systems of ordinary differential equations, eigensystem analysis, normal modes. Fourier series with applications, partial differential equations arising in science and engineering, analytical solutions of partial differential equations. Numerical methods for solution of partial differential equations: iterative techniques, stability and convergence, time advancement, implicit methods, von Neumann stability analysis. Examples and applications from various engineering fields. Prerequisite: CME 102/ENGR 155A. |

CME 104 Linear Algebra and Partial Differential Equations for Engineers (ENGR 155B) |
GER:DB-Math, WAY-FR |
Linear algebra: matrix operations, systems of algebraic equations, Gaussian elimination, undetermined and overdetermined systems, coupled systems of ordinary differential equations, eigensystem analysis, normal modes. Fourier series with applications, partial differential equations arising in science and engineering, analytical solutions of partial differential equations. Numerical methods for solution of partial differential equations: iterative techniques, stability and convergence, time advancement, implicit methods, von Neumann stability analysis. Examples and applications from various engineering fields. Prerequisite: CME 102/ENGR 155A. |

CME 104A Linear Algebra and Partial Differential Equations for Engineers, ACE |
GER:DB-Math, WAY-FR |
Students attend CME104/ENGR155B lectures with additional recitation sessions; two to four hours per week, emphasizing engineering mathematical applications and collaboration methods. Prerequisite: students must be enrolled in the regular section (CME104) prior to submitting application at: https://engineering.stanford.edu/students/programs/engineering-diversity... |

CME 104A Linear Algebra and Partial Differential Equations for Engineers, ACE |
GER:DB-Math, WAY-FR |
Students attend CME104/ENGR155B lectures with additional recitation sessions; two to four hours per week, emphasizing engineering mathematical applications and collaboration methods. Prerequisite: students must be enrolled in the regular section (CME104) prior to submitting application at: https://engineering.stanford.edu/students/programs/engineering-diversity... |

CME 106 Introduction to Probability and Statistics for Engineers (ENGR 155C) |
GER:DB-Math, WAY-AQR, WAY-FR |
Probability: random variables, independence, and conditional probability; discrete and continuous distributions, moments, distributions of several random variables. Topics in mathematical statistics: random sampling, point estimation, confidence intervals, hypothesis testing, non-parametric tests, regression and correlation analyses; applications in engineering, industrial manufacturing, medicine, biology, and other fields. Prerequisite: CME 100/ENGR154 or MATH 51 or 52. |

CME 106 Introduction to Probability and Statistics for Engineers (ENGR 155C) |
GER:DB-Math, WAY-AQR, WAY-FR |
Probability: random variables, independence, and conditional probability; discrete and continuous distributions, moments, distributions of several random variables. Topics in mathematical statistics: random sampling, point estimation, confidence intervals, hypothesis testing, non-parametric tests, regression and correlation analyses; applications in engineering, industrial manufacturing, medicine, biology, and other fields. Prerequisite: CME 100/ENGR154 or MATH 51 or 52. |

CME 106 Introduction to Probability and Statistics for Engineers (ENGR 155C) |
GER:DB-Math, WAY-AQR, WAY-FR |
Probability: random variables, independence, and conditional probability; discrete and continuous distributions, moments, distributions of several random variables. Topics in mathematical statistics: random sampling, point estimation, confidence intervals, hypothesis testing, non-parametric tests, regression and correlation analyses; applications in engineering, industrial manufacturing, medicine, biology, and other fields. Prerequisite: CME 100/ENGR154 or MATH 51 or 52. |

CME 108 Introduction to Scientific Computing (MATH 114) |
GER:DB-EngrAppSci, WAY-AQR, WAY-FR |
Introduction to Scientific Computing Numerical computation for mathematical, computational, physical sciences and engineering: error analysis, floating-point arithmetic, nonlinear equations, numerical solution of systems of algebraic equations, banded matrices, least squares, unconstrained optimization, polynomial interpolation, numerical differentiation and integration, numerical solution of ordinary differential equations, truncation error, numerical stability for time dependent problems and stiffness. Implementation of numerical methods in MATLAB programming assignments. Prerequisites: MATH 51, 52, 53; prior programming experience (MATLAB or other language at level of CS 106A or higher). |

CME 108 Introduction to Scientific Computing (MATH 114) |
GER:DB-EngrAppSci, WAY-AQR, WAY-FR |
Introduction to Scientific Computing Numerical computation for mathematical, computational, physical sciences and engineering: error analysis, floating-point arithmetic, nonlinear equations, numerical solution of systems of algebraic equations, banded matrices, least squares, unconstrained optimization, polynomial interpolation, numerical differentiation and integration, numerical solution of ordinary differential equations, truncation error, numerical stability for time dependent problems and stiffness. Implementation of numerical methods in MATLAB programming assignments. Prerequisites: MATH 51, 52, 53; prior programming experience (MATLAB or other language at level of CS 106A or higher). |

CME 108 Introduction to Scientific Computing (MATH 114) |
GER:DB-EngrAppSci, WAY-AQR, WAY-FR |
Introduction to Scientific Computing Numerical computation for mathematical, computational, physical sciences and engineering: error analysis, floating-point arithmetic, nonlinear equations, numerical solution of systems of algebraic equations, banded matrices, least squares, unconstrained optimization, polynomial interpolation, numerical differentiation and integration, numerical solution of ordinary differential equations, truncation error, numerical stability for time dependent problems and stiffness. Implementation of numerical methods in MATLAB programming assignments. Prerequisites: MATH 51, 52, 53; prior programming experience (MATLAB or other language at level of CS 106A or higher). |

CS 101 Introduction to Computing Principles |
GER:DB-EngrAppSci, WAY-FR |
Introduces the essential ideas of computing: data representation, algorithms, programming "code", computer hardware, networking, security, and social issues. Students learn how computers work and what they can do through hands-on exercises. In particular, students will see the capabilities and weaknesses of computer systems so they are not mysterious or intimidating. Course features many small programming exercises, although no prior programming experience is assumed or required. CS101 is not a complete programming course such as CS106A. CS101 is effectively an alternative to CS105. A laptop computer is recommended for the in-class exercises. |

CS 101 Introduction to Computing Principles |
GER:DB-EngrAppSci, WAY-FR |
Introduces the essential ideas of computing: data representation, algorithms, programming "code", computer hardware, networking, security, and social issues. Students learn how computers work and what they can do through hands-on exercises. In particular, students will see the capabilities and weaknesses of computer systems so they are not mysterious or intimidating. Course features many small programming exercises, although no prior programming experience is assumed or required. CS101 is not a complete programming course such as CS106A. CS101 is effectively an alternative to CS105. A laptop computer is recommended for the in-class exercises. |

CS 103 Mathematical Foundations of Computing |
GER:DB-Math, WAY-FR |
Mathematical foundations required for computer science, including propositional predicate logic, induction, sets, functions, and relations. Formal language theory, including regular expressions, grammars, finite automata, Turing machines, and NP-completeness. Mathematical rigor, proof techniques, and applications. Prerequisite: CS106B or equivalent. CS106B may be taken concurrently with CS103. |

CS 103 Mathematical Foundations of Computing |
GER:DB-Math, WAY-FR |
What are the theoretical limits of computing power? What problems can be solved with computers? Which ones cannot? And how can we reason about the answers to these questions with mathematical certainty? This course explores the answers to these questions and serves as an introduction to discrete mathematics, computability theory, and complexity theory. At the completion of the course, students will feel comfortable writing mathematical proofs, reasoning about discrete structures, reading and writing statements in first-order logic, and working with mathematical models of computing devices. Throughout the course, students will gain exposure to some of the most exciting mathematical and philosophical ideas of the late nineteenth and twentieth centuries. Specific topics covered include formal mathematical proofwriting, propositional and first-order logic, set theory, binary relations, functions (injections, surjections, and bijections), cardinality, basic graph theory, the pigeonhole principle, mathematical induction, finite automata, regular expressions, the Myhill-Nerode theorem, context-free grammars, Turing machines, decidable and recognizable languages, self-reference and undecidability, verifiers, and the P versus NP question. Students with significant proofwriting experience are encouraged to instead take CS154. Students interested in extra practice and support with the course are encouraged to concurrently enroll in CS103A. Prerequisite: CS106B or equivalent. CS106B may be taken concurrently with CS103. |

CS 103 Mathematical Foundations of Computing |
GER:DB-Math, WAY-FR |
What are the theoretical limits of computing power? What problems can be solved with computers? Which ones cannot? And how can we reason about the answers to these questions with mathematical certainty? This course explores the answers to these questions and serves as an introduction to discrete mathematics, computability theory, and complexity theory. At the completion of the course, students will feel comfortable writing mathematical proofs, reasoning about discrete structures, reading and writing statements in first-order logic, and working with mathematical models of computing devices. Throughout the course, students will gain exposure to some of the most exciting mathematical and philosophical ideas of the late nineteenth and twentieth centuries. Specific topics covered include formal mathematical proofwriting, propositional and first-order logic, set theory, binary relations, functions (injections, surjections, and bijections), cardinality, basic graph theory, the pigeonhole principle, mathematical induction, finite automata, regular expressions, the Myhill-Nerode theorem, context-free grammars, Turing machines, decidable and recognizable languages, self-reference and undecidability, verifiers, and the P versus NP question. Students with significant proofwriting experience are encouraged to instead take CS154. Students interested in extra practice and support with the course are encouraged to concurrently enroll in CS103A. Prerequisite: CS106B or equivalent. CS106B may be taken concurrently with CS103. |

CS 105 Introduction to Computers |
GER:DB-EngrAppSci, WAY-FR |
For non-technical majors. What computers are and how they work. Practical experience in programming. Construction of computer programs and basic design techniques. A survey of Internet technology and the basics of computer hardware. Students in technical fields and students looking to acquire programming skills should take 106A or 106X. Students with prior computer science experience at the level of 106 or above require consent of instructor. Prerequisite: minimal math skills. |

CS 105 Introduction to Computers |
GER:DB-EngrAppSci, WAY-FR |
For non-technical majors. What computers are and how they work. Practical experience in programming. Construction of computer programs and basic design techniques. A survey of Internet technology and the basics of computer hardware. Students in technical fields and students looking to acquire programming skills should take 106A or 106X. Students with prior computer science experience at the level of 106 or above require consent of instructor. Prerequisite: minimal math skills. |

CS 105 Introduction to Computers |
GER:DB-EngrAppSci, WAY-FR |
For non-technical majors. What computers are and how they work. Practical experience in programming. Construction of computer programs and basic design techniques. A survey of Internet technology and the basics of computer hardware. Students in technical fields and students looking to acquire programming skills should take 106A or 106X. Students with prior computer science experience at the level of 106 or above require consent of instructor. Prerequisite: minimal math skills. |

CS 106A Programming Methodology |
GER:DB-EngrAppSci, WAY-FR |
Introduction to the engineering of computer applications emphasizing modern software engineering principles: program design, decomposition, encapsulation, abstraction, and testing. Emphasis is on good programming style and the built-in facilities of respective languages. Uses the Python programming language. No prior programming experience required. |

CS 106A Programming Methodology (ENGR 70A) |
GER:DB-EngrAppSci, WAY-FR |
Introduction to the engineering of computer applications emphasizing modern software engineering principles: object-oriented design, decomposition, encapsulation, abstraction, and testing. Emphasis is on good programming style and the built-in facilities of respective languages. No prior programming experience required. Summer quarter enrollment is limited. Alternative versions of CS106A are available which cover most of the same material but in different programming languages: Java [Fall, Win, Spr, or Sum qtr enroll in CS106A Section 1] Javascript [Fall qtr enroll in CS 106A Section 2] Python [Winter or Spring qtr enroll in CS 106A Section 3] |

CS 106A Programming Methodology (ENGR 70A) |
GER:DB-EngrAppSci, WAY-FR |
Introduction to the engineering of computer applications emphasizing modern software engineering principles: object-oriented design, decomposition, encapsulation, abstraction, and testing. Emphasis is on good programming style and the built-in facilities of respective languages. No prior programming experience required. Alternative versions of CS106A may be available which cover most of the same material but in different programming languages. |

CS 106A Programming Methodology |
GER:DB-EngrAppSci, WAY-FR |
Introduction to the engineering of computer applications emphasizing modern software engineering principles: program design, decomposition, encapsulation, abstraction, and testing. Emphasis is on good programming style and the built-in facilities of respective languages. Uses the Python programming language. No prior programming experience required. |

CS 106AX Programming Methodologies in JavaScript and Python (Accelerated) |
WAY-FR |
Introduction to the engineering of computer applications emphasizing modern software engineering principles: object-oriented design, decomposition, encapsulation, abstraction, and testing. This course targets an audience with prior programming experience, and that prior experience is leveraged so material can be covered in greater depth. |

CS 106B Programming Abstractions |
GER:DB-EngrAppSci, WAY-FR |
Abstraction and its relation to programming. Software engineering principles of data abstraction and modularity. Object-oriented programming, fundamental data structures (such as stacks, queues, sets) and data-directed design. Recursion and recursive data structures (linked lists, trees, graphs). Introduction to time and space complexity analysis. Uses the programming language C++ covering its basic facilities. Prerequisite: 106A or equivalent. |

CS 106B Programming Abstractions (ENGR 70B) |
GER:DB-EngrAppSci, WAY-FR |
Abstraction and its relation to programming. Software engineering principles of data abstraction and modularity. Object-oriented programming, fundamental data structures (such as stacks, queues, sets) and data-directed design. Recursion and recursive data structures (linked lists, trees, graphs). Introduction to time and space complexity analysis. Uses the programming language C++ covering its basic facilities. Prerequisite: 106A or equivalent. Summer quarter enrollment is limited. |

CS 106B Programming Abstractions (ENGR 70B) |
GER:DB-EngrAppSci, WAY-FR |
Abstraction and its relation to programming. Software engineering principles of data abstraction and modularity. Object-oriented programming, fundamental data structures (such as stacks, queues, sets) and data-directed design. Recursion and recursive data structures (linked lists, trees, graphs). Introduction to time and space complexity analysis. Uses the programming language C++ covering its basic facilities. Prerequisite: 106A or equivalent. |

CS 106B Programming Abstractions |
GER:DB-EngrAppSci, WAY-FR |
Abstraction and its relation to programming. Software engineering principles of data abstraction and modularity. Object-oriented programming, fundamental data structures (such as stacks, queues, sets) and data-directed design. Recursion and recursive data structures (linked lists, trees, graphs). Introduction to time and space complexity analysis. Uses the programming language C++ covering its basic facilities. Prerequisite: 106A or equivalent. |