## CS 12SI: Introduction to Mobile Augmented Reality Design and Development

Over the course of 9 weeks, we'll be covering major components of mobile AR development with Unity and AR Foundations to dig deep into concepts such as Plane Detection, Object Placement, Image and Face Tracking, Graphics, and a lot more! The class will feature student lecturers from Stanford XR leaders who have experience developing XR applications and guest speakers from industry professionals. Throughout the class, you'll build your very own interactive AR app and share your work with others to showcase what you've learned. Prerequisite:
CS 106A or equivalent basic coding experience.

Terms: Spr
| Units: 1

Instructors:
Borenstein, J. (PI)

## CS 21SI: AI for Social Good

Students will learn about and apply cutting-edge artificial intelligence techniques to real-world social good spaces (such as healthcare, government, education, and environment). The class will focus on techniques from machine learning and deep learning, including regression, neural networks, convolutional neural networks (CNNs), and recurrent neural networks (RNNs). The course alternates between lectures on machine learning theory and discussions with invited speakers, who will challenge students to apply techniques in their social good domains. Students complete weekly coding assignments reinforcing machine learning concepts and applications. Prerequisites: programming experience at the level of
CS107, mathematical fluency at the level of
MATH51, comfort with probability at the level of
CS109 (or equivalent). Application required for enrollment.

Terms: Spr
| Units: 2

## CS 31N: Counterfactuals: The Science of What Ifs?

How might the past have changed if different decisions were made? This question has captured the fascination of people for hundreds of years. By precisely asking, and answering such questions of counterfactual inference, we have the opportunity to both understand the impact of past decisions (has climate change worsened economic inequality?) and inform future choices (can we use historical electronic medical records data about decision made and outcomes, to create better protocols to enhance patient health?). In this course I will introduce some of the most common quantitative approaches to counterfactual reasoning, as well as give a wide sampling of some of the many important problems and questions that can be addressed through the lens of counterfactual reasoning, including in climate change, healthcare and economics. No prior experience with counterfactual or "what if" reasoning, nor probability, is required.

Terms: Spr
| Units: 3

Instructors:
Brunskill, E. (PI)

## CS 41: Hap.py Code: The Python Programming Language

This course is about the fundamentals and contemporary usage of the Python programming language. The primary focus is on developing best practices in writing Python and exploring the extensible and unique parts of the Python language. Topics include: Pythonic conventions, data structures such as list comprehensions, anonymous functions, iterables, powerful built-ins (e.g. map, filter, zip), and Python libraries. For the last few weeks, students will work with course staff to develop their own significant Python project. Prerequisite:
CS106B,
CS106X, or equivalent.

Terms: Spr
| Units: 2

Instructors:
Cain, J. (PI)

## CS 45: Software Tools Every Programmer Should Know

Classes teach you all about advanced topics within CS, from operating systems to machine learning, but there's one critical subject that's rarely covered, and is instead left to students to figure out on their own: proficiency with their tools. This course will teach you how to master the key tools necessary for being a successful computer scientist, such as the command line, version control systems, debuggers and linters, and many more. In addition, we will cover other key topics that are left out of standard CS classes, but that are essential to being a proficient computer scientist, including: security and cryptography, containers and virtual machines, and cloud computing.

Terms: Win, Spr
| Units: 2

## CS 46N: Working with Data: Delights and Doubts

The use of data to drive decisions and discoveries has increased dramatically over the past two decades, thanks to prevalent data collection, cheaper storage, faster computers, and sophisticated algorithms. This introductory seminar has three components: (1) Hands-on instruction in tools and techniques for working with data, from spreadsheets to data visualization systems to machine learning packages. This material is designed for students with little or no computer programming or data science experience. (2) A quarter-long "quantified self" project where students identify a set of questions about themselves or their surroundings, collect data to answer the questions, and analyze and visualize the collected data. (3) A set of guest speakers, including some who focus on the "doubts" of collecting and exploiting data, such as questions of ethics, bias, and privacy. In addition to the course project, students will complete short assignments to practice the learned tools and techniques, and will be expected to do some readings in advance of each guest speaker and engage in thoughtful discussion.

Terms: Aut, Spr
| Units: 3
| UG Reqs: WAY-AQR

Instructors:
Widom, J. (PI)

## CS 91SI: Digital Canvas: An Introduction to UI/UX Design

In this course, students learn digital design in a low-stress environment. We will teach the essential concepts of UI/UX design and create actual user interfaces in a project-based format. By the end of the class, students will have experience in creating handoff-ready interactive high-fidelity mockups for a realistic product feature. This course covers what makes a good or bad interface, effective design techniques from the ground up, and how to execute on design principles using the tool Figma. Limited enrollment - admission determined by short application due 11:59 PM on March 23:
https://forms.gle/knsLbRwt7th4HHsb7 . No required prerequisites. Recommended: some prior experience in product design, human-computer interaction, or front-end engineering

Terms: Spr
| Units: 2

Instructors:
Cain, J. (PI)

## CS 100A: Problem-solving Lab for CS106A

Additional problem solving practice for the introductory CS course
CS 106A. Sections are designed to allow students to acquire a deeper understanding of CS and its applications, work collaboratively, and develop a mastery of the material. Limited enrollment, permission of instructor required. Concurrent enrollment in
CS 106A required.

Terms: Aut, Win, Spr
| Units: 1

Instructors:
Collins, A. (PI)
;
Parlante, N. (PI)

## CS 100B: Problem-solving Lab for CS106B

Additional problem solving practice for the introductory CS course
CS106B. Sections are designed to allow students to acquire a deeper understanding of CS and its applications, work collaboratively, and develop a mastery of the material. Limited enrollment, permission of instructor required. Concurrent enrollment in
CS 106B required.

Terms: Aut, Win, Spr
| Units: 1

## CS 103: Mathematical Foundations of Computing

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 prin
more »

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.

Terms: Aut, Win, Spr, Sum
| Units: 3-5
| UG Reqs: GER:DB-Math, WAY-FR

Instructors:
Aiken, A. (PI)
;
Lee, C. (PI)
;
Liu, A. (PI)
;
Schwarz, K. (PI)
;
Agashe, R. (TA)
;
Chang, T. (TA)
;
Chen, C. (TA)
;
Chung, J. (TA)
;
Dash, A. (TA)
;
Emami, G. (TA)
;
Gao, C. (TA)
;
Horovitz, O. (TA)
;
Lian, Z. (TA)
;
Liu, J. (TA)
;
Liu, L. (TA)
;
Liu, Y. (TA)
;
McClearn, G. (TA)
;
Shaheed, N. (TA)
;
Sriram, P. (TA)
;
Sun, A. (TA)
;
Sun, Y. (TA)
;
Wang, R. (TA)
;
Xia, W. (TA)
;
Zhai, W. (TA)

Filter Results: