Print Settings
 

CS 1C: Introduction to Computing at Stanford (VPTL 1)

For those who want to learn more about Stanford's computing environment. Topics include: computer maintenance and security, computing resources, Internet privacy, and copyright law. One-hour lecture/demonstration in dormitory clusters prepared and administered weekly by Student Technology. Final project. Not a programming course.
Last offered: Autumn 2019 | Units: 1

CS 1U: Practical Unix

A practical introduction to using the Unix operating system with a focus on Linux command line skills. Class will consist of video tutorials and weekly hands-on lab sections. Topics include: grep and regular expressions, ZSH, Vim and Emacs, basic and advanced GDB features, permissions, working with the file system, revision control, Unix utilities, environment customization, and using Python for shell scripts. Topics may be added, given sufficient interest. Course website: http://cs1u.stanford.edu
Last offered: Winter 2022 | Units: 1

CS 7: Personal Finance for Engineers

Introduction to the fundamentals and analysis specifically needed by engineers to make informed and intelligent financial decisions. Course will focus on actual industry-based financial information from technology companies and realistic financial issues. Topics include: behavioral finance, budgeting, debt, compensation, stock options, investing and real estate. No prior finance or economics experience required.
Terms: Aut | Units: 1
Instructors: ; Nash, A. (PI)

CS 9: Problem-Solving for the CS Technical Interview

This course will prepare students to apply and interview for internships and full-time positions in the software engineering industry. Each week, we will have one meeting focused on advice (e.g. resume prep, behavioral interviews, salary negotiation, panel discussions with representatives from startups and big tech), and one meeting focused on working through and discussing one or more coding problems.
Last offered: Spring 2022 | Units: 1

CS 11SI: How to Make VR: Introduction to Virtual Reality Design and Development

In this hands-on, experiential course, students will design and develop virtual reality applications. You'll learn how to use the Unity game engine, the most popular platform for creating immersive applications. The class will teach the design best practices and the creation pipeline for VR applications. Students will work in groups to present a final project in building an application for the Oculus Quest 2 headset. Enrollment is limited and by application only. See https://cs11si.stanford.edu for more information and the link to the application. Prerequisite: CS 106A or equivalent
Terms: Aut | Units: 2

CS 12SI: Spatial Computing Workshop

This one-unit workshop introduces UX design fundamentals for XR (Extended Reality) applications through a combination of hands-on work sessions and guest lectures from industry and academic experts, focusing on spatial prototyping and introducing Xcode for implementing applications on the Apple Vision Pro. Prerequisite: CS 106A or equivalent basic coding experience. Please go to cs12si.stanford.edu for an application link.
Terms: Spr | Units: 1
Instructors: ; Borenstein, J. (PI)

CS 13SI: Introduction to Version Control with Git

Introduction to version control systems and how they can be used to explore the history of changes in a software project, encourage best practices in the software development process, and aid in collaboration within software engineering teams. Students will learn how to use git to make modular changes in a software repository, explore parallel ideas with branches, merge changes from multiple collaborators, and more. Basic programming at the level of CS 106A is recommended.
| Units: 1

CS 21SI: AI for Social Good

Students will learn about and apply cutting-edge artificial intelligence (AI) techniques to real-world social good spaces (such as healthcare, government, and environmental conservation). The class will balance high-level machine learning techniques? from the fields of deep learning, natural language processing, computer vision, and reinforcement learning? with real world case studies, inviting students to think critically about technical and ethical issues in the development and deployment of AI. The course structure alternates between instructional lectures and bi-weekly guest speakers at the forefront of technology for social good. Students will be given the chance to engage in a flexible combination of AI model building, discussion, and individual exploration. Special topics may include: tech ethics, human-centered AI, AI safety, education technology, mental health applications, AI in policy, assistive robotics. Prerequisites: programming experience at the level of CS106A. Application required for enrollment: http://tinyurl.com/cs21si2024. We encourage students from all disciplines and backgrounds to apply!
Terms: Spr | Units: 2
Instructors: ; Piech, C. (PI)

CS 22A: The Social & Economic Impact of Artificial Intelligence (INTLPOL 200, SYMSYS 122)

Recent advances in Generative Artificial Intelligence place us at the threshold of a unique turning point in human history. For the first time, we face the prospect that we are not the only generally intelligent entities, and indeed that we may be less capable than our own creations. As this remarkable new technology continues to advance, we are likely to entrust management of our environment, economy, security, infrastructure, food production, healthcare, and to a large degree even our personal activities, to artificially intelligent computer systems. The prospect of "turning over the keys" to increasingly autonomous and unpredictable machines raises many complex and troubling questions. How will society respond as they displace an ever-expanding spectrum of blue- and white-collar workers? Will the benefits of this technological revolution be broadly distributed or accrue to a lucky few? How can we ensure that these systems are free of bias and align with human ethical principles? What role will they play in our system of justice and the practice of law? How will they be used or abused in democratic societies and autocratic regimes? Will they alter the geopolitical balance of power, and change the nature of warfare? Are we merely a stepping-stone to a new form of non-biological life, or are we just getting better at building useful gadgets? The goal of this course is to equip students with the intellectual tools, ethical foundation, and psychological framework to successfully navigate the coming age of superintelligent machines. (Note: This course is pre-approved for credit at SLS and GSB. No programming or technical knowledge is required.)
Terms: Win | Units: 1
Instructors: ; Kaplan, J. (PI)

CS 24: Minds and Machines (LINGUIST 35, PHIL 99, PSYCH 35, SYMSYS 1, SYMSYS 200)

(Formerly SYMSYS 100). An overview of the interdisciplinary study of cognition, information, communication, and language, with an emphasis on foundational issues: What are minds? What is computation? What are rationality and intelligence? Can we predict human behavior? Can computers be truly intelligent? How do people and technology interact, and how might they do so in the future? Lectures focus on how the methods of philosophy, mathematics, empirical research, and computational modeling are used to study minds and machines. Students must take this course before being approved to declare Symbolic Systems as a major. All students interested in studying Symbolic Systems are urged to take this course early in their student careers. The course material and presentation will be at an introductory level, without prerequisites. If you have any questions about the course, please email symsys1staff@gmail.com.
Terms: Aut, Win, Sum | Units: 4 | UG Reqs: GER:DB-SocSci, WAY-FR

CS 25: Transformers United V4

Since their introduction in 2017, Transformers have taken the world by storm, and are finding applications all over Deep Learning. They have enabled the creation of powerful language models like ChatGPT and Gemini, and are a critical component in other ML applications such as text-to-image and video generation (e.g. DALL-E and Sora). They have significantly elevated the capabilities and impact of Artificial Intelligence. In CS 25, which has become one of Stanford's hottest and most exciting seminars, we examine the details of how Transformers work, and dive deep into the different kinds of Transformers and how they're applied in various fields and applications. We do this through a combination of instructor lectures, guest lectures, and classroom discussions. Potential topics include LLM architectures, creative use cases (e.g. art and music), healthcare/biology and neuroscience applications, robotics and RL (e.g. physical tasks, simulations, or games), and so forth. We invite folks at the forefront of Transformers research for talks, which will also be livestreamed and recorded through YouTube/Zoom. Past speakers have included Andrej Karpathy, Geoffrey Hinton, Jim Fan, Ashish Vaswani, and folks from OpenAI, Google DeepMind, NVIDIA, etc. Our class includes social events and networking sessions and has a popular reception within and outside Stanford, with around 1 million total views on YouTube. This is a 1-unit S/NC course, where attendance is the only homework! Please enroll on Axess or audit by joining the livestream (or in person if seats are available). Prerequisites: basic knowledge of Deep Learning (should understand attention) or CS224N/CS231N/CS230. Course website: https://web.stanford.edu/class/cs25/
Terms: Aut, Spr | Units: 1

CS 26SI: Beyond NLP: CS & Language through Text Input & Design

Where do Computer Science and Language intersect beyond NLP? In this class, we explore their overlaps through text entry and design. On the text-entry side, we will learn about the writing systems of the world and their encodings (there is so much more beyond the Latin alphabet!), how keyboards work and why they are designed this way, how autocorrect / predictive typing and voice / handwriting text input function, and accessibility of text input. On the design side, we will learn about typography & typeface design, and l10n / i18n. This class will feature many case studies and a few guest speakers!
Last offered: Autumn 2022 | Units: 1

CS 28: Artificial Intelligence, Entrepreneurship and Society in the 21st Century and Beyond

Technical developments in artificial intelligence (AI) have opened up new opportunities for entrepreneurship, as well as raised profound longer term questions about how human societal and economic systems may be re­organized to accommodate the rise of intelligent machines. In this course, closely co­taught by a Stanford professor and a leading Silicon Valley venture capitalist, we will examine the current state of the art capabilities of existing artificial intelligence systems, as well as economic challenges and opportunities in early stage startups and large companies that could leverage AI. We will focus on gaps between business needs and current technical capabilities to identify high impact directions for the development of future AI technology. Simultaneously, we will explore the longer term societal impact of AI driven by inexorable trends in technology and entrepreneurship. The course includes guest lectures from leading technologists and entrepreneurs who employ AI in a variety of fields, including healthcare, education, self­driving cars, computer security, natural language interfaces, computer vision systems, and hardware acceleration.
Last offered: Autumn 2019 | Units: 2

CS 29N: Computational Decision Making

Although we make decisions every day, many people base their decisions on initial reactions or ""gut"" feelings. There are, however, powerful frameworks for making decisions more effectively based on computationally analyzing the choices available and their possible outcomes. In this course we give an introduction to some of these frameworks, including utility theory, decision analysis, and game theory. We also discuss why people sometimes make seemingly reasonable, yet irrational, decisions. We begin the class by presenting some of the basics of probability theory, which serves as the main mathematical foundation for the decision making frameworks we will subsequently present. Although we provide a mathematical/computational basis for the decision making frameworks we examine, we also seek to give intuitive (and sometimes counterintuitive) explanations for actual decision making behavior through in-class demonstrations. No prior experience with probability theory is needed (we'll cover what you need to know in class), but students should be comfortable with mathematical manipulation at the level of Math 20 or Math 41.
Terms: Win | Units: 3

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.
Last offered: Spring 2023 | Units: 3

CS 40: Cloud Infrastructure and Scalable Application Deployment

Trying to launch your next viral programming project and anticipating substantial user growth? This course will help you learn to implement your ideas in the cloud in a scalable, cost-effective manner. Topics will include cloud AI/ML pipelines, virtual machines, containers, basic networking, expressing infrastructure as code (IaC), data management, security and observability, and continuous integration and deployment (CI/CD). Through hands-on learning and practical examples, you'll learn to effectively deploy and manage cloud infrastructure. There is no out-of-pocket cost associated with this class and cloud credits will be provided for all students. Prerequisites: Programming maturity up to CS 107. Familiarity with the command line, version control, and basic development tools to the level of CS 45/CS 104, in particular: Basic Unix command line utilities and administration; Editing code with a TUI editor such as vim, emacs, or nano; Using Git and GitHub for collaborative projects (i.e. branching and pull requests); Basic familiarity with package managers for languages and operating systems (e.g., pip, apt, homebrew); Prior web development or networking experience helpful but not required.
Terms: Win | Units: 3

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.
Last offered: Spring 2023 | Units: 2

CS 43: Functional Programming Abstractions

This course covers the fundamentals of functional programming and algebraic type systems, and explores a selection of related programming paradigms and current research. Haskell is taught and used throughout the course, though much of the material is applicable to other languages. Material will be covered from both theoretical and practical points of view, and topics will include higher order functions, immutable data structures, algebraic data types, type inference, lenses and optics, effect systems, concurrency and parallelism, and dependent types. Prerequisites: Programming maturity and comfort with math proofs, at the levels of CS107 and CS103.
Last offered: Winter 2020 | Units: 2

CS 44N: Great Ideas in Graphics

A hands-on interactive and fun exploration of great ideas from computer graphics. Motivated by graphics concepts, mathematical foundations and computer algorithms, students will explore an eccentric selection of "great ideas" through short weekly programming projects. Project topics will be selected from a diverse array of computer graphics concepts and historical elements.
Terms: Aut | Units: 3
Instructors: ; James, D. (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.
Last offered: Spring 2023 | Units: 2

CS 46: 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.
| Units: 3 | UG Reqs: WAY-AQR

CS 47: Cross-Platform Mobile Development

The fundamentals of cross-platform mobile application development using the React Native framework (RN). The Primary focus is on enabling students to build apps for both iOS and Android using RN. Students will explore the unique aspects that made RN a primary tool for mobile development within Facebook, Instagram, Walmart, Tesla, and UberEats, SpaceX, Coinbase and many more. Prerequisites: no formal pre-reqs but CS142/CS193x and/or prior programming experience helps. Website: web.stanford.edu/class/cs47/. To enroll in the class, please fill the following application: https://forms.gle/rhcGyigx1hWCrfA48. The application deadline is at the end of week 1.
Last offered: Winter 2023 | Units: 2

CS 47N: Datathletics: Diving into Data Analytics and Stanford Sports

Sophisticated data collection and analysis are now key to program success across many sports: Nearly all professional and national-level teams employ data scientists, and "datathletics" is becoming prevalent in college sports as well. This immersive seminar combines extensive hands-on data analytics with a first-hand peek into Stanford athletics. Class meetings roughly alternate between: (1) instruction in a variety of tools and techniques for analyzing and visualizing data; and (2) guest lectures by Stanford athletics coaches explaining how data is or could be used in their sport. Through regular problem sets, students bring each week's tools to bear on data related to the week's sport. One goal of the class is empowering students to perform compelling data analytics by mastering tools across a wide spectrum, including spreadsheets, the Tableau system for data preparation and visualization, Jupyter notebooks, relational databases and SQL, Python and many of its data-specific packages including Pandas, and machine learning. On the sports side, while the Stanford coaches may touch on many aspects of data collection and analysis, the main focus of this course is on using data for strategic decision-making rather than optimizing individual human performance. Prerequisites: No background in statistics or data analysis is needed, but basic programming and computing skills at the level of high school computer science or CS106A is expected. On the flip side, students with extensive experience in coding or data science may not be challenged by the technical aspects of the course.
| Units: 3

CS 49N: Using Bits to Control Atoms

This is a crash course in how to use a stripped-down computer system about the size of a credit card (the rasberry pi computer) to control as many different sensors as we can implement in ten weeks, including LEDs, motion sensors, light controllers, and accelerometers. The ability to fearlessly grab a set of hardware devices, examine the data sheet to see how to use it, and stitch them together using simple code is a secret weapon that software-only people lack, and allows you to build many interesting gadgets. We will start with a "bare metal'' system --- no operating system, no support --- and teach you how to read device data sheets describing sensors and write the minimal code needed to control them (including how to debug when things go wrong, as they always do). This course differs from most in that it is deliberately mostly about what and why rather than how --- our hope is that the things you are able at the end will inspire you to follow the rest of the CS curriculum to understand better how things you've used work. Prerequisites: knowledge of the C programming language. A Linux or Mac laptop that you are comfortable coding on.
Last offered: Autumn 2021 | Units: 3

CS 50: Using Tech for Good

Students in the class will work in small teams to implement high-impact projects for partner organizations. Taught by the CS+Social Good team, the aim of the class is to empower you to leverage technology for social good by inspiring action, facilitating collaboration, and forging pathways towards global change. Recommended: CS 106B, CS 42 or 142. Class is open to students of all years. May be repeated for credit. Cardinal Course certified by the Haas Center.
Last offered: Spring 2018 | Units: 2 | Repeatable 5 times (up to 10 units total)

CS 51: CS + Social Good Studio: Designing Social Impact Projects

Get real-world experience researching and developing your own social impact project! Students work in small teams to develop high-impact projects around problem domains provided by partner organizations, under the guidance and support of design/technical coaches from industry and non-profit domain experts. Main class components are workshops, community discussions, guest speakers and mentorship. Studio provides an outlet for students to create social change through CS while engaging in the full product development cycle on real-world projects. The class culminates in a showcase where students share their project ideas and Minimum Viable Product prototypes with stakeholders and the public. Application required; please see cs51.stanford.edu for more information.
Terms: Win | Units: 2
Instructors: ; Cain, J. (PI)

CS 52: CS + Social Good Studio: Implementing Social Good Projects

Continuation of CS51 (CS + Social Good Studio). Teams enter the quarter having completed and tested a minimal viable product (MVP) with a well-defined target user, and a community partner. Students will learn to apply scalable technical frameworks, methods to measure social impact, tools for deployment, user acquisition techniques and growth/exit strategies. The purpose of the class is to facilitate students to build a sustainable infrastructure around their product idea. CS52 will host mentors, guest speakers and industry experts for various workshops and coaching-sessions. The class culminates in a showcase where students share their projects with stakeholders and the public. Prerequisite: CS 51, or consent of instructor.
Terms: Spr | Units: 2

CS 53N: How Can Generative AI Help Us Learn?

This seminar course will explore the science behind generative AI, the likely future of tools such as DALL-E, ChatGPT, GPT-4, and Bard, and the implications for education, both in and outside of structured school environments. Students in the course will work in teams to each become experts in some aspect of AI and in some way that generative AI could create a new future for education. The background for this course is the public release of ChatGPT, which created new awareness of the potential power of AI to dramatically change our lives. In considering the possible implications for education, ChatGPT has sparked dreams of automated personal tutors, customizable teaching assistance, AI-led collaborative learning, and revolutions in assessment. In addition to optimistic projections, there are clear and significant risks. For example, will AI-assisted learning be culturally appropriate and equally available to all? Can it increase opportunity for underprivileged learners worldwide, or will it accentuate privilege and privileged views? Will it help us learn faster, or distract us from thinking deeply about difficult problems ourselves? As experienced student learners, members of the class will be able to draw on their own educational history and design learning approaches that could change the future of their education and others in college or at other stages of their lives.
Terms: Spr | Units: 3
Instructors: ; Mitchell, J. (PI)

CS 56N: Great Discoveries and Inventions in Computing

This seminar will explore some of both the great discoveries that underlie computer science and the inventions that have produced the remarkable advances in computing technology. Key questions we will explore include: What is computable? How can information be securely communicated? How do computers fundamentally work? What makes computers fast? Our exploration will look both at the principles behind the discoveries and inventions, as well as the history and the people involved in those events. Some exposure to programming is required.
Last offered: Winter 2022 | Units: 3

CS 57N: Randomness: Computational and Philosophical Approaches (PHIL 3N)

Is it ever reasonable to make a decision randomly? For example, would you ever let an important choice depend on the flip of a coin? Can randomness help us answer difficult questions more accurately or more efficiently? What is randomness anyway? Can an object be random? Are there genuinely random processes in the world, and if so, how can we tell? In this seminar, we will explore these questions through the lenses of philosophy and computation. By the end of the quarter students should have an appreciation of the many roles that randomness plays in both humanities and sciences, as well as a grasp of some of the key analytical tools used to study the concept. The course will be self-contained, and no prior experience with randomness/probability is necessary.
Last offered: Winter 2022 | Units: 3

CS 58: You Say You Want a Revolution (Blockchain Edition)

This project-based course will give creative students an opportunity to work together on revolutionary change leveraging blockchain technology. The course will provide opportunities for students to become operationally familiar with blockchain concepts, supported by presentation of blockchain fundamentals at a level accessible to those with or without a strong technical background. Specific topics include: incentives, ethics, crypto-commons, values, FOMO 3D, risks, implications and social good. Students will each discover a new possible use-case for blockchain and prototype their vision for the future accordingly. Application and impact areas may come from medicine, law, economics, history, anthropology, or other sectors. Student diversity of background will be valued highly.
Last offered: Winter 2019 | Units: 2

CS 58N: The Blockchain Revolution Will Not Be Televised

This seminar will explore the nature of revolutions supported and enabled by technological change, using the Internet and smart phone as two historical examples and focusing on blockchain technology and potential applications such as money, banking, supply chain and market trading. In this project-based course, one meeting per week will bring in new information, including visiting experts. Other class meetings will involve team work, presentations, and discussion. Each student will help lead a section; the class collectively will produce a final book/movie/blog, in a medium selected by the class.
Last offered: Winter 2020 | Units: 3

CS 59SI: Quantum Computing: Open-Source Project Experience

This course focuses on giving quantum software engineering industry experience with open-source projects proposed by frontier quantum computing and quantum device corporate partners. Quantum computing and quantum information industry sponsors submit open-source projects for students or teams of students to build and create solutions throughout the quarter with mentorship from the company. Gain experience with quantum mechanics, quantum computing, and real-world software development. Prerequisites: Computer science basics (106A, 106B), some undergraduate physics and basic understanding of quantum computing (no formal coursework in quantum computing required)
Last offered: Spring 2022 | Units: 2

CS 64: Computation for Puzzles and Games

How can we apply computer science to better understand (and have even more fun with) games and puzzles? What can we do when a game is too complex to analyze exhaustively, or when no efficient algorithms exist to solve a logic puzzle? This sampler course will whet your appetite for CS theory and AI as we apply those lenses to both classics (e.g., chess, Scrabble, the Rubik's cube, the Lights Out puzzle) and modern favorites (e.g., Sudoku, Kakuro, Esports, and tool-assisted speedruns). Each week, we will have one lecture and one optional hands-on puzzle/problem solving session, culminating in an (optional) on-foot puzzle hunt around campus. Material of varying technical complexity will be presented, and although some experience with programming and CS theory will be helpful, the course is open to all.
Last offered: Autumn 2022 | Units: 1

CS 80E: Dissecting The Modern Computer

In this course, students will be given a high-level, accessible introduction to computer architecture through the use of the RISC-V ISA. Through a series of interactive units, students will learn about the inner-workings of computers, from the execution of our programs all the way down to the hardware that runs them. Topics include simple digital circuits, assembly, simple processors, memory systems (Cache, DRAM, Disk), and bonus topics like GPU's. After completing this class, students should have a newfound appreciation for how incredible computational technology is, as well as direction to fantastic classes that delve into some of these topics in more detail, like CS149, EE108, and EE180. Prerequisite: CS106B.
Terms: Aut | Units: 2
Instructors: ; Master, T. (PI)

CS 80Q: Race and Gender in Silicon Valley (AFRICAAM 80Q)

Join us as we go behind the scenes of some of the big headlines about trouble in Silicon Valley. We'll start with the basic questions like who decides who gets to see themselves as "a computer person," and how do early childhood and educational experiences shape our perceptions of our relationship to technology? Then we'll see how those questions are fundamental to a wide variety of recent events from #metoo in tech companies, to the ways the under-representation of women and people of color in tech companies impacts the kinds of products that Silicon Valley brings to market. We'll see how data and the coming age of AI raise the stakes on these questions of identity and technology. How can we ensure that AI technology will help reduce bias in human decision-making in areas from marketing to criminal justice, rather than amplify it?
Last offered: Autumn 2022 | Units: 3 | UG Reqs: WAY-EDP

CS 81SI: AI Interpretability and Fairness

As black-box AI models grow increasingly relevant in human-centric applications, explainability and fairness becomes increasingly necessary for trust in adopting AI models. This seminar class introduces students to major problems in AI explainability and fairness, and explores key state-of-theart methods. Key technical topics include surrogate methods, feature visualization, network dissection, adversarial debiasing, and fairness metrics. There will be a survey of recent legal and policy trends. Each week a guest lecturer from AI research, industry, and related policy fields will present an open problem and solution, followed by a roundtable discussion with the class. Students have the opportunity to present a topic of interestnor application to their own projects (solo or in teams) in the final class. Code examples of each topic will be provided for students interested in a particular topic, but there will be no required coding components. Students who will benefit most from this class have exposure to AI, such as through projects and related coursework (e.g. statistics, CS221, CS230, CS229). Students who are pursuing subjects outside of the CS department (e.g. sciences, social sciences, humanities) with sufficient mathematical maturity are welcomed to apply. Enrollment limited to 20.
Last offered: Spring 2020 | Units: 1

CS 82SI: Wellness in Tech: Designing an Intentional Lifestyle in a Tech-Driven World

Would deleting Facebook make us all happier? Of the 16 hours we spend awake each day on average, over 11 of those hours are spent interacting with digital media. In an always-on, tech-driven world, how do we regain control over our wellbeing?nThis 1 unit course is part workshop, part seminar, with a focus on tackling and re-framing the relationship between technology and wellness. What are the principles of human flourishing, and what is technology's role in promoting them? How can self-compassion and an appreciation for diversity lead to the development of products that enhance our collective happiness? Using human-centered design thinking, we will explore how technology both propels and hinders us- as individuals and as a society. By the end of this course, you will have tangible insights and methods to regain control over your relationship with technology. No coding involved; however we will be deeply exploring the human operating system. Students from all programs and areas of study are encouraged to apply.
Last offered: Spring 2020 | Units: 1

CS 83N: Playback Theater

Playback combines elements of theater, community work and storytelling. In a playback show, a group of actors and musicians create an improvised performance based on the audience's personal stories. A playback show brings about a powerful listening and sharing experience. During the course, we will tell, listen, play together, and train in playback techniques. We will write diaries to process our experience in the context of education and research. The course is aimed to strengthen listening abilities, creativity and the collaborative spirit, all integral parts of doing great science. In playback, as in research, we are always moving together, from the known, to the unknown, and back. There is limited enrollment for this class. Application is required.
Terms: Win | Units: 3 | UG Reqs: WAY-CE
Instructors: ; Reingold, O. (PI)

CS 84: Emotional Intelligence

This hands-on course is aimed at Stanford engineers who wish to be successful in start-ups or engineering-focused organizations. It is based on decades of observations by the instructors, witnessing that fresh graduates routinely struggle to survive and create an impact in the corporate world. A key objective is for students to develop a basic set of skills to master day-to-day personal interactions, and to understand the dynamics of work environments. The course then aims to guide students with more complex tasks, such as how to run effective meetings or how to work in multi-disciplinary teams. Whether you wish to become a start-up founder and CEO; a manager at a tech-centric company; or an individual contributor at Facebook or Google: if you wish to hit the ground running and be highly effective from your first day at work, this course is for you!
Last offered: Spring 2020 | Units: 2

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

This course is focused on the application of UX/UI design concepts to actual user interfaces: the creation of wireframes, high-fidelity mockups, and clickable prototypes. We will be focusing on what makes a good or bad user interface, effective design techniques, and how to employ these techniques using Figma and Marvel to make realistic prototypes. This course is ideal for anyone with little to no visual design experience who would like to build their skill set in UI/UX for app or web design. It would also be ideal for anyone with experience in front or back-end web development or human-computer interaction that would want to sharpen their visual design and analysis skills for UI/UX.
| Units: 2

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
Last offered: Spring 2023 | Units: 2

CS 93: Teaching AI

For graduate students who are TA-ing an AI course. This course prepares new AI section leaders to teach, write, and evaluate AI content. In class, you will be evaluating final projects individually and as a group. You will have discussions criticizing papers and assigning grades to them. You will analyze and solve discussion session problems on the board, explain algorithmsnlike backpropagation, and learn how to give constructive feedback to students. The class will also include a guest speaker who will give teaching advice and talk about AI. Focus is on teaching skills, techniques, and final projects grading. The class meets once a week for the first 6 weeks of the quarter.
Last offered: Autumn 2019 | Units: 1

CS 100ACE: 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: ; King, E. (PI)

CS 100BACE: 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 101: Introduction to Computing Principles

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.
Last offered: Autumn 2018 | Units: 3-5 | UG Reqs: GER:DB-EngrAppSci, WAY-FR

CS 102: Working with Data - Tools and Techniques

Aimed at non-CS undergraduate and graduate students who want to learn a variety of tools and techniques for working with data. Many of the world's biggest discoveries and decisions in science, technology, business, medicine, politics, and society as a whole, are now being made on the basis of analyzing data sets. This course provides a broad and practical introduction to working with data: data analysis techniques including databases, data mining, machine learning, and data visualization; data analysis tools including spreadsheets, Tableau, relational databases and SQL, Python, and R; introduction to network analysis and unstructured data. Tools and techniques are hands-on but at a cursory level, providing a basis for future exploration and application. Prerequisites: comfort with basic logic and mathematical concepts, along with high school AP computer science, CS106A, or other equivalent programming experience.
Last offered: Spring 2020 | Units: 3-4 | UG Reqs: WAY-AQR

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

CS 103ACE: Mathematical Problem-solving Strategies

Problem solving strategies and techniques in discrete mathematics and computer science. Additional problem solving practice for CS103. In-class participation required. Prerequisite: consent of instructor. Co-requisite: CS103.
Terms: Aut, Win, Spr | Units: 1
Instructors: ; Guan, R. (PI)

CS 104: Introduction to Essential Software Systems and Tools

Concepts that are prerequisites to many different CS classes, such as version control, debugging, and basic cryptography and networking, are either left for students to figure out on their own or are taught in "crash course" form on-the-fly during other, unrelated classes. We propose to develop a course that will teach students the skills necessary to be successful computer scientists, such as the command line, source code management and debugging, security and cryptography, containers and virtual machines, and cloud computing. In this course, students will both become proficient with practical tools and develop a deeper, intuitive understanding of the involved software systems and computer science concepts. With this deeper understanding, students can leverage critical thinking skills to intelligently and efficiently configure and troubleshoot software systems, assess the security and efficiency of particular tool usages, and synthesize new automation pipelines that integrate multiple tools. To summarize, instead of having just a cursory understanding of how to use these tools, students will learn how to most effectively use these tools to become proficient programmers and computer scientists. In addition, this course can provide a gentle introduction to potentially challenging computer science concepts (e.g., networking) that become a focus in subsequent courses and also help motivate some of the tool usages they will see later in the degree program.
Terms: Win | Units: 3

CS 105: Introduction to Computers

For non-technical majors. What computers are and how they work. Practical experience in development of websites and an introduction to programming. 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.
Terms: Aut, Spr | Units: 3-5 | UG Reqs: GER:DB-EngrAppSci, WAY-FR

CS 106A: Programming Methodology

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.
Terms: Aut, Win, Spr, Sum | Units: 3-5 | UG Reqs: GER:DB-EngrAppSci, WAY-FR

CS 106AX: Programming Methodologies in JavaScript and Python (Accelerated)

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.
Terms: Aut | Units: 3-5 | UG Reqs: WAY-FR
Instructors: ; Cain, J. (PI); Gupta, A. (TA)

CS 106B: Programming Abstractions

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.
Terms: Aut, Win, Spr, Sum | Units: 3-5 | UG Reqs: GER:DB-EngrAppSci, WAY-FR

CS 106E: Exploration of Computing

This course, designed for the non-computer scientist, will provide students with a solid foundation in the concepts and terminology behind computers, the Internet, and software development. It will give you better understanding and insight when working with technology. It will be particularly useful to future managers and PMs who will work with or who will lead programmers and other tech workers. But it will be useful to anyone who wants a better understanding of tech concepts and terms. We'll start by covering the foundations of Computer Hardware, the CPU, Operating Systems, Computer Networks, and the Web. We will then use our foundation to explore a variety of tech-related topics including Computer Security (how computers are attacked and defensive measures that can be taken); Cloud Computing, Artificial Intelligence, Software Development, Human-Computer Interaction, and Computer Theory.nnPrerequisites: Some programming experience at the High School level of above will help students get the most out of the class, but the course can be successfully completed with no prerequisites.
Terms: Spr | Units: 3

CS 106L: Standard C++ Programming Laboratory

This class explores features of the C++ programming language beyond what's covered in CS106B. Topics include core C++ language features (e.g. const-correctness, operator overloading, templates, move semantics, and lambda expressions) and standard libraries (e.g. containers, algorithms, and smart pointers). Pre- or corequisite: CS106B or equivalent. Prerequisite: CS106B or equivalent. CS106L may be taken concurrently with CS106B.
Terms: Aut, Win, Spr | Units: 1

CS 106M: Enrichment Adventures in Programming Abstractions

This enrichment add-on is a companion course to CS106B to explore additional topics and go into further depth. Specific topics to be announced per-quarter; past topics have included search engines, pattern recognition, data compression/encryption, error correction, digital signatures, and numerical recipes. Students must be co-enrolled in CS106B. Refer to cs106m.stanford.edu for more information.
Terms: Aut | Units: 1
Instructors: ; Zelenski, J. (PI)

CS 106S: Coding for Social Good

Survey course on applications of fundamental computer science concepts from CS 106B to problems in the social good space (such as health, trust & safety, government, security, education, and environment). Each week consists of in-class activities designed and delivered by student instructors. Introduces students to JavaScript and the basics of web development. Some of the topics we will cover include mental health chatbots, tumor classification with basic machine learning, sentiment analysis of tweets on refugees, the basics of open source software, and principles of cybersecurity. For more information, visit cs106s.stanford.edu. Pre/Corequisite: CS106B. Cardinal Course certified by the Haas Center for Public Service
Terms: Aut, Spr | Units: 1
Instructors: ; Cain, J. (PI)

CS 106X: Programming Abstractions (Accelerated)

Intensive version of 106B for students with a strong programming background interested in a rigorous treatment of the topics at an accelerated pace. Significant amount of additional advanced material and substantially more challenging projects. Some projects may relate to CS department research. Prerequisite: excellence in 106A or equivalent, or consent of instructor.
Last offered: Autumn 2019 | Units: 3-5 | UG Reqs: GER:DB-EngrAppSci, WAY-FR

CS 107: Computer Organization and Systems

Introduction to the fundamental concepts of computer systems. Explores how computer systems execute programs and manipulate data, working from the C programming language down to the microprocessor. Topics covered include: the C programming language, data representation, machine-level code, computer arithmetic, elements of code compilation, memory organization and management, and performance evaluation and optimization. Prerequisites: 106B or X, or consent of instructor.
Terms: Aut, Win, Spr, Sum | Units: 3-5 | UG Reqs: GER:DB-EngrAppSci, WAY-FR

CS 107ACE: Problem-solving Lab for CS107

Additional problem solving practice for the introductory CS course CS107. 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 107 required.
Terms: Aut, Win, Spr | Units: 1
Instructors: ; Bear, E. (PI); Yu, J. (PI)

CS 107E: Computer Systems from the Ground Up

Introduction to the fundamental concepts of computer systems through bare metal programming on the Raspberry Pi. Explores how five concepts come together in computer systems: hardware, architecture, assembly code, the C language, and software development tools. Students do all programming with a Raspberry Pi kit and several add-ons (LEDs, buttons). Topics covered include: the C programming language, data representation, machine-level code, computer arithmetic, compilation, memory organization and management, debugging, hardware, and I/O. Enrollment limited to 40. Check website for details: http://cs107e.stanford.edu on student selection process. Prerequisite: CS106B or CS106X, and consent of instructor. There is a $75 course lab fee.
Terms: Win, Spr | Units: 3-5 | UG Reqs: WAY-FR

CS 108: Object-Oriented Systems Design

Software design and construction in the context of large OOP libraries. Taught in Java. Topics: OOP design, design patterns, testing, graphical user interface (GUI) OOP libraries, software engineering strategies, approaches to programming in teams. Prerequisite: 107.
Terms: Win | Units: 3-4 | UG Reqs: GER:DB-EngrAppSci

CS 109: Introduction to Probability for Computer Scientists

Topics include: counting and combinatorics, random variables, conditional probability, independence, distributions, expectation, point estimation, and limit theorems. Applications of probability in computer science including machine learning and the use of probability in the analysis of algorithms. Prerequisites: 103, 106B or X, multivariate calculus at the level of MATH 51 or CME 100 or equivalent.
Terms: Aut, Win, Spr, Sum | Units: 3-5 | UG Reqs: GER:DB-EngrAppSci, WAY-AQR, WAY-FR

CS 109ACE: Problem-solving Lab for CS109

Additional problem solving practice for the introductory CS course CS109. 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. Enrollment limited to 30 students, permission of instructor required. Concurrent enrollment in CS 109 required.
Terms: Aut, Win, Spr | Units: 1
Instructors: ; Qin, M. (PI); Cain, J. (GP)

CS 110: Principles of Computer Systems

Principles and practice of engineering of computer software and hardware systems. Topics include: techniques for controlling complexity; strong modularity using client-server design, virtual memory, and threads; networks; atomicity and coordination of parallel activities. Prerequisite: 107.
Last offered: Winter 2022 | Units: 3-5 | UG Reqs: GER:DB-EngrAppSci

CS 110A: Problem Solving Lab for CS110

Additional design and implementation problems to complement the material taught in CS110. In-class participation is required. Prerequisite: consent of instructor. Corequisite: CS110.
Last offered: Winter 2022 | Units: 1

CS 110L: Safety in Systems Programming

Supplemental lab to CS 110. Explores how program analysis tools can find common bugs in programs and demonstrates how we can use the Rust programming language to build robust systems software. Course is project-based and will examine additional topics in concurrency and networking through the lens of Rust. Corequisite: CS 110
Last offered: Winter 2022 | Units: 2

CS 111: Operating Systems Principles

Explores operating system concepts including concurrency, synchronization, scheduling, processes, virtual memory, I/O, file systems, and protection. Available as a substitute for CS110 that fulfills any requirement satisfied by CS110. Prerequisite: CS107.
Terms: Aut, Win, Spr | Units: 3-5

CS 111ACE: Problem Solving Lab for CS111

Additional design and implementation problems to complement the material taught in CS111. In-class participation is required. Prerequisite: consent of instructor. Corequisite: CS111
Terms: Aut, Win, Spr | Units: 1
Instructors: ; Master, T. (PI)

CS 112: Operating systems kernel implementation project

Students will learn the details of how operating systems work throughfour implementation projects in the Pintos operating system. Theprojects center around threads, processes, virtual memory, and filesystems. This class should not be taken by students who have taken orplan to take CS212 or CS140. Prerequisite: CS111 or permission of theinstructor.
Terms: Win | Units: 3

CS 114: Selected Reading of Computer Science Research

Detailed reading of 5-10 research publications in computer science. For undergraduates, the course is an introduction to advanced foundational concepts within a field as well as an in-depth look at detailed research. For graduate students, the course focuses on historical reading as well as an opportunity to discuss the strengths and weaknesses of the work. Both groups of students discuss historical context, how ideas succeeded or did not and why, and how they manifest in modern technology. The discussion of each piece of work includes a guest lecture by one of its authors.
Last offered: Spring 2022 | Units: 3

CS 120: Introduction to AI Safety (STS 10)

As we delegate more to artificial intelligence (AI) and integrate AI more in societal decision-making processes, we must find answers to how we can ensure AI systems are safe, follow ethical principles, and align with the creator's intent. Increasingly, many AI experts across academia and industry believe there is an urgent need for both technical and societal progress across AI alignment, ethics, and governance to understand and mitigate risks from increasingly capable AI systems and ensure that their contributions benefit society as a whole. Intro to AI Safety explores these questions in lectures with targeted readings, weekly quizzes, and group discussions. We are looking at the capabilities and limitations of current and future AI systems to understand why it is hard to ensure the reliability of existing AI systems. We will cover ongoing research efforts that tackle these questions, ranging from studies in reinforcement learning and computer vision to natural language processing. We will study work in interpretability, robustness, and governance of AI systems - to name a few. Basic knowledge about machine learning helps but is not required. View the full syllabus at http://tinyurl.com/42rb2sfv. Enrollment is by application only. Apply online at https://forms.gle/v8msM8nJ5FgeEHx1A by 9:00 PM PDT on Saturday, March 16, 2024.
Terms: Spr | Units: 3

CS 123: A Hands-On Introduction to Building AI-Enabled Robots

This course offers a hands-on introduction to AI-powered robotics. Unlike most introductory robotics courses, students will learn essential robotics concepts by constructing a quadruped robot from scratch and training it to perform real-world tasks. The course covers a broad range of topics critical to robot learning, including motor control, forward and inverse kinematics, system identification, simulation, and reinforcement learning. Through weekly labs, students will construct a pair of tele-operated robot arms with haptic feedback, program a robot arm to learn self-movement, and ultimately create and program an agile robot quadruped named Pupper. In the final four weeks, students will undertake an open-ended project using Pupper as a platform, such as instructing it to walk using reinforcement learning, developing a vision system to allow Pupper to play fetch, or redesigning the hardware to enhance the robot's agility. Note: CS123 strives to achieve a balanced distribution of seniority across the undergrad student body. Within each seniority group, enrollment of students will follow a first-come-first-served approach. Please use the form below to enroll in the class. The form will be open on 9/1/2023 9:00AM Pacific Time. Please use this form to apply: https://docs.google.com/forms/d/e/1FAIpQLSdBSUqLjpD-a-GmwhPnRLMi7L1BMMzikl8yqwmQp-stMoDqIg/viewform
Terms: Aut | Units: 3
Instructors: ; Liu, K. (PI); Levine, G. (TA)

CS 124: From Languages to Information (LINGUIST 180, LINGUIST 280)

Extracting meaning, information, and structure from human language text, speech, web pages, social networks. Introducing methods (regex, edit distance, naive Bayes, logistic regression, neural embeddings, inverted indices, collaborative filtering, PageRank), applications (chatbots, sentiment analysis, information retrieval, question answering, text classification, social networks, recommender systems), and ethical issues in both. Prerequisites: CS106B, Python (at the level of CS106A), CS109 (or equivalent background in probability), and programming maturity and knowledge of UNIX equivalent to CS107 (or taking CS107 or CS1U concurrently).
Terms: Win | Units: 3-4 | UG Reqs: WAY-AQR

CS 125: Data: Algorithms, Tools, Policy, and Society (POLISCI 156)

A broad multidisciplinary examination of the use and impacts of data, including fundamental principles and algorithms, tools for data analysis, visualization, and machine learning, policy issues, and societal considerations. Specific topics include: data provenance (where data comes from and how it's processed), the role and value of data in analytics and decision-making, data and algorithmic fairness, data privacy, the concentration of data as power, and issues of data governance and regulation, including transparency and due process. In addition to case studies, conceptual frameworks, theoretical underpinnings, and algorithms, the course provides practical experience through hands-on work where students use tools to explore issues from class on real data.
| Units: 3

CS 129: Applied Machine Learning

(Previously numbered CS 229A.) You will learn to implement and apply machine learning algorithms. This course emphasizes practical skills, and focuses on giving you skills to make these algorithms work. You will learn about commonly used learning techniques including supervised learning algorithms (logistic regression, linear regression, SVM, neural networks/deep learning), unsupervised learning algorithms (k-means), as well as learn about specific applications such as anomaly detection and building recommender systems. This class is taught in the flipped-classroom format. You will watch videos and complete in-depth programming assignments and online quizzes at home, then come to class for discussion sections. This class will culminate in an open-ended final project, which the teaching team will help you on. Prerequisites: Programming at the level of CS106B or 106X, and basic linear algebra such as Math 51.
Terms: Win | Units: 3-4

CS 129X: Human Centered NLP (CS 329X)

Recent advances in natural language processing (NLP), especially around large pretrained models, have enabled extensive successful applications. However, there are growing concerns about the negative aspects of NLP systems, such as biases and a lack of input from users. This course gives an overview of human-centered techniques and applications for NLP, ranging from human-centered design thinking to human-in-the-loop algorithms, fairness, and accessibility. Along the way, we will cover machine-learning techniques which are especially relevant to NLP and to human experiences. Prerequisite: CS224N or CS224U, or equivalent background in natural language processing. Prerequisite: CS224N or CS224U, or equivalent background in natural language processing.
| Units: 3-4

CS 131: Computer Vision: Foundations and Applications

Computer Vision technologies are transforming automotive, healthcare, manufacturing, agriculture and many other sections. Today, household robots can navigate spaces and perform duties, search engines can index billions of images and videos, algorithms can diagnose medical images for diseases, and smart cars can see and drive safely. Lying in the heart of these modern AI applications are computer vision technologies that can perceive, understand, and reconstruct the complex visual world. This course is designed for students who are interested in learning about the fundamental principles and important applications of Computer Vision. This course will introduce a number of fundamental concepts in image processing and expose students to a number of real-world applications. It will guide students through a series of projects to implement cutting-edge algorithms. There will be optional discussion sections on Fridays. Prerequisites: Students should be familiar with Python, Calculus & Linear Algebra.
Terms: Win | Units: 3-4

CS 137A: Principles of Robot Autonomy I (AA 174A, EE 160A)

Basic principles for endowing mobile autonomous robots with perception, planning, and decision-making capabilities. Algorithmic approaches for robot perception, localization, and simultaneous localization and mapping; control of non-linear systems, learning-based control, and robot motion planning; introduction to methodologies for reasoning under uncertainty, e.g., (partially observable) Markov decision processes. Extensive use of the Robot Operating System (ROS) for demonstrations and hands-on activities. Prerequisites: CS 106A or equivalent, CME 100 or equivalent (for linear algebra), and CME 106 or equivalent (for probability theory).
Terms: Aut | Units: 3-4

CS 139: Human-Centered AI

Artificial Intelligence technology can and must be guided by human concerns. The course examines how mental models and user models of AI systems are formed, and how that leads to user expectations. This informs a set of design guidelines for building AI systems that are trustworthy, understandable, fair, and beneficial. The course covers the impact of AI systems on the economy and everyday life, and ethical issues of collecting data and running systems, including respect for persons, beneficence, fairness and justice.
Terms: Spr | Units: 3

CS 140: Operating Systems and Systems Programming

Covers key concepts in computer systems through the lens of operatingnsystem design and implementation. Topics include threads, scheduling,nprocesses, virtual memory, synchronization, multi-core architectures,nmemory consistency, hardware atomics, memory allocators, linking, I/O,nfile systems, and virtual machines. Concepts are reinforced with fournkernel programming projects in the Pintos operating system. This classnmay be taken as an accelerated single-class alternative to the CS111,nCS112 sequence; conversely, the class should not be taken by studentsnwho have already taken CS111 or CS112
Last offered: Winter 2022 | Units: 3-5 | UG Reqs: GER:DB-EngrAppSci

CS 140E: Operating systems design and implementation

Students will implement a simple, clean operating system (virtual memory, processes, file system) in the C programming language, on a rasberry pi computer and use the result to run a variety of devices and implement a final project. All hardware is supplied by the instructor, and no previous experience with operating systems, raspberry pi, or embedded programming is required.
Terms: Win | Units: 3-4

CS 142: Web Applications

Concepts and techniques used in constructing interactive web applications. Browser-side web facilities such as HTML, cascading stylesheets, the document object model, and JavaScript frameworks and Server-side technologies such as server-side JavaScript, sessions, and object-oriented databases. Issues in web security and application scalability. New models of web application deployment. Prerequisite: CS 107.
Last offered: Spring 2023 | Units: 3

CS 143: Compilers

Principles and practices for design and implementation of compilers and interpreters. Topics: lexical analysis; parsing theory; symbol tables; type systems; scope; semantic analysis; intermediate representations; runtime environments; code generation; and basic program analysis and optimization. Students construct a compiler for a simple object-oriented language during course programming projects. Prerequisites: 103 or 103B, 107 equivalent, or consent from instructor.
Terms: Spr | Units: 3-4 | UG Reqs: GER:DB-EngrAppSci

CS 144: Introduction to Computer Networking

Principles and practice. Structure and components of computer networks, with focus on the Internet. Packet switching, layering, and routing. Transport and TCP: reliable delivery over an unreliable network, flow control, congestion control. Network names, addresses and ethernet switching. Includes significant programming component in C/C++; students build portions of the internet TCP/IP software. Prerequisite: CS110.
Terms: Win | Units: 3-4 | UG Reqs: GER:DB-EngrAppSci

CS 145: Data Management and Data Systems

Introduction to the use, design, and implementation of database and data-intensive systems, including data models; schema design; data storage; query processing, query optimization, and cost estimation; concurrency control, transactions, and failure recovery; distributed and parallel execution; semi-structured databases; and data system support for advanced analytics and machine learning. Prerequisites: 103 and 107 (or equivalent).
Terms: Aut | Units: 3-4 | UG Reqs: GER:DB-EngrAppSci

CS 146: Introduction to Game Design and Development

This project-based course provides a survey on designing and engineering video games. Through creating their own games each week, students explore topics including 2D/3D Art, Audio, User Interface design, Production, Narrative Design, Marketing, and Publishing. Speakers from the games industry will provide insights and context during a weekly seminar. Classroom meetings will be used to foster student project discussions, and deepen understanding of material. The course culminates with students forming project teams to create a final video game. Assignments will be completed within the Unity game development engine; prior Unity experience is welcomed but not required. Given class size limitations, an online survey will be used to achieve a diverse class composition. Prerequisite: CS 106 (B or X).
Last offered: Autumn 2018 | Units: 3-4

CS 147: Introduction to Human-Computer Interaction Design

Introduces fundamental methods and principles for designing, implementing, and evaluating user interfaces. Topics: user-centered design, rapid prototyping, experimentation, direct manipulation, cognitive principles, visual design, social software, software tools. Learn by doing: work with a team on a quarter-long design project, supported by lectures, readings, and studios. Prerequisite: 106B or X or equivalent programming experience. Recommended that CS Majors have also taken one of 142, 193P, or 193A.nnPlease note: Less than 5 is only allowed for graduate students.
Terms: Aut | Units: 3-5

CS 147L: Cross-platform Mobile App Development

The fundamentals of cross-platform mobile application development with a focus on the React Native framework (RN). Primary focus on developing best practices in creating apps for both iOS and Android by using Javascript and existing web + mobile development paradigms. Students will explore the unique aspects that made RN a primary tool for mobile development within Facebook, Instagram, Airbnb, Walmart, Tesla, and UberEats. Skills developed over the course will be consolidated by the completion of a final project. Required Prerequisites: CS106B.
Terms: Aut | Units: 3

CS 148: Introduction to Computer Graphics and Imaging

This is the introductory prerequisite course in the computer graphics sequence which introduces students to the technical concepts behind creating synthetic computer generated images. The beginning of the course focuses on using Blender to create visual imagery, as well as an understanding of the underlying mathematical concepts including triangles, normals, interpolation, texture mapping, bump mapping, etc. Then we move on to a more fundamental understanding of light and color, as well as how it impacts computer displays and printers. From this we discuss more thoroughly how light interacts with the environment, and we construct engineering models such as the BRDF and discuss various simplifications into more basic lighting and shading models. Finally, we discuss ray tracing technology for creating virtual images, while drawing parallels between ray tracers and real world cameras in order to illustrate various concepts. Anti-aliasing and acceleration structures are also discussed. The final class project consists of building out a ray tracer to create a visually compelling image. Starter codes and code bits will be provided here and there to aid in development, but this class focuses on what you can do with the code as opposed to what the code itself looks like. Therefore grading is weighted towards in person "demos" of the code in action - creativity and the production of impressive visual imagery are highly encouraged.This is the first course in the computer graphics sequence at Stanford. Topics include: Scanline Rendering; Triangles; Rasterization; Transformations; Shading; Triangle Meshes; Subdivision; Marching Cubes; Textures; Light; Color; Cameras; Displays; Tone Mapping; BRDF; Lighting Equation; Global Illumination; Radiosity; Ray Tracing; Acceleration Structures; Sampling; Antialiasing; Reflection; Transmission; Depth of Field; Motion Blur; Monte Carlo; Bidirectional Ray Tracing; Light Maps.
Terms: Aut | Units: 3-4 | UG Reqs: GER:DB-EngrAppSci, WAY-CE

CS 149: Parallel Computing

This course is an introduction to parallelism and parallel programming. Most new computer architectures are parallel; programming these machines requires knowledge of the basic issues of and techniques for writing parallel software. Topics: varieties of parallelism in current hardware (e.g., fast networks, multicore, accelerators such as GPUs, vector instruction sets), importance of locality, implicit vs. explicit parallelism, shared vs. non-shared memory, synchronization mechanisms (locking, atomicity, transactions, barriers), and parallel programming models (threads, data parallel/streaming, MapReduce, Apache Spark, SPMD, message passing, SIMT, transactions, and nested parallelism). Significant parallel programming assignments will be given as homework. The course is open to students who have completed the introductory CS course sequence through 111.
Terms: Aut | Units: 3-4 | UG Reqs: GER:DB-EngrAppSci

CS 151: Logic Programming

Logic Programming is a style of programming based on symbolic logic. In writing a logic program, the programmer describes the application area of the program (as a set of logical sentences) without reference to the internal data structures or operations of the system executing the program. In this regard, a logic program is more of a specification than an implementation; and logic programs are often called runnable specifications. This course introduces basic logic programming theory, current technology, and examples of common applications, notably deductive databases, logical spreadsheets, enterprise management, computational law, and game playing. Work in the course takes the form of readings and exercises, weekly programming assignments, and a term-long project. Prerequisite: CS 106B or equivalent.
Terms: Spr | Units: 3

CS 152: Trust and Safety (COMM 122, INTLPOL 267)

Trust and Safety is an emerging field of professional and academic effort to build technologies that allow people to positively use the internet while being safe from harm. This course provides an introduction to the ways online services are abused to cause real human harm and the potential social, operational, product, legal and engineering responses. Students will learn about fraud, account takeovers, the use of social media by terrorists, misinformation, child exploitation, harassment, bullying and self-harm. This will include studying both the technical and sociological roots of these harms and the ways various online providers have responded. The class is taught by a practitioner, a professor of communication, a political scientist, and supplemented by guest lecturers from tech companies and nonprofits. Cross-disciplinary teams of students will spend the quarter building a technical and policy solution to a real trust and safety challenge, which will include the application of AI technologies to detecting and stopping abuse. For those taking this course for CS credit, the prerequisite is CS106B or equivalent programming experience and this course fulfills the Technology in Society requirement. Content note: This class will cover real-world harmful behavior and expose students to potentially upsetting material.
Terms: Spr | Units: 3

CS 153: Applied Security at Scale

This course is designed to help students understand the unique challenges of solving security problems at scale, and is taught by senior technology leaders from companies tackling hardware and software security for hundreds of millions of people. The course is split into six parts covering major themes: Basics, Confidential Computing, Privacy, Trust, Safety and Real World. The format of the class will include guest lectures from experts in each theme, covering a blend of both theory and real world scenarios. Prerequisite: CS110/CS111. Recommended but not required: CS155.
Terms: Win, Spr | Units: 3

CS 154: Introduction to the Theory of Computation

This course provides a mathematical introduction to the following questions: What is computation? Given a computational model, what problems can we hope to solve in principle with this model? Besides those solvable in principle, what problems can we hope to efficiently solve? In many cases we can give completely rigorous answers; in other cases, these questions have become major open problems in computer science and mathematics. By the end of this course, students will be able to classify computational problems in terms of their computational complexity (Is the problem regular? Not regular? Decidable? Recognizable? Neither? Solvable in P? NP-complete? PSPACE-complete?, etc.). Students will gain a deeper appreciation for some of the fundamental issues in computing that are independent of trends of technology, such as the Church-Turing Thesis and the P versus NP problem. Prerequisites: CS 103 or 103B.
Terms: Aut | Units: 3-4 | UG Reqs: GER:DB-EngrAppSci

CS 155: Computer and Network Security

For juniors, seniors, and first-year graduate students. Principles of computer systems security. Attack techniques and how to defend against them. Topics include: network attacks and defenses, operating system security, application security (web, apps, databases), malware, privacy, and security for mobile devices. Course projects focus on building reliable software. Prerequisite: 110. Recommended: basic Unix.
Terms: Spr | Units: 3 | UG Reqs: GER:DB-EngrAppSci

CS 157: Computational Logic

Rigorous introduction to Symbolic Logic from a computational perspective. Encoding information in the form of logical sentences. Reasoning with information in this form. Overview of logic technology and its applications - in mathematics, science, engineering, business, law, and so forth. Topics include the syntax and semantics of Propositional Logic, Relational Logic, and Herbrand Logic, validity, contingency, unsatisfiability, logical equivalence, entailment, consistency, natural deduction (Fitch), mathematical induction, resolution, compactness, soundness, completeness.
Terms: Aut | Units: 3 | UG Reqs: GER:DB-EngrAppSci, WAY-FR

CS 161: Design and Analysis of Algorithms

Worst and average case analysis. Recurrences and asymptotics. Efficient algorithms for sorting, searching, and selection. Data structures: binary search trees, heaps, hash tables. Algorithm design techniques: divide-and-conquer, dynamic programming, greedy algorithms, amortized analysis, randomization. Algorithms for fundamental graph problems: minimum-cost spanning tree, connected components, topological sort, and shortest paths. Possible additional topics: network flow, string searching. Prerequisite: 106B or 106X; 103 or 103B; 109 or STATS 116.
Terms: Aut, Win, Sum | Units: 3-5 | UG Reqs: GER:DB-EngrAppSci, WAY-FR

CS 161ACE: Problem-Solving Lab for CS161

Additional problem solving practice for CS161. 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. Concurrent enrollment in CS 161 required. Limited enrollment, permission of instructor, and application required.
Terms: Aut, Win | Units: 1
Instructors: ; Sharkov, S. (PI)

CS 163: The Practice of Theory Research

(Previously numbered CS 353). Introduction to research in the Theory of Computing, with an emphasis on research methods (the practice of research), rather than on any particular body of knowledge. The students will participate in a highly structured research project: starting from reading research papers from a critical point of view and conducting bibliography searches, through suggesting new research directions, identifying relevant technical areas, and finally producing and communicating new insights. The course will accompany the projects with basic insights on the main ingredients of research. Research experience is not required, but basic theory knowledge and mathematical maturity are expected. The target participants are advanced undergrads as well as MS students with interest in CS theory. Prerequisites: CS161 and CS154. Limited class size.
Last offered: Winter 2022 | Units: 3 | UG Reqs: WAY-SMA

CS 166: Data Structures

This course is a deep dive into the design, analysis, implementation,nand theory of data structures. Over the course of the quarter, we'llnexplore fundamental techniques in data structure design (isometries,namortization, randomization, etc.) and explore perspectives andnintuitions useful for developing new data structures. We'll do so bynsurveying classic data structures like Fibonacci heaps and suffix trees,nas well as more modern data structures like count-min sketches and rangenminimum queries. By the time we've finished, we'll have seen some trulynbeautiful strategies for solving problems efficiently. Prerequisites:nCS107 and CS161.
Last offered: Spring 2023 | Units: 3-4

CS 168: The Modern Algorithmic Toolbox

This course will provide a rigorous and hands-on introduction to the central ideas and algorithms that constitute the core of the modern algorithms toolkit. Emphasis will be on understanding the high-level theoretical intuitions and principles underlying the algorithms we discuss, as well as developing a concrete understanding of when and how to implement and apply the algorithms. The course will be structured as a sequence of one-week investigations; each week will introduce one algorithmic idea, and discuss the motivation, theoretical underpinning, and practical applications of that algorithmic idea. Each topic will be accompanied by a mini-project in which students will be guided through a practical application of the ideas of the week. Topics include hashing, dimension reduction and LSH, boosting, linear programming, gradient descent, sampling and estimation, and an introduction to spectral techniques. Prerequisites: CS107 and CS161, or permission from the instructor.
Terms: Spr | Units: 3-4

CS 170: Stanford Laptop Orchestra: Composition, Coding, and Performance (MUSIC 128)

Classroom instantiation of the Stanford Laptop Orchestra (SLOrk) which includes public performances. An ensemble of more than 20 humans, laptops, controllers, and special speaker arrays designed to provide each computer-mediated instrument with its sonic identity and presence. Topics and activities include issues of composing for laptop orchestras, instrument design, sound synthesis, programming, and live performance. May be repeated four times for credit. Space is limited; see https://ccrma.stanford.edu/courses/128 for information about the application and enrollment process. May be repeat for credit
Terms: Spr | Units: 1-5 | UG Reqs: WAY-CE | Repeatable 4 times (up to 20 units total)

CS 173A: Foundations of Computational Human Genomics (BIOMEDIN 173A, DBIO 173A)

(Only one of 173A or 273A counts toward any CS degree program.) A coder's primer to Computational Biology through the most amazing "source code" known: your genome. Examine the major forces of genome "code development" - positive, negative and neutral selection. Learn about genome sequencing (discovering your source code from fragments); genome content: variables (genes), control-flow (gene regulation), run-time stacks (epigenomics) and memory leaks (repeats); personalized genomics and genetic disease (code bugs); genome editing (code injection); ultra conservation (unsolved mysteries) and code modifications behind amazing animal adaptations. Course includes primers on molecular biology and text processing. Prerequisites: comfortable coding in Python from the command line.
Terms: Win | Units: 3-4

CS 177: Human Centered Product Management

Ask any product person what the most important skills are for PMs and they'll say interpersonal dynamics-- negotiation, communication, conflict resolution, interviewing and more. This class will look at the role of product management through a human-centered lens, including customers and coworkers. As well, students will experience the Agile-Lean-UX development process. Course enrollment will be capped, an application will be sent out first day of class. Prerequisite: CS106A&B or equivalent. This class could be taken before or after 147.
Terms: Aut | Units: 3-4

CS 181: Computers, Ethics, and Public Policy

Ethical and social issues related to the development and use of computer technology. Ethical theory, and social, political, and legal considerations. Scenarios in problem areas: privacy, reliability and risks of complex systems, and responsibility of professionals for applications and consequences of their work. Prerequisite: CS106A. To take this course, students need permission of instructor and may need to complete an assignment due at the first day of class. Please see https://cs181.stanford.edu for more information.
Terms: Spr | Units: 4 | UG Reqs: GER:EC-EthicReas, WAY-ER

CS 181W: Computers, Ethics, and Public Policy (WIM)

Writing-intensive version of CS181. Satisfies the WIM requirement for Computer Science, Engineering Physics, STS, and Math/Comp Sci undergraduates. To take this course, students need permission of instructor and may need to complete an assignment due at the first day of class. Please see https://cs181.stanford.edu for more information.
Terms: Spr | Units: 4 | UG Reqs: GER:EC-EthicReas, WAY-ER

CS 182: Ethics, Public Policy, and Technological Change (COMM 180, ETHICSOC 182, PHIL 82, POLISCI 182, PUBLPOL 182)

Examination of recent developments in computing technology and platforms through the lenses of philosophy, public policy, social science, and engineering.  Course is organized around five main units: algorithmic decision-making and bias; data privacy and civil liberties; artificial intelligence and autonomous systems; the power of private computing platforms; and issues of diversity, equity, and inclusion in the technology sector.  Each unit considers the promise, perils, rights, and responsibilities at play in technological developments. Prerequisite: CS106A.
Last offered: Winter 2023 | Units: 5 | UG Reqs: WAY-ER

CS 182W: Ethics, Public Policy, and Technological Change (WIM)

Writing-intensive version of CS182. Satisfies the WIM requirement for Computer Science, Engineering Physics, STS, Math/Comp Sci, and Data Science undergraduates (and is only open to those majors). Prerequisite: CS106A. See CS182 for lecture day/time information. Enroll in either CS 182 or CS 182W,not both. Enrollment in WIM version of the course is limited to 125students. Enrollment is restricted to seniors and coterminal students until January 9, 2023. Starting January 9, 2023, enrollment will open to all students if additional spaces remain available in the class.
Last offered: Winter 2023 | Units: 5 | UG Reqs: WAY-ER

CS 183E: Effective Leadership in High-Tech

You will undoubtedly leave Stanford with the technical skills to excel in your first few jobs. But non-technical skills are just as critical to making a difference. This seminar is taught by two industry veterans in engineering leadership and product management. In a small group setting, we will explore how you can be a great individual contributor (communicating with clarity, getting traction for your ideas, resolving conflict, and delivering your best work) and how you can transition into leadership roles (finding leadership opportunities, creating a great team culture, hiring and onboarding new team members). We will end by turning back to your career (picking your first job and negotiating your offer, managing your career changes, building a great network, and succeeding with mentors). Prerequisites: Preference given to seniors and co-terms in Computer Science and related majors. Enrollment limited and application required for admittance.
Last offered: Autumn 2022 | Units: 1

CS 184: Bridging Policy and Tech Through Design (PUBLPOL 170)

This project-based course aims to bring together students from computer science and the social sciences to work with external partner organizations at the nexus of digital technology and public policy. Students will collaborate in interdisciplinary teams on a problem with a partner organization. Along with the guidance of faculty mentors and the teaching staff, students will engage in a project with outcomes ranging from policy memos and white papers to data visualizations and software. Possible projects suggested by partner organizations will be presented at an information session in early March. Following the infosession, a course application will open for teams to be selected before the start of Spring Quarter. Students may apply to a project with a partner organization or with a preformed team and their own idea to be reviewed for approval by the course staff. There will be one meeting per week for the full class and at least one weekly meeting with the project-based team mentors. Prerequisites: Appropriate preparation depends on the nature of the project proposed, and will be verified by the teaching staff based on your application.
Last offered: Spring 2022 | Units: 3-4

CS 185: Coding with LLM Assistants

In under a year, LLM assistants have become a tool that many professional software engineers can¿t imagine living without. In this course, we will explore that phenomenon and design curriculum and pedagogical adaptations to it. In this class, we will: Conduct a survey-based ethnography of how professional software engineers are using LLMs (e.g., do they find it more useful for architectural planning vs code creation vs code explanation vs identifying bugs; what percentage of the day are they using it; how comfortable do they feel using it to work in frameworks or languages they are themselves unfamiliar with, etc); Engage in structured exploration using different LLM coding assistant tools for actual Stanford assignments (in classes they¿ve already completed) and to perform new tasks in unfamiliar languages, and reflect on those experiences; Read what others are saying about the process of coding with LLMs through review of popular sources (e.g., podcasts, blog posts); Learn an overview of the science of teaching and learning, and what is needed for an effective education in software engineering; Design new curricular materials that address the new needs and practices of professional software engineers, using principles of good pedagogical design.
Terms: Aut | Units: 2

CS 187: Design for Advocacy

The COVID pandemic has both revealed many of our underlying civilization problems and unleashed a desire for radical change. Effective responses will require people who know how to collaborate creatively and confidently, and act in systems with self-awareness. In this project based course, we will embrace complexity without being paralyzed by it. Working on a real-world challenge related to social health and civic fabric (e.g. political polarization, loneliness and social isolation) you will practice identifying high-leverage entry points for change, rigorously framing problems, and making process and product development decisions by evaluating impact. The course draws from HCD, systems thinking, strategic foresight, emotional intelligence, and agile team operations to prepare you to be even more successful as a designer, researcher, product manager, entrepreneur, or activist. If you tend to be more theory oriented, this course will get you into action. If you're quick to action, this course will give you a wider foundation for making a positive impact. Prerequisite: Strongly recommend CS147, ME216A or a d.school class on needfinding.
| Units: 3-4

CS 190: Software Design Studio

This course teaches the art of software design: how to decompose large complex systems into classes that can be implemented and maintained easily. Topics include the causes of complexity, modular design, techniques for creating deep classes, minimizing the complexity associated with exceptions, in-code documentation, and name selection. The class involves significant system software implementation and uses an iterative approach consisting of implementation, review, and revision. The course is taught in a studio format with in-class discussions and code reviews in addition to lectures. Prerequisite: CS 140 or equivalent. Apply at: https://web.stanford.edu/class/cs190
Terms: Win | Units: 3-4
Instructors: ; Ousterhout, J. (PI)

CS 191: Senior Project

Restricted to Computer Science students. Group or individual research projects under faculty direction. Register using instructor's section number. A project can be either a significant software application or publishable research. Software application projects include a research component, substantial programming, and are comparable in scale to shareware programs or commercial applications. Research projects may result in a paper publishable in an academic journal or presentable at a conference. Public presentation of final application or research results is required. Prerequisite: Completion of at least 135 units and consent of instructor. Project proposal form is required before the beginning of the quarter of enrollment: https://cs.stanford.edu/degrees/undergrad/Senior%20Project%20Proposal.pdfhttps://cs.stanford.edu/degrees/undergrad/Senior%20Project%20Proposal.pdf
Terms: Aut, Win, Spr, Sum | Units: 1-6 | Repeatable for credit
Instructors: ; Achour, S. (PI); Agrawala, M. (PI); Aiken, A. (PI); Altman, R. (PI); Angst, R. (PI); Bailis, P. (PI); Batzoglou, S. (PI); Bejerano, G. (PI); Bernstein, M. (PI); Blikstein, P. (PI); Bohg, J. (PI); Boneh, D. (PI); Borenstein, J. (PI); Bouland, A. (PI); Boyd, S. (PI); Cain, J. (PI); Cao, P. (PI); Charikar, M. (PI); Cheriton, D. (PI); Dally, B. (PI); Demszky, D. (PI); Dill, D. (PI); Dror, R. (PI); Durumeric, Z. (PI); Engler, D. (PI); Ermon, S. (PI); Fatahalian, K. (PI); Fedkiw, R. (PI); Feigenbaum, E. (PI); Fikes, R. (PI); Finn, C. (PI); Fisher, K. (PI); Fogg, B. (PI); Follmer, S. (PI); Fox, A. (PI); Fox, E. (PI); Genesereth, M. (PI); Girod, B. (PI); Goel, A. (PI); Goel, S. (PI); Goodman, N. (PI); Gregg, C. (PI); Guibas, L. (PI); Haber, N. (PI); Hanrahan, P. (PI); Hennessy, J. (PI); Horowitz, M. (PI); Icard, T. (PI); James, D. (PI); Johari, R. (PI); Jurafsky, D. (PI); Katti, S. (PI); Khatib, O. (PI); Kjoelstad, F. (PI); Kochenderfer, M. (PI); Koller, D. (PI); Koyejo, S. (PI); Kozyrakis, C. (PI); Kundaje, A. (PI); Lam, M. (PI); Landay, J. (PI); Latombe, J. (PI); Lee, C. (PI); Leskovec, J. (PI); Levis, P. (PI); Levitt, M. (PI); Levoy, M. (PI); Li, F. (PI); Liang, P. (PI); Liu, K. (PI); Ma, T. (PI); Manning, C. (PI); Mazieres, D. (PI); McClelland, J. (PI); McKeown, N. (PI); Mirhoseini, A. (PI); Mitchell, J. (PI); Mitra, S. (PI); Montanari, A. (PI); Musen, M. (PI); Nayak, P. (PI); Ng, A. (PI); Niebles Duque, J. (PI); Olukotun, O. (PI); Ousterhout, J. (PI); Paepcke, A. (PI); Pande, V. (PI); Parlante, N. (PI); Pea, R. (PI); Piech, C. (PI); Plotkin, S. (PI); Plummer, R. (PI); Poldrack, R. (PI); Potts, C. (PI); Prabhakar, B. (PI); Pratt, V. (PI); Raghavan, P. (PI); Rajaraman, A. (PI); Re, C. (PI); Reingold, O. (PI); Roberts, E. (PI); Rosenblum, M. (PI); Roughgarden, T. (PI); Rubin, D. (PI); Sadigh, D. (PI); Sahami, M. (PI); Salisbury, J. (PI); Savarese, S. (PI); Saxena, A. (PI); Schwarz, K. (PI); Shoham, Y. (PI); Sosic, R. (PI); Stamos, A. (PI); Subramonyam, H. (PI); Tan, L. (PI); Thrun, S. (PI); Tobagi, F. (PI); Trippel, C. (PI); Ullman, J. (PI); Valiant, G. (PI); Van Roy, B. (PI); Vitercik, E. (PI); Wang, G. (PI); Wetzstein, G. (PI); Widom, J. (PI); Winograd, T. (PI); Winstein, K. (PI); Wodtke, C. (PI); Wootters, M. (PI); Wu, J. (PI); Yamins, D. (PI); Yang, D. (PI); Yeung, S. (PI); Young, P. (PI); Zaharia, M. (PI); Zelenski, J. (PI); Zou, J. (PI); Rutherford, E. (GP)

CS 191W: Writing Intensive Senior Research Project

Restricted to Computer Science students. Writing-intensive version of CS191. Register using instructor's section number. Prerequisite: Completion of at least 135 units and consent of instructor. Project proposal form is required before the beginning of the quarter of enrollment: https://cs.stanford.edu/degrees/undergrad/Senior%20Project%20Proposal.pdf
Terms: Aut, Win, Spr | Units: 3-6 | Repeatable for credit
Instructors: ; Achour, S. (PI); Agrawala, M. (PI); Aiken, A. (PI); Altman, R. (PI); Barrett, C. (PI); Batzoglou, S. (PI); Bejerano, G. (PI); Bernstein, M. (PI); Blikstein, P. (PI); Bohg, J. (PI); Boneh, D. (PI); Borenstein, J. (PI); Bouland, A. (PI); Boyd, S. (PI); Brunskill, E. (PI); Cain, J. (PI); Cao, P. (PI); Charikar, M. (PI); Cheriton, D. (PI); Dally, B. (PI); Demszky, D. (PI); Dill, D. (PI); Dror, R. (PI); Durumeric, Z. (PI); Engler, D. (PI); Ermon, S. (PI); Fatahalian, K. (PI); Fedkiw, R. (PI); Feigenbaum, E. (PI); Fikes, R. (PI); Finn, C. (PI); Fisher, K. (PI); Fogg, B. (PI); Fox, A. (PI); Fox, E. (PI); Genesereth, M. (PI); Girod, B. (PI); Goel, A. (PI); Goel, S. (PI); Goodman, N. (PI); Gregg, C. (PI); Guestrin, C. (PI); Guibas, L. (PI); Haber, N. (PI); Hanrahan, P. (PI); Hashimoto, T. (PI); Hennessy, J. (PI); Horowitz, M. (PI); Icard, T. (PI); James, D. (PI); Johari, R. (PI); Jurafsky, D. (PI); Katti, S. (PI); Khatib, O. (PI); Kjoelstad, F. (PI); Kochenderfer, M. (PI); Koller, D. (PI); Koyejo, S. (PI); Kozyrakis, C. (PI); Kundaje, A. (PI); Lam, M. (PI); Landay, J. (PI); Latombe, J. (PI); Leskovec, J. (PI); Levis, P. (PI); Levitt, M. (PI); Levoy, M. (PI); Li, F. (PI); Liang, P. (PI); Liu, K. (PI); Manning, C. (PI); Mazieres, D. (PI); McClelland, J. (PI); McKeown, N. (PI); Mirhoseini, A. (PI); Mitchell, J. (PI); Mitra, S. (PI); Montanari, A. (PI); Montgomery, S. (PI); Musen, M. (PI); Nayak, P. (PI); Ng, A. (PI); Niebles Duque, J. (PI); Okamura, A. (PI); Olukotun, O. (PI); Ousterhout, J. (PI); Paepcke, A. (PI); Pande, V. (PI); Parlante, N. (PI); Pea, R. (PI); Piech, C. (PI); Plotkin, S. (PI); Plummer, R. (PI); Potts, C. (PI); Prabhakar, B. (PI); Pratt, V. (PI); Raghavan, P. (PI); Rajaraman, A. (PI); Re, C. (PI); Reingold, O. (PI); Roberts, E. (PI); Rosenblum, M. (PI); Saberi, A. (PI); Sadigh, D. (PI); Sahami, M. (PI); Salisbury, J. (PI); Savarese, S. (PI); Saxena, A. (PI); Schwarz, K. (PI); Shoham, Y. (PI); Stamos, A. (PI); Tan, L. (PI); Thrun, S. (PI); Tobagi, F. (PI); Trippel, C. (PI); Ullman, J. (PI); Valiant, G. (PI); Van Roy, B. (PI); Vitercik, E. (PI); Wang, G. (PI); Wetzstein, G. (PI); Widom, J. (PI); Winograd, T. (PI); Winstein, K. (PI); Wodtke, C. (PI); Wootters, M. (PI); Wu, J. (PI); Yamins, D. (PI); Yang, D. (PI); Yeung, S. (PI); Young, P. (PI); Zaharia, M. (PI); Zelenski, J. (PI); Zou, J. (PI); Rutherford, E. (GP)

CS 192: Programming Service Project

Restricted to Computer Science students. Appropriate academic credit (without financial support) is given for volunteer computer programming work of public benefit and educational value. Register using the section number associated with the instructor. Prerequisite: consent of instructor.
Terms: Aut, Win, Spr, Sum | Units: 1-4 | Repeatable for credit

CS 193A: Android Programming

Introduction to building applications for Android platform. Examines key concepts of Android programming: tool chain, application life-cycle, views, controls, intents, designing mobile UIs, networking, threading, and more. Features weekly lectures and a series of small programming projects. Phone not required, but a phone makes the projects more engaging. Prerequisites: 106B or Java experience at 106B level. Enrollment limited and application required.
Last offered: Winter 2019 | Units: 3

CS 193C: Client-Side Internet Technologies

Client-side technologies used to create web sites such as Google maps or Gmail. Includes HTML5, CSS, JavaScript, the Document Object Model (DOM), and Ajax. Prerequisite: programming experience at the level of CS106A.
Terms: Sum | Units: 3
Instructors: ; Young, P. (PI)

CS 193P: iOS Application Development

Build mobile applications using tools and APIs in iOS. Developing applications for the iPhone and iPad requires integration of numerous concepts including functional programming, object-oriented programming, computer-human interfaces, graphics, animation, reactive interfaces, Model-View-Intent (MVI) and Model-View-View-Model (MVVM) design paradigms, object-oriented databases, networking, and interactive performance considerations including multi-threading. This course will require you to learn a new programming language (Swift) as well as the iOS development environment, SwiftUI. Prerequisites: All coursework (homework and final project) involves writing code, so writing a lot of code should not be new to you (coding experience in almost any language is valuable, but object-oriented (e.g. CS108) and/or functional programming languages (e.g. CS43) are most highly recommended).  CS106A and B (or X) and CS107 (or equivalent) are hard prerequisites. Any other courses that help to develop your maturity as a programmer are also recommended.
Last offered: Spring 2023 | Units: 3

CS 193Q: Introduction to Python Programming

CS193Q teaches basic Python programming with a similar end-condition to CS106AP: strings, lists, numbers, dicts, loops, logic, functions, testings, decomposition and style, and modules. CS193Q assumes knowledge of some programming language, and proceeds by showing how each common programming idea is expressed in Python. CS193Q moves very quickly, meeting 3 times for 4 hours for a total of 12 hours which is a mixture of lecture and lab time.
Terms: Aut | Units: 1
Instructors: ; Parlante, N. (PI)

CS 193U: Video Game Development in C++ and Unreal Engine

Hands-on game development in C++ using Unreal Engine 4, the game engine that triple-A games like Fortnite, PUBG, and Gears of War are all built on. Students will be introduced to the Unreal editor, game frameworks, physics, AI, multiplayer and networking, UI, and profiling and optimization. Project-based course where you build your own games and gain a solid foundation in Unreal's architecture that will apply to any future game projects. Pre-requisites: CS106B or CS106X required. CS107 and CS110 recommended.
Last offered: Autumn 2020 | Units: 3

CS 193X: Web Programming Fundamentals

Introduction to full-stack web development with an emphasis on fundamentals. Client-side topics include layout and rendering through HTML and CSS, event-driven programming through JavaScript, and single-threaded asynchronous programming techniques including Promises. Focus on modern standardized APIs and best practices. Server-side topics include the development of RESTful APIs, JSON services, and basic server-side storage techniques. Covers desktop and mobile web development. Prerequisite: 106B or equivalent.
Last offered: Spring 2023 | Units: 3

CS 194: Software Project

Design, specification, coding, and testing of a significant team programming project under faculty supervision. Documentation includes capture of project rationale, design and discussion of key performance indicators, a weekly progress log and a software architecture diagram. Public demonstration of the project at the end of the quarter. Preference given to seniors. May be repeated for credit. Prerequisites: CS109 and CS161.
Terms: Win, Spr | Units: 3 | Repeatable for credit

CS 194A: Android Programming Workshop

Learn basic, foundational techniques for developing Android mobile applications and apply those toward building a single or multi page, networked Android application.
Last offered: Autumn 2021 | Units: 1

CS 194H: User Interface Design Project

Advanced methods for designing, prototyping, and evaluating user interfaces to computing applications. Novel interface technology, advanced interface design methods, and prototyping tools. Substantial, quarter-long course project that will be presented in a public presentation. Prerequisites: CS 147, or permission of instructor.
Terms: Win | Units: 3-4
Instructors: ; Landay, J. (PI); Zhou, G. (TA)

CS 194W: Software Project (WIM)

Restricted to Computer Science and Electrical Engineering undergraduates. Writing-intensive version of CS194. Preference given to seniors. Prerequisites: CS109 and CS161.
Terms: Win, Spr | Units: 3

CS 196: Computer Consulting (VPTL 196)

Focus is on Macintosh and Windows operating system maintenance, and troubleshooting through hardware and software foundation and concepts. Topics include operating systems, networking, security, troubleshooting methodology with emphasis on Stanford's computing environment. Final project. Not a programming course.
Last offered: Winter 2020 | Units: 2

CS 197: Computer Science Research

An onramp for students interested in breaking new ground in the frontiers of computer science. Course format features faculty lectures introducing the fundamentals of computer science research, alongside special interest group meetings that provide mentorship and feedback on a real research project. Lecture topics include reading technical papers, practicing oral communication and technical writing skills, and independently formulating research questions. Any student may enroll for 4 units and select a research area (AI, HCI, Systems, etc.) for a quarter-long team programming project with a Ph.D. student mentor. Space may be limited. Prerequisite: CS106B.
Terms: Aut, Win, Spr | Units: 3-4

CS 197C: Computer Science Research: CURIS Internship Onramp

A version of CS 197 designed specifically for students who will be participating in spring/summer CURIS internships OR have an ongoing research project with a (Ph.D. student or professor) mentor in the Stanford Computer Science department. An onramp for students interested in breaking new ground in the frontiers of computer science. Course format features faculty lectures introducing the fundamentals of computer science research, alongside mentorship and feedback from the CURIS or research mentor on a real research project. Students will attend the same lectures as CS197 and may enroll for 3 units. Lecture topics include reading technical papers, practicing oral communication and technical writing skills, and independently formulating research questions. Students must have commitment from their CURIS or research mentor for weekly check-in meetings. Prerequisite: CS106B.
Terms: Spr | Units: 3
Instructors: ; Miranda, B. (PI); Xu, M. (TA)

CS 198: Teaching Computer Science

Students lead a discussion section of 106A while learning how to teach a programming language at the introductory level. Focus is on teaching skills, techniques, and course specifics. Application and interview required; see http://cs198.stanford.edu.
Terms: Aut, Win, Spr | Units: 3-4

CS 198B: Additional Topics in Teaching Computer Science

Students build on the teaching skills developed in CS198. Focus is on techniques used to teach topics covered in CS106B. Prerequisite: successful completion of CS198.
Terms: Aut, Win, Spr | Units: 1

CS 199: Independent Work

Special study under faculty direction, usually leading to a written report. Register using instructor's section number. Letter grade; if not appropriate, enroll in CS199P. Prerequisite: consent of instructor.
Terms: Aut, Win, Spr, Sum | Units: 1-6 | Repeatable for credit
Instructors: ; Achour, S. (PI); Adeli, E. (PI); Agrawala, M. (PI); Aiken, A. (PI); Altman, R. (PI); Anari, N. (PI); Bailis, P. (PI); Barrett, C. (PI); Batzoglou, S. (PI); Bejerano, G. (PI); Bernstein, M. (PI); Blikstein, P. (PI); Bohg, J. (PI); Boneh, D. (PI); Borenstein, J. (PI); Bouland, A. (PI); Boyd, S. (PI); Brunskill, E. (PI); Cain, J. (PI); Cao, P. (PI); Chang, M. (PI); Charikar, M. (PI); Cheriton, D. (PI); Dally, B. (PI); Demszky, D. (PI); Dill, D. (PI); Dror, R. (PI); Durumeric, Z. (PI); Engler, D. (PI); Ermon, S. (PI); Fatahalian, K. (PI); Fedkiw, R. (PI); Feigenbaum, E. (PI); Fikes, R. (PI); Finn, C. (PI); Fisher, K. (PI); Fogg, B. (PI); Fox, A. (PI); Fox, E. (PI); Ganguli, S. (PI); Genesereth, M. (PI); Girod, B. (PI); Goel, A. (PI); Goodman, N. (PI); Gregg, C. (PI); Grimes, A. (PI); Guibas, L. (PI); Haber, N. (PI); Hanrahan, P. (PI); Hashimoto, T. (PI); Hennessy, J. (PI); Ho, D. (PI); Horowitz, M. (PI); Icard, T. (PI); James, D. (PI); Johari, R. (PI); Jurafsky, D. (PI); Katti, S. (PI); Khatib, O. (PI); Kjoelstad, F. (PI); Kochenderfer, M. (PI); Koller, D. (PI); Koyejo, S. (PI); Kozyrakis, C. (PI); Kundaje, A. (PI); Lam, M. (PI); Landay, J. (PI); Latombe, J. (PI); Lee, C. (PI); Leskovec, J. (PI); Levis, P. (PI); Levitt, M. (PI); Levoy, M. (PI); Li, F. (PI); Liang, P. (PI); Lin, H. (PI); Liu, K. (PI); Manning, C. (PI); Mazieres, D. (PI); McKeown, N. (PI); Mirhoseini, A. (PI); Mitchell, J. (PI); Mitra, S. (PI); Musen, M. (PI); Nayak, P. (PI); Ng, A. (PI); Niebles Duque, J. (PI); Olukotun, O. (PI); Ousterhout, J. (PI); Paepcke, A. (PI); Pande, V. (PI); Parlante, N. (PI); Patrignani, M. (PI); Pavone, M. (PI); Pea, R. (PI); Piech, C. (PI); Plotkin, S. (PI); Plummer, R. (PI); Potts, C. (PI); Prabhakar, B. (PI); Pratt, V. (PI); Raghavan, P. (PI); Rajaraman, A. (PI); Re, C. (PI); Reingold, O. (PI); Roberts, E. (PI); Rosenblum, M. (PI); Rubin, D. (PI); Rubinstein, A. (PI); Sadigh, D. (PI); Sahami, M. (PI); Salisbury, J. (PI); Savarese, S. (PI); Saxena, A. (PI); Schwarz, K. (PI); Shoham, Y. (PI); Stanford, J. (PI); Subramonyam, H. (PI); Tan, L. (PI); Thrun, S. (PI); Tobagi, F. (PI); Trippel, C. (PI); Ullman, J. (PI); Valiant, G. (PI); Van Roy, B. (PI); Vitercik, E. (PI); Widom, J. (PI); Winograd, T. (PI); Winstein, K. (PI); Wodtke, C. (PI); Wootters, M. (PI); Wu, J. (PI); Yamins, D. (PI); Yan, L. (PI); Yang, D. (PI); Yeung, S. (PI); Young, P. (PI); Zaharia, M. (PI); Zelenski, J. (PI); Zou, J. (PI); Rutherford, E. (GP)

CS 199P: Independent Work

Special study under faculty direction, usually leading to a written report. Register using instructor's section number. CR/NC only, if not appropriate, enroll in CS199. Prerequisite: consent of instructor.
Terms: Aut, Win, Spr, Sum | Units: 1-6 | Repeatable for credit
Instructors: ; Achour, S. (PI); Agrawala, M. (PI); Aiken, A. (PI); Altman, R. (PI); Angst, R. (PI); Barrett, C. (PI); Batzoglou, S. (PI); Bejerano, G. (PI); Bernstein, M. (PI); Blikstein, P. (PI); Boneh, D. (PI); Borenstein, J. (PI); Bouland, A. (PI); Brunskill, E. (PI); Cain, J. (PI); Cao, P. (PI); Charikar, M. (PI); Cheriton, D. (PI); Dally, B. (PI); Dill, D. (PI); Dror, R. (PI); Durumeric, Z. (PI); Engler, D. (PI); Fedkiw, R. (PI); Feigenbaum, E. (PI); Fikes, R. (PI); Finn, C. (PI); Fisher, K. (PI); Fogg, B. (PI); Fox, A. (PI); Fox, E. (PI); Genesereth, M. (PI); Girod, B. (PI); Goel, A. (PI); Goodman, N. (PI); Grimes, A. (PI); Guibas, L. (PI); Hanrahan, P. (PI); Hashimoto, T. (PI); Hennessy, J. (PI); Horowitz, M. (PI); James, D. (PI); Johari, R. (PI); Jurafsky, D. (PI); Katti, S. (PI); Khatib, O. (PI); Kochenderfer, M. (PI); Koller, D. (PI); Koyejo, S. (PI); Kozyrakis, C. (PI); Kundaje, A. (PI); Lam, M. (PI); Landay, J. (PI); Latombe, J. (PI); Lee, C. (PI); Leskovec, J. (PI); Levis, P. (PI); Levitt, M. (PI); Levoy, M. (PI); Li, F. (PI); Liang, P. (PI); Lin, H. (PI); Liu, K. (PI); Manning, C. (PI); Mazieres, D. (PI); McKeown, N. (PI); Mirhoseini, A. (PI); Mitchell, J. (PI); Mitra, S. (PI); Musen, M. (PI); Nayak, P. (PI); Ng, A. (PI); Olukotun, O. (PI); Ousterhout, J. (PI); Parlante, N. (PI); Pavone, M. (PI); Piech, C. (PI); Plotkin, S. (PI); Plummer, R. (PI); Prabhakar, B. (PI); Pratt, V. (PI); Raghavan, P. (PI); Rajaraman, A. (PI); Re, C. (PI); Reingold, O. (PI); Roberts, E. (PI); Rosenblum, M. (PI); Roughgarden, T. (PI); Sahami, M. (PI); Salisbury, J. (PI); Savarese, S. (PI); Saxena, A. (PI); Schwarz, K. (PI); Shoham, Y. (PI); Socher, R. (PI); Tan, L. (PI); Thrun, S. (PI); Tobagi, F. (PI); Trippel, C. (PI); Ullman, J. (PI); Valiant, G. (PI); Van Roy, B. (PI); Vitercik, E. (PI); Widom, J. (PI); Winograd, T. (PI); Winstein, K. (PI); Wodtke, C. (PI); Wootters, M. (PI); Wu, J. (PI); Yamins, D. (PI); Yan, L. (PI); Yang, D. (PI); Young, P. (PI); Zaharia, M. (PI); Zelenski, J. (PI); Zou, J. (PI); Rutherford, E. (GP)

CS 202: Law for Computer Science Professionals

Businesses are built on ideas. Today's successful companies are those that most effectively generate, protect, and exploit new and valuable business ideas. Over the past 40 years, intellectual capital has emerged as the leading assets class. Ocean Tomo® estimates that over 80% of the market value of S&P 500 corporations now stems from intangible assets, which consist largely of intellectual property (IP) assets (e.g., the company and product names, logos and designs; patentable inventions; proprietary software and databases, and other proprietary product, manufacturing and marketing information). It is therefore vital for entrepreneurs and other business professionals to have a basic understanding of IP and how it is procured, protected, and exploited. This course provides an overview of the many and varied IP issues that students will confront during their careers. It is intended to be both informative and fun. Classes will cover the basics of patent, trademark, copyright, and trade secret law. Current issues in these areas will be covered, including patent protection for software and business methods, copyrightability of computer programs and APIs, issues relating to artificial intelligence, and the evolving protection for trademarks and trade secrets. Emerging issues concerning the federal Computer Fraud & Abuse Act (CFAA) and hacking will be covered, as will employment issues, including employee proprietary information and invention assignment agreements, work made for hire agreements, confidentiality agreements, non-compete agreements and other potential post-employment restrictions. Recent notable lawsuits will be discussed, including Apple v. Samsung (patents), Alice Corp. v. CLS Bank (software and business method patents), Oracle v. Google (software/APIs), Waymo v. Uber (civil and criminal trade secret theft), and hiQ v. LinkedIn (CFAA). IP law evolves constantly and new headline cases that arise during the term are added to the class discussion. Guest lectures typically include experts on open source software; legal and practical issues confronted by business founders; and, consulting and testifying as an expert in IP litigation. Although many of the issues discussed will involve technology disputes, the course also covers IP issues relating to art, music, photography, and literature. Classes are presented in an open discussion format and they are designed to be enjoyed by students of all backgrounds and areas of expertise.
Terms: Spr | Units: 1
Instructors: ; Hansen, D. (PI)

CS 204: Computational Law

Computational Law is an innovative approach to legal informatics concerned with the representation of regulations in computable form. From a practical perspective, Computational Law is important as the basis for computer systems capable of performing useful legal calculations, such as compliance checking, legal planning, and regulatory analysis. In this course, we look at the theory of Computational Law, we review relevant technology and applications, we discuss the prospects and problems of Computational Law, and we examine its philosophical and legal implications. Work in the course consists of reading, class discussion, and practical exercises.
Last offered: Spring 2023 | Units: 2-3

CS 205L: Continuous Mathematical Methods with an Emphasis on Machine Learning

A survey of numerical approaches to the continuous mathematics used throughout computer science with an emphasis on machine and deep learning. Although motivated from the standpoint of machine learning, the course will focus on the underlying mathematical methods including computational linear algebra and optimization, as well as special topics such as automatic differentiation via backward propagation, momentum methods from ordinary differential equations, CNNs, RNNs, etc. Written homework assignments and (straightforward) quizzes focus on various concepts; additionally, students can opt in to a series of programming assignments geared towards neural network creation, training, and inference. (Replaces CS205A, and satisfies all similar requirements.) Prerequisites: Math 51; Math104 or MATH113 or equivalent or comfort with the associated material.
Terms: Win | Units: 3

CS 206: Exploring Computational Journalism (COMM 281)

This project-based course will explore the field of computational journalism, including the use of Data Science, Info Visualization, AI, and emerging technologies to help journalists discover and tell stories, understand their audience, advance free speech, and build trust. This course is repeatable for credit; enrollment priority given to students taking it for the first time.
Terms: Win | Units: 3 | Repeatable 3 times (up to 9 units total)

CS 207: Antidiscrimination Law and Algorithmic Bias

Human decision making is increasingly being displaced by algorithms. Judges sentence defendants based on "risk scores;" regulators take enforcement actions based on predicted violations; advertisers target materials based on demographic attributes; and employers evaluate applicants and employees based on machine-learned models. A predominant concern with the rise of such algorithmic decision making (machine learning or artificial intelligence) is that it may replicate or exacerbate human bias. Algorithms might discriminate, for instance, based on race or gender. This course surveys the legal principles for assessing bias of algorithms, examines emerging techniques for how to design and assess bias of algorithms, and assesses how antidiscrimination law and the design of algorithms may need to evolve to account for the potential emergence of machine bias. Admission is by consent of instructor and is limited to 20 students. Student assessment is based on class participation, response papers, and a final project. CONSENT APPLICATION: To apply for this course, students must complete and submit a Consent Application Form available on the SLS website (https://law.stanford.edu/education/courses/consent-of-instructor-forms/). See Consent Application Form for instructions and submission deadline. Course same as LAW 7073
Last offered: Autumn 2022 | Units: 3

CS 208E: Great Ideas in Computer Science

Great Ideas in Computer Science Covers the intellectual tradition of computer science emphasizing ideas that reflect the most important milestones in the history of the discipline. Topics include programming and problem solving; implementing computation in hardware; algorithmic efficiency; the theoretical limits of computation; cryptography and security; computer networks; machine learning; and the philosophy behind artificial intelligence. Readings will include classic papers along with additional explanatory material.
Last offered: Autumn 2021 | Units: 3

CS 210A: Software Project Experience with Corporate Partners

Two-quarter project course. Focus is on real-world software development. Corporate partners seed projects with loosely defined challenges from their R&D labs; students innovate to build their own compelling software solutions. Student teams are treated as start-up companies with a budget and a technical advisory board comprised of instructional staff and corporate liaisons. Teams will typically travel to the corporate headquarters of their collaborating partner, meaning some teams will travel internationally. Open loft classroom format such as found in Silicon Valley software companies. Exposure to: current practices in software engineering; techniques for stimulating innovation; significant development experience with creative freedoms; working in groups; real-world software engineering challenges; public presentation of technical work; creating written descriptions of technical work. Prerequisites: CS109 and CS161.
Terms: Win | Units: 3-4

CS 210B: Software Project Experience with Corporate Partners

Continuation of CS210A. Focus is on real-world software development. Corporate partners seed projects with loosely defined challenges from their R&D labs; students innovate to build their own compelling software solutions. Student teams are treated as start-up companies with a budget and a technical advisory board comprised of the instructional staff and corporate liaisons. Teams will typically travel to the corporate headquarters of their collaborating partner, meaning some teams will travel internationally. Open loft classroom format such as found in Silicon Valley software companies. Exposure to: current practices in software engineering; techniques for stimulating innovation; significant development experience with creative freedoms; working in groups; real world software engineering challenges; public presentation of technical work; creating written descriptions of technical work. Prerequisites: CS 210A
Terms: Spr | Units: 3-4

CS 212: Operating Systems and Systems Programming

Covers key concepts in computer systems through the lens of operatingsystem design and implementation. Topics include threads, scheduling,processes, virtual memory, synchronization, multi-core architectures,memory consistency, hardware atomics, memory allocators, linking, I/O,file systems, and virtual machines. Concepts are reinforced with fourkernel programming projects in the Pintos operating system. This classmay be taken as an accelerated single-class alternative to the CS111,CS112 sequence; conversely, the class should not be taken by studentswho have already taken CS111 or CS112.
Terms: Win | Units: 3-5

CS 213: Creating Great VR: From Ideation to Monetization

Covering everything from VR fundamentals to futurecasting to launch management, this course will expose you to best practices and guidance from VR leaders that helps positions you to build great VR experiences.
Last offered: Spring 2018 | Units: 1

CS 214: Selected Reading of Computer Science Research

Detailed reading of 5-10 research publications in computer science. For undergraduates, the course is an introduction to advanced foundational concepts within a field as well as an in-depth look at detailed research. For graduate students, the course focuses on historical reading as well as an opportunity to discuss the strengths and weaknesses of the work. Both groups of students discuss historical context, how ideas succeeded or did not and why, and how they manifest in modern technology. The discussion of each piece of work includes a guest lecture by one of its authors.
Last offered: Spring 2022 | Units: 3

CS 217: Hardware Accelerators for Machine Learning

This course provides in-depth coverage of the architectural techniques used to design accelerators for training and inference in machine learning systems. This course will cover classical ML algorithms such as linear regression and support vector machines as well as DNN models such as convolutional neural nets, and recurrent neural nets. We will consider both training and inference for these models and discuss the impact of parameters such as batch size, precision, sparsity and compression on the accuracy of these models. We will cover the design of accelerators for ML model inference and training. Students will become familiar with hardware implementation techniques for using parallelism, locality, and low precision to implement the core computational kernels used in ML. To design energy-efficient accelerators, students will develop the intuition to make trade-offs between ML model parameters and hardware implementation techniques. Students will read recent research papers and complete a design project. Prerequisites: CS 149 or EE 180. CS 229 is ideal, but not required.
Last offered: Winter 2023 | Units: 3-4

CS 221: Artificial Intelligence: Principles and Techniques

Artificial intelligence (AI) has had a huge impact in many areas, including medical diagnosis, speech recognition, robotics, web search, advertising, and scheduling. This course focuses on the foundational concepts that drive these applications. In short, AI is the mathematics of making good decisions given incomplete information (hence the need for probability) and limited computation (hence the need for algorithms). Specific topics include search, constraint satisfaction, game playing,n Markov decision processes, graphical models, machine learning, and logic. Prerequisites: CS 103 or CS 103B/X, CS 106B or CS 106X, CS 109, and CS 161 (algorithms, probability, and object-oriented programming in Python). We highly recommend comfort with these concepts before taking the course, as we will be building on them with little review.
Terms: Aut, Spr | Units: 3-4

CS 223A: Introduction to Robotics (ME 320)

Robotics foundations in modeling, design, planning, and control. Class covers relevant results from geometry, kinematics, statics, dynamics, motion planning, and control, providing the basic methodologies and tools in robotics research and applications. Concepts and models are illustrated through physical robot platforms, interactive robot simulations, and video segments relevant to historical research developments or to emerging application areas in the field. Recommended: matrix algebra.
Terms: Win | Units: 3

CS 224C: NLP for Computational Social Science

We live in an era where many aspects of our social interactions are recorded as textual data, from social media posts to medical and financial records. This course is about using a variety of techniques from machine learning and theories from social science to study human behaviors and important societal questions at scale. Topics will include methods for natural language processing and causal inference, and their applications to important societal questions around hate speech, misinformation, and social movements.
Terms: Spr | Units: 3
Instructors: ; Yang, D. (PI); Liang, W. (TA)

CS 224G: Apps With LLMs Inside

With ChatGPT, neural networks have had their Lisp moment. Conversation has become code and the model is the CPU for this ultimate programming language. A new universe of App development has opened up, and there are no guides for it, yet. This is a project course designed to explore the space of Apps built around LLMs, starting by playing with them, learning their limitations, and then applying a set of techniques to program them efficiently and effectively. Assignments are due on a two week "sprint" cadence to mimic a startup style environment. Guest lectures by area experts provide industry perspective.
Terms: Win | Units: 3

CS 224N: Natural Language Processing with Deep Learning (LINGUIST 284, SYMSYS 195N)

Methods for processing human language information and the underlying computational properties of natural languages. Focus on deep learning approaches: understanding, implementing, training, debugging, visualizing, and extending neural network models for a variety of language understanding tasks. Exploration of natural language tasks ranging from simple word level and syntactic processing to coreference, question answering, and machine translation. Examination of representative papers and systems and completion of a final project applying a complex neural network model to a large-scale NLP problem. Prerequisites: calculus and linear algebra; CS124, CS221, or CS229.
Terms: Win, Spr | Units: 3-4

CS 224R: Deep Reinforcement Learning

Humans, animals, and robots faced with the world must make decisions and take actions in the world. Moreover, the decisions they choose affect the world they exist in - and those outcomes must be taken into account. This course is about algorithms for deep reinforcement learning - methods for learning behavior from experience, with a focus on practical algorithms that use deep neural networks to learn behavior from high-dimensional observations. Topics will include methods for learning from demonstrations, both model-based and model-free deep RL methods, methods for learning from offline datasets, and more advanced techniques for learning multiple tasks such as goal-conditioned RL, meta-RL, and unsupervised skill discovery. These methods will be instantiated with examples from domains with high-dimensional state and action spaces, such as robotics, visual navigation, and control. This course is complementary to CS234, which neither being a pre-requisite for the other. In comparison to CS234, this course will have a more applied and deep learning focus and an emphasis on use-cases in robotics and motor control.
Last offered: Spring 2023 | Units: 3

CS 224S: Spoken Language Processing (LINGUIST 285)

Introduction to spoken language technology with an emphasis on dialogue and conversational systems. Deep learning and other methods for automatic speech recognition, speech synthesis, affect detection, dialogue management, and applications to digital assistants and spoken language understanding systems. Prerequisites: CS124, CS221, CS224N, or CS229.
Terms: Spr | Units: 2-4

CS 224U: Natural Language Understanding (LINGUIST 188, LINGUIST 288, SYMSYS 195U)

Project-oriented class focused on developing systems and algorithms for robust machine understanding of human language. Draws on theoretical concepts from linguistics, natural language processing, and machine learning. Topics include lexical semantics, distributed representations of meaning, relation extraction, semantic parsing, sentiment analysis, and dialogue agents, with special lectures on developing projects, presenting research results, and making connections with industry. Prerequisites: CS 224N or CS 224S (This is a smaller number of courses than previously.)
Last offered: Spring 2023 | Units: 3-4

CS 224V: Conversational Virtual Assistants with Deep Learning

Generative AI, and in particular Large Language Models (LLMs), has already changed how we work and study. But this is just the beginning, as it has the potential of assisting and perhaps eventually automating knowledge workers in all areas, from law, medicine, to teaching and mental health therapists. This course will focus on the general principles and the latest research on methodologies and tools that can be applied to all domains. This is a project-oriented course, where students will gain hands-on experience in either methodology research or applying the concepts to create useful assistants for a domain of their choice. Topics include: (1) growing LLMs' knowledge through a combination of manual supervised learning and self-learning, (2) stopping LLMs from hallucination by grounding them with external corpora of knowledge, which is necessary for handling new, live, private as well as long-tail data, (3) handling external data corpora in different domains including structured and unstructured data, (4) experimentation and evaluation of conversational assistants based on LLMs, (5) controlling LLMs to achieve tasks, (6) persuasive LLMs, (7) multilingual assistants, and (8) combining voice and graphical interfaces. Prerequisites: one of LINGUIST 180/280, CS 124, CS 224N, CS 224S, 224U.
Terms: Aut | Units: 3-4

CS 224W: Machine Learning with Graphs

Many complex data can be represented as a graph of relationships between objects. Such networks are a fundamental tool for modeling complex social, technological, and biological systems. This course focuses on the computational, algorithmic, and modeling challenges specific to the analysis of massive graphs. By means of studying the underlying graph structure and its features, students are introduced to machine learning techniques and data mining tools apt to reveal insights on a variety of networks. Topics include: representation learning and Graph Neural Networks; algorithms for the World Wide Web; reasoning over Knowledge Graphs; influence maximization; disease outbreak detection, social network analysis. Prerequisites: CS109, any introductory course in Machine Learning.
Terms: Aut | Units: 3-4

CS 225: Machine Learning for Discrete Optimization (MS&E 236)

Machine learning has become a powerful tool for discrete optimization. This is because, in practice, we often have ample data about the application domain?data that can be used to optimize algorithmic performance, ranging from runtime to solution quality. This course covers how machine learning can be used within the discrete optimization pipeline from many perspectives, including how to design novel combinatorial algorithms with machine-learned modules and configure existing algorithms? parameters to optimize performance. Topics will include both applied machinery (such as graph neural networks, reinforcement learning, transformers, and LLMs) as well as theoretical tools for providing provable guarantees.
Terms: Spr | Units: 3

CS 225A: Experimental Robotics

Hands-on laboratory course experience in robotic manipulation. Topics include robot kinematics, dynamics, control, compliance, sensor-based collision avoidance, and human-robot interfaces. Second half of class is devoted to final projects using various robotic platforms to build and demonstrate new robot task capabilities. Previous projects include the development of autonomous robot behaviors of drawing, painting, playing air hocket, yoyo, basketball, ping-pong or xylophone. Prerequisites: 223A or equivalent.
Terms: Spr | Units: 3

CS 226: The Future of Mechanical Engineering (ME 228)

This seminar series provides an overview of current and emerging research topics in mechanical engineering and its application to engineering and scientific problems. The seminar is targeted at senior mechanical engineering undergraduates and mechanical engineering graduate students. Presenters will be selected external speakers who feature exciting and cutting-edge research of mechanical engineering.
Last offered: Winter 2023 | Units: 1

CS 227A: Robot Perception: Hardware, Algorithm, and Application (EE 227)

Robot Perception is the cornerstone of modern robotics, enabling machines to interpret, understand, and respond to an array of sensory information they encounter. In the course, students will study the basic principles of typical sensor hardware on a robotics system (e.g., vision, tactile, and acoustic sensors), the algorithms that process the raw sensory data, and make actionable decisions from that information. Over the course of the semester, students will incrementally build their own vision-based robotics system in simulation via a series of homework coding assignments. Students enrolling 4 units will be required to submit an additional final written report. Prerequisites: This course requires programming experience in python as well as basic knowledge of linear algebra. Most of the required mathematical concepts will be reviewed, but it will be assumed that students have strong programming skills. All the homework requires extensive programming. Previous knowledge of robotics, machine learning or computer vision would be helpful but is not absolutely required.
Terms: Win | Units: 3-4
Instructors: ; Song, S. (PI); Nie, N. (TA)

CS 227B: General Game Playing

A general game playing system accepts a formal description of a game to play it without human intervention or algorithms designed for specific games. Hands-on introduction to these systems and artificial intelligence techniques such as knowledge representation, reasoning, learning, and rational behavior. Students create GGP systems to compete with each other and in external competitions. Prerequisite: programming experience. Recommended: 103 or equivalent.
Terms: Spr | Units: 3

CS 228: Probabilistic Graphical Models: Principles and Techniques

Probabilistic graphical modeling languages for representing complex domains, algorithms for reasoning using these representations, and learning these representations from data. Topics include: Bayesian and Markov networks, extensions to temporal modeling such as hidden Markov models and dynamic Bayesian networks, exact and approximate probabilistic inference algorithms, and methods for learning models from data. Also included are sample applications to various domains including speech recognition, biological modeling and discovery, medical diagnosis, message encoding, vision, and robot motion planning. Prerequisites: basic probability theory and algorithm design and analysis.
Terms: Win | Units: 3-4

CS 229: Machine Learning (STATS 229)

Topics: statistical pattern recognition, linear and non-linear regression, non-parametric methods, exponential family, GLMs, support vector machines, kernel methods, deep learning, model/feature selection, learning theory, ML advice, clustering, density estimation, EM, dimensionality reduction, ICA, PCA, reinforcement learning and adaptive control, Markov decision processes, approximate dynamic programming, and policy search. Prerequisites: knowledge of basic computer science principles and skills at a level sufficient to write a reasonably non-trivial computer program in Python/NumPy to the equivalency of CS106A, CS106B, or CS106X, familiarity with probability theory to the equivalency of CS 109, MATH151, or STATS 116, and familiarity with multivariable calculus and linear algebra to the equivalency of MATH51 or CS205.
Terms: Aut, Win, Sum | Units: 3-4

CS 229B: Machine Learning for Sequence Modeling (STATS 232)

Sequence data and time series are becoming increasingly ubiquitous in fields as diverse as bioinformatics, neuroscience, health, environmental monitoring, finance, speech recognition/generation, video processing, and natural language processing. Machine learning has become an indispensable tool for analyzing such data; in fact, sequence models lie at the heart of recent progress in AI like GPT3. This class integrates foundational concepts in time series analysis with modern machine learning methods for sequence modeling. Connections and key differences will be highlighted, as well as how grounding modern neural network approaches with traditional interpretations can enable powerful leaps forward. You will learn theoretical fundamentals, but the focus will be on gaining practical, hands-on experience with modern methods through real-world case studies. You will walk away with a broad and deep perspective of sequence modeling and key ways in which such data are not just 1D images.
Terms: Aut | Units: 3-4
Instructors: ; Fox, E. (PI)

CS 229M: Machine Learning Theory (STATS 214)

How do we use mathematical thinking to design better machine learning methods? This course focuses on developing mathematical tools for answering this question. This course will cover fundamental concepts and principled algorithms in machine learning, particularly those that are related to modern large-scale non-linear models. The topics include concentration inequalities, generalization bounds via uniform convergence, non-convex optimization, implicit regularization effect in deep learning, and unsupervised learning and domain adaptations. Prerequisites: linear algebra ( MATH 51 or CS 205), probability theory (STATS 116, MATH 151 or CS 109), and machine learning ( CS 229, STATS 229, or STATS 315A).
Terms: Aut | Units: 3

CS 229S: Systems for Machine Learning

Deep learning and neural networks are being increasingly adopted across industries. They are now used to serve billions of users across applications such as search, knowledge discovery, and productivity assistants. As models become more capable and intelligent, this trend of large-scale adoption will continue to grow rapidly. Due to the widespread application, there is an increasing need to achieve high performance for both training and serving deep-learning models. However, performance is hindered by a multitude of infrastructure and lifecycle hurdles - the increasing complexity of the models, massive sizes of training and inference data, heterogeneity of the available accelerators and multi-node platforms, and diverse network properties. The slow adaptation of systems to new algorithms creates a bottleneck for the rapid evolution of deep-learning models and their applications. This course will cover systems approaches for improving the efficiency of machine learning pipelines - comprising data preparation, model training, and model deployment & inference -at each level of the systems stack spanning software and hardware.
Terms: Aut | Units: 3

CS 230: Deep Learning

Deep Learning is one of the most highly sought after skills in AI. We will help you become good at Deep Learning. In this course, you will learn the foundations of Deep Learning, understand how to build neural networks, and learn how to lead successful machine learning projects. You will learn about Convolutional networks, RNNs, LSTM, Adam, Dropout, BatchNorm, Xavier/He initialization, and more. You will work on case studies from healthcare, autonomous driving, sign language reading, music generation, and natural language processing. You will master not only the theory, but also see how it is applied in industry. You will practice all these ideas in Python and in TensorFlow, which we will teach. AI is transforming multiple industries. After this course, you will likely find creative ways to apply it to your work. This class is taught in the flipped-classroom format. You will watch videos and complete in-depth programming assignments and online quizzes at home, then come in to class for advanced discussions and work on projects. This class will culminate in an open-ended final project, which the teaching team will help you on. Prerequisites: Familiarity with programming in Python and Linear Algebra (matrix / vector multiplications). CS 229 may be taken concurrently.
Last offered: Spring 2023 | Units: 3-4 | UG Reqs: WAY-AQR, WAY-FR

CS 231A: Computer Vision: From 3D Perception to 3D Reconstruction and Beyond

(Formerly 223B) An introduction to the concepts and applications in computer vision. Topics include: cameras and projection models, low-level image processing methods such as filtering and edge detection; mid-level vision topics such as segmentation and clustering; shape reconstruction from stereo, as well as high-level vision tasks such as object recognition, scene recognition, face detection and human motion categorization. Prerequisites: linear algebra, basic probability and statistics.
Terms: Spr | Units: 3-4

CS 231C: Computer Vision and Image Analysis of Art

This course presents the application of rigorous image processing, computer vision, machine learning, computer graphics and artificial intelligence techniques to problems in the history and interpretation of fine art paintings, drawings, murals and other two-dimensional works, including abstract art. The course focuses on the aspects of these problems that are unlike those addressed widely elsewhere in computer image analysis applied to physics-constrained images in photographs, videos, and medical images, such as the analysis of brushstrokes and marks, medium, inferring artists¿ working methods, compositional principles, stylometry (quantification of style), the tracing of artistic influence, and art attribution and authentication. The course revisits classic problems, such as image-based object recognition, but in highly non-realistic, stylized artworks. Recommended: One of CS 131 or EE 168 or equivalent; ARTHIST 1B. Prerequisites: Programming proficiency in at least one of C, C++, Python, Matlab or Mathematica and tools/frameworks such as OpenCV or Matlab's Image Processing toolbox.
Last offered: Autumn 2020 | Units: 3

CS 231N: Deep Learning for Computer Vision

Computer Vision has become ubiquitous in our society, with applications in search, image understanding, apps, mapping, medicine, drones, and self-driving cars. Core to many of these applications are visual recognition tasks such as image classification and object detection. Recent developments in neural network approaches have greatly advanced the performance of these state-of-the-art visual recognition systems. This course is a deep dive into details of neural-network based deep learning methods for computer vision. During this course, students will learn to implement, train and debug their own neural networks and gain a detailed understanding of cutting-edge research in computer vision. We will cover learning algorithms, neural network architectures, and practical engineering tricks for training and fine-tuning networks for visual recognition tasks.Prerequisites: Proficiency in Python - All class assignments will be in Python (and use numpy) (we provide a tutorial here for those who aren't as familiar with Python). If you have a lot of programming experience but in a different language (e.g. C/C++/Matlab/Javascript) you will probably be fine.College Calculus, Linear Algebra (e.g. MATH 19, MATH 51) -You should be comfortable taking derivatives and understanding matrix vector operations and notation. Basic Probability and Statistics (e.g. CS 109 or other stats course) -You should know basics of probabilities, gaussian distributions, mean, standard deviation, etc.
Terms: Spr | Units: 3-4

CS 232: Digital Image Processing (EE 368)

Image sampling and quantization color, point operations, segmentation, morphological image processing, linear image filtering and correlation, image transforms, eigenimages, multiresolution image processing, noise reduction and restoration, feature extraction and recognition tasks, image registration. Emphasis is on the general principles of image processing. Students learn to apply material by implementing and investigating image processing algorithms in Matlab and optionally on Android mobile devices. Term project. Recommended: EE261, EE278.
Last offered: Winter 2020 | Units: 3

CS 233: Geometric and Topological Data Analysis (CME 251)

Mathematical and computational tools for the analysis of data with geometric content, such images, videos, 3D scans, GPS traces -- as well as for other data embedded into geometric spaces. Linear and non-linear dimensionality reduction techniques. Graph representations of data and spectral methods. The rudiments of computational topology and persistent homology on sampled spaces, with applications. Global and local geometry descriptors allowing for various kinds of invariances. Alignment, matching, and map/correspondence computation between geometric data sets. Annotation tools for geometric data. Geometric deep learning on graphs and sets. Function spaces and functional maps. Networks of data sets and joint learning for segmentation and labeling. Prerequisites: discrete algorithms at the level of CS161; linear algebra at the level of Math51 or CME103.
Terms: Win | Units: 3
Instructors: ; Guibas, L. (PI); Weng, Y. (TA)

CS 234: Reinforcement Learning

To realize the dreams and impact of AI requires autonomous systems that learn to make good decisions. Reinforcement learning is one powerful paradigm for doing so, and it is relevant to an enormous range of tasks, including robotics, game playing, consumer modeling and healthcare. This class will briefly cover background on Markov decision processes and reinforcement learning, before focusing on some of the central problems, including scaling up to large domains and the exploration challenge. One key tool for tackling complex RL domains is deep learning and this class will include at least one homework on deep reinforcement learning. Prerequisites: proficiency in python, CS 229 or equivalents or permission of the instructor; linear algebra, basic probability.
Terms: Spr | Units: 3

CS 235: Computational Methods for Biomedical Image Analysis and Interpretation (BIOMEDIN 260, BMP 260, RAD 260)

The latest biological and medical imaging modalities and their applications in research and medicine. Focus is on computational analytic and interpretive approaches to optimize extraction and use of biological and clinical imaging data for diagnostic and therapeutic translational medical applications. Topics include major image databases, fundamental methods in image processing and quantitative extraction of image features, structured recording of image information including semantic features and ontologies, indexing, search and content-based image retrieval. Case studies include linking image data to genomic, phenotypic and clinical data, developing representations of image phenotypes for use in medical decision support and research applications and the role that biomedical imaging informatics plays in new questions in biomedical science. Includes a project. Enrollment for 3 units requires instructor consent. Prerequisites: programming ability at the level of CS 106A, familiarity with statistics, basic biology. Knowledge of Matlab or Python highly recommended.
Terms: Spr | Units: 3-4

CS 236: Deep Generative Models

Generative models are widely used in many subfields of AI and Machine Learning. Recent advances in parameterizing these models using neural networks, combined with progress in stochastic optimization methods, have enabled scalable modeling of complex, high-dimensional data including images, text, and speech. In this course, we will study the probabilistic foundations and learning algorithms for deep generative models, including Variational Autoencoders (VAE), Generative Adversarial Networks (GAN), and flow models. The course will also discuss application areas that have benefitted from deep generative models, including computer vision, speech and natural language processing, and reinforcement learning. Prerequisites: Basic knowledge about machine learning from at least one of CS 221, 228, 229 or 230. Students will work with computational and mathematical models and should have a basic knowledge of probabilities and calculus. Proficiency in some programming language, preferably Python, required.
Terms: Aut | Units: 3

CS 236G: Generative Adversarial Networks

Generative Adversarial Networks (GANs) have rapidly emerged as the state-of-the-art technique in realistic image generation. This course presents theoretical intuition and practical knowledge on GANs, from their simplest to their state-of-the-art forms. Their benefits and applications span realistic image editing that is omnipresent in popular app filters, enabling tumor classification under low data schemes in medicine, and visualizing realistic scenarios of climate change destruction. This course also examines key challenges of GANs today, including reliable evaluation, inherent biases, and training stability. After this course, students should be familiar with GANs and the broader generative models and machine learning contexts in which these models are situated. Prerequisites: linear algebra, statistics, CS106B, plus a graduate-level AI course such as: CS230, CS229 (or CS129), or CS221.
Last offered: Winter 2022 | Units: 3

CS 237A: Principles of Robot Autonomy I (AA 274A, EE 260A)

Basic principles for endowing mobile autonomous robots with perception, planning, and decision-making capabilities. Algorithmic approaches for robot perception, localization, and simultaneous localization and mapping; control of non-linear systems, learning-based control, and robot motion planning; introduction to methodologies for reasoning under uncertainty, e.g., (partially observable) Markov decision processes. Extensive use of the Robot Operating System (ROS) for demonstrations and hands-on activities. Prerequisites: CS 106A or equivalent, CME 100 or equivalent (for linear algebra), and CME 106 or equivalent (for probability theory).
Terms: Aut | Units: 3

CS 237B: Principles of Robot Autonomy II (AA 174B, AA 274B, EE 260B)

This course teaches advanced principles for endowing mobile autonomous robots with capabilities to autonomously learn new skills and to physically interact with the environment and with humans. It also provides an overview of different robot system architectures. Concepts that will be covered in the course are: Reinforcement Learning and its relationship to optimal control, contact and dynamics models for prehensile and non-prehensile robot manipulation, imitation learning and human intent inference, as well as different system architectures and their verification. Students will earn the theoretical foundations for these concepts and implement them on mobile manipulation platforms. In homeworks, the Robot Operating System (ROS) will be used extensively for demonstrations and hands-on activities. Prerequisites: CS106A or equivalent, CME 100 or equivalent (for linear algebra), CME 106 or equivalent (for probability theory), and AA 171/274.
Terms: Win | Units: 3-4

CS 238: Decision Making under Uncertainty (AA 228)

This course is designed to increase awareness and appreciation for why uncertainty matters, particularly for aerospace applications. Introduces decision making under uncertainty from a computational perspective and provides an overview of the necessary tools for building autonomous and decision-support systems. Following an introduction to probabilistic models and decision theory, the course will cover computational methods for solving decision problems with stochastic dynamics, model uncertainty, and imperfect state information. Topics include: Bayesian networks, influence diagrams, dynamic programming, reinforcement learning, and partially observable Markov decision processes. Applications cover: air traffic control, aviation surveillance systems, autonomous vehicles, and robotic planetary exploration. Prerequisites: basic probability and fluency in a high-level programming language.
Terms: Aut | Units: 3-4

CS 239: Advanced Topics in Sequential Decision Making (AA 229)

Survey of recent research advances in intelligent decision making for dynamic environments from a computational perspective. Efficient algorithms for single and multiagent planning in situations where a model of the environment may or may not be known. Partially observable Markov decision processes, approximate dynamic programming, and reinforcement learning. New approaches for overcoming challenges in generalization from experience, exploration of the environment, and model representation so that these methods can scale to real problems in a variety of domains including aerospace, air traffic control, and robotics. Students are expected to produce an original research paper on a relevant topic. Prerequisites: AA 228/CS 238 or CS 221.
Terms: Win | Units: 3-4

CS 240: Advanced Topics in Operating Systems

Recent research. Classic and new papers. Topics: virtual memory management, synchronization and communication, file systems, protection and security, operating system extension techniques, fault tolerance, and the history and experience of systems programming. Prerequisite: 140 or equivalent.
Last offered: Spring 2023 | Units: 3 | Repeatable for credit

CS 240LX: Advanced Systems Laboratory, Accelerated

This is an implementation-heavy, lab-based class that covers similar topics as CS240, but by writing code versus discussing papers. Our code will run "bare-metal" (without an operating system) on the widely-used ARM-based raspberry pi. Bare-metal lets us do interesting tricks without constantly fighting a lumbering, general-purpose OS that cannot get out of its own way. We will do ten projects, one per week, where each project covers two labs of (at a minimum) several hours each and a non-trivial amount of outside work. The workload is significant, but I will aim to not waste your time. Prerequisite: CS140E or instructor permission.
Terms: Spr | Units: 3
Instructors: ; Engler, D. (PI); Tan, J. (TA)

CS 241: Embedded Systems Workshop (EE 285)

Project-centric building hardware and software for embedded computing systems. This year the course projects are on a large interactive light sculpture to be installed in Packard. Syllabus topics will be determined by the needs of the enrolled students and projects. Examples of topics include: interrupts and concurrent programming, mechanical control, state-based programming models, signaling and frequency response, mechanical design, power budgets, software, firmware, and PCB design. Interested students can help lead community workshops to begin building the installation. Prerequisites: one of CS107, EE101A, EE108, ME80.
Terms: Win | Units: 3 | Repeatable 3 times (up to 9 units total)

CS 242: Programming Languages

This course explores foundational models of computation, such as the lambda calculus and other small calculi,  and the incorporation of basic advances in PL theory into modern programming languages such as Haskell and Rust.  Topics include type systems (polymorphism, algebraic data types, static vs. dynamic), control flow (exceptions, continuations), concurrency/parallelism, metaprogramming, verification, and the semantic gap between computational models and modern hardware. The study of programming languages is equal parts systems and theory, looking at how a rigorous understanding of the semantics of computation enables formal reasoning about the behavior and properties of complex real-world systems.  Prerequisites: 103, 110.
Terms: Aut | Units: 3-4

CS 243: Program Analysis and Optimizations

Program analysis techniques used in compilers and software development tools to improve productivity, reliability, and security. The methodology of applying mathematical abstractions such as graphs, fixpoint computations, binary decision diagrams in writing complex software, using compilers as an example. Topics include data flow analysis, instruction scheduling, register allocation, parallelism, data locality, interprocedural analysis, and garbage collection. Prerequisites: 103 or 103B, and 107.
Terms: Win | Units: 3-4

CS 244: Advanced Topics in Networking

Classic papers, new ideas, and research papers in networking. Architectural principles: why the Internet was designed this way? Congestion control. Wireless and mobility; software-defined networks (SDN) and network virtualization; content distribution networks; packet switching; data-center networks. Prerequisite: 144 or equivalent.
Terms: Spr | Units: 3-4

CS 244B: Distributed Systems

Distributed operating systems and applications issues, emphasizing high-level protocols and distributed state sharing as the key technologies. Topics: distributed shared memory, object-oriented distributed system design, distributed directory services, atomic transactions and time synchronization, application-sufficient consistency, file access, process scheduling, process migration, and storage/communication abstractions on distribution, scale, robustness in the face of failure, and security. Prerequisites: CS 144.
Terms: Spr | Units: 3

CS 245: Principles of Data-Intensive Systems

Most important computer applications have to reliably manage and manipulate datasets. This course covers the architecture of modern data storage and processing systems, including relational databases, cluster computing frameworks, streaming systems and machine learning systems. Topics include storage management, query optimization, transactions, concurrency, fault recovery, and parallel processing, with a focus on the key design ideas shared across many types of data-intensive systems. Prerequisites: CS 145, 161.
Last offered: Winter 2022 | Units: 3-4

CS 246: Mining Massive Data Sets

The availability of massive datasets is revolutionizing science and industry. This course discusses data mining and machine learning algorithms for analyzing very large amounts of data. Topics include: Big data systems (Hadoop, Spark); Link Analysis (PageRank, spam detection); Similarity search (locality-sensitive hashing, shingling, min-hashing); Stream data processing; Recommender Systems; Analysis of social-network graphs; Association rules; Dimensionality reduction (UV, SVD, and CUR decompositions); Algorithms for large-scale mining (clustering, nearest-neighbor search); Large-scale machine learning (decision tree ensembles); Multi-armed bandit; Computational advertising. Prerequisites: At least one of CS107 or CS145.
Terms: Win | Units: 3-4 | UG Reqs: WAY-FR

CS 246H: Mining Massive Data Sets Hadoop Lab

Supplement to CS 246 providing additional material on the Apache Hadoop family of technologies. Students will learn how to implement data mining algorithms using Hadoop and Apache Spark, how to implement and debug complex data mining and data transformations, and how to use two of the most popular big data SQL tools. Topics: data mining, machine learning, data ingest, and data transformations using Hadoop, Spark, Apache Impala, Apache Hive, Apache Kafka, Apache Sqoop, Apache Flume, Apache Avro, and Apache Parquet. Prerequisite: CS 107 or equivalent.
Last offered: Winter 2020 | Units: 1

CS 247A: Design for Artificial Intelligence (SYMSYS 195A)

A project-based course that builds on the introduction to design in CS147 by focusing on advanced methods and tools for research, prototyping, and user interface design. Studio based format with intensive coaching and iteration to prepare students for tackling real world design problems. This course takes place entirely in studios; you must plan on attending every studio to take this class. The focus of CS247A is design for human-centered artificial intelligence experiences. What does it mean to design for AI? What is HAI? How do you create responsible, ethical, human centered experiences? Let us explore what AI actually is and the constraints, opportunities and specialized processes necessary to create AI systems that work effectively for the humans involved. Prerequisites: CS147 or equivalent background in design thinking. In the event of a waitlist, acceptance to class based on an application provided on the first day of class.
Terms: Aut | Units: 3-4

CS 247B: Design for Behavior Change (SYMSYS 195B)

Over the last decade, tech companies have invested in shaping user behavior, sometimes for altruistic reasons like helping people change bad habits into good ones, and sometimes for financial reasons such as increasing engagement. In this project-based hands-on course, students explore the design of systems, information and interface for human use. We will model the flow of interactions, data and context, and crafting a design that is useful, appropriate and robust. Students will design and prototype utility apps or games as a response to the challenges presented. We will also examine the ethical consequences of design decisions and explore current issues arising from unintended consequences. Prerequisite: CS147 or equivalent.
Terms: Win | Units: 3-4

CS 247G: Design for Play (SYMSYS 195G)

A project-based course that builds on the introduction to design in CS147 by focusing on advanced methods and tools for research, prototyping, and user interface design. Studio based format with intensive coaching and iteration to prepare students for tackling real world design problems. This course takes place entirely in studios; please plan on attending every studio to take this class. The focus of CS247g is an introduction to theory and practice of game design. We will make digital and paper games, do rapid iteration and run user research studies appropriate to game design. This class has multiple short projects, allowing us to cover a variety of genres, from narrative to pure strategy. Prerequisites: 147 or equivalent background.
Terms: Spr, Sum | Units: 3-4

CS 247I: Design for Understanding

Complex problems require nuanced design approaches. In this project-based hands-on course, students explore the design of systems, information and interface for human use. Each quarter we pick a different challenging topic to explore and explain; past classes have included fake news, electoral politics and gender. Students will create an explainer, an information site and a game as a response to the challenges presented. We will model the flow of interactions, data and context, and craft a design that is useful, appropriate and robust. We will also examine the ethical consequences of design decisions and explore current issues arising from unintended consequences. Prerequisite: CS 147 or equivalent.
Last offered: Autumn 2021 | Units: 3-4

CS 247S: Service Design (SYMSYS 195S)

A project-based course that builds on the introduction to design in CS147 by focusing on advanced methods and tools for research, prototyping, and user interface design. Studio based format with intensive coaching and iteration to prepare students for tackling real world design problems. This course takes place entirely in studios; you must plan on attending every studio to take this class. The focus of CS247S is Service Design. In this course we will be looking at experiences that address the needs of multiple types of stakeholders at different touchpoints - digital, physical, and everything in between. If you have ever taken an Uber, participated in the Draw, engaged with your bank, or ordered a coffee through the Starbucks app, you have experienced a service that must have a coordinated experience for the customer, the service provider, and any other stakeholders involved. Let us explore what specialized tools and processes are required to created these multi-faceted interactions. Prerequisites: CS147 or equivalent background in design thinking. In the event of a waitlist, acceptance to class based on an application provided on the first day of class.
Terms: Win | Units: 3-4

CS 248A: Computer Graphics: Rendering, Geometry, and Image Manipulation

This course provides a comprehensive introduction to interactive computer graphics, focusing on fundamental concepts and techniques, as well as their cross-cutting relationship to multiple problem domains in interactive graphics (such as rendering, animation, geometry, image processing). Topics include: 2D and 3D drawing, sampling theory, interpolation, rasterization, image compositing, the real-time GPU graphics pipeline (and parallel rendering), VR rendering, geometric transformations, curves and surfaces, geometric data structures, subdivision, meshing, spatial hierarchies, image processing, time integration, physically-based animation, and inverse kinematics. The course will involve several in-depth programming assignments and a self-selected final project that explores concepts covered in the class. Prerequisite: CS 107, MATH 51.
Terms: Win | Units: 3-4

CS 248B: Fundamentals of Computer Graphics: Animation and Simulation

This course provides a comprehensive introduction to computer graphics, focusing on fundamental concepts and techniques in Computer Animation and Physics Simulation. Topics include numerical integration, 3D character modeling, keyframe animation, skinning/rigging, inverse kinematics, rigid body dynamics, deformable body simulation, and fluid simulation. Prerequisites: CS107 and MATH51.
Terms: Aut | Units: 3

CS 249I: The Modern Internet

Advanced networking course that covers how the Internet has evolved and operates today. Topics include modern Internet topology and routing practices, recently introduced network protocols, popular content delivery strategies, and pressing privacy, security, and abuse challenges. The course consists of a mixture of lecture, guest talks, and investigative projects where students will analyze how Internet operates in practice. Prerequisite: CS 144, EE 284, or equivalent.
Terms: Win | Units: 3

CS 250: Algebraic Error Correcting Codes (EE 387)

Introduction to the theory of error correcting codes, emphasizing algebraic constructions, and diverse applications throughout computer science and engineering. Topics include basic bounds on error correcting codes; Reed-Solomon and Reed-Muller codes; list-decoding, list-recovery and locality. Applications may include communication, storage, complexity theory, pseudorandomness, cryptography, streaming algorithms, group testing, and compressed sensing. Prerequisites: Linear algebra, basic probability (at the level of, say, CS109, CME106 or EE178) and "mathematical maturity" (students will be asked to write proofs). Familiarity with finite fields will be helpful but not required.
Last offered: Winter 2022 | Units: 3

CS 251: Cryptocurrencies and blockchain technologies

For advanced undergraduates and for graduate students.  The potential applications for Bitcoin-like technologies is enormous.  The course will cover the technical aspects of cryptocurrencies, blockchain technologies, and distributed consensus. Students will learn how these systems work, and how to engineer secure software that interacts with Blockchains like Bitcoin, Ethereum, and others. Prerequisite: CS110. Recommended: CS255.
Terms: Aut | Units: 3

CS 252: Analysis of Boolean Functions

Boolean functions are among the most basic objects of study in theoretical computer science. This course is about the study of boolean functions from a complexity-theoretic perspective, with an emphasis on analytic methods. We will cover fundamental concepts and techniques in this area, including influence and noise sensitivity, polynomial approximation, hypercontractivity, probabilistic invariance principles, and Gaussian analysis. We will see connections to various areas of theoretical computer science, including circuit complexity, pseudorandomness, classical and quantum query complexity, learning theory, and property testing. Prerequisites: CS 103 and CS 109 or equivalents. CS 154 and CS 161 recommended.
Last offered: Autumn 2018 | Units: 3

CS 253: Web Security

Principles of web security. The fundamentals and state-of-the-art in web security. Attacks and countermeasures. Topics include: the browser security model, web app vulnerabilities, injection, denial-of-service, TLS attacks, privacy, fingerprinting, same-origin policy, cross site scripting, authentication, JavaScript security, emerging threats, defense-in-depth, and techniques for writing secure code. Course projects include writing security exploits, defending insecure web apps, and implementing emerging web standards. Prerequisite: CS 142 or equivalent web development experience.
Last offered: Autumn 2021 | Units: 3

CS 254: Computational Complexity

An introduction to computational complexity theory. Topics include the P versus NP problem and other major challenges of complexity theory; Space complexity: Savitch's theorem and the Immerman-Szelepscényi theorem; P, NP, coNP, and the polynomial hierarchy; The power of randomness in computation; Non-uniform computation and circuit complexity; Interactive proofs. Prerequisites: 154 or equivalent; mathematical maturity.
Terms: Win | Units: 3

CS 254B: Computational Complexity II

A continuation of CS254 (Computational Complexity). Topics include Barriers to P versus NP; The relationship between time and space, and time-space tradeoffs for SAT; The hardness versus randomness paradigm; Average-case complexity; Fine-grained complexity; Current and new areas of complexity theory research. Prerequisite: CS254.
Terms: Spr | Units: 3
Instructors: ; Tan, L. (PI); Koch, C. (TA)

CS 255: Introduction to Cryptography

For advanced undergraduates and graduate students. Theory and practice of cryptographic techniques used in computer security. Topics: encryption (symmetric and public key), digital signatures, data integrity, authentication, key management, PKI, zero-knowledge protocols, and real-world applications. Prerequisite: basic probability theory.
Terms: Win | Units: 3

CS 256: Algorithmic Fairness

Machine learning and data analysis have enjoyed tremendous success in a broad range of domains. These advances hold the promise of great benefits to individuals, organizations and society. Undeniably, algorithms are informing decisions that reach ever more deeply into our lives, from news article recommendations to criminal sentencing decisions to healthcare diagnostics. This progress, however, raises (and is impeded by) a host of concerns regarding the societal impact of computation. A prominent concern is that these algorithms should be fair. Unfortunately, the hope that automated decision-making might be free of social biases is dashed on the data on which the algorithms are trained and the choices in their construction: left to their own devices, algorithms will propagate - even amplify - existing biases of the data, the programmers, and the decisions made in the choice of features to incorporate and measurements of 'fitness' to be applied. Addressing wrongful discrimination by algorithms is not only mandated by law and by ethics but is essential to maintaining the public trust in the current computation-driven revolution.The study of fairness is ancient and multi-disciplinary: philosophers, legal experts, economists, statisticians, social scientists and others have been concerned with fairness for as long as these fields have existed. Nevertheless, the scale of decision making in the age of big-data, the computational complexities of algorithmic decision making, and simple professional responsibility mandate that computer scientists contribute to this research endeavor. This is an intro to this booming area of research.Prerequisites: CS 161 and 221. I will be assuming some mathematical maturity, and CS 154 isrecommended.
Terms: Win | Units: 3

CS 257: Introduction to Automated Reasoning

Automated logical reasoning has enabled substantial progress in many fields, including hardware and software verification, theorem-proving, and artificial in- telligence. Different application scenarios may require different automated rea- soning techniques and sometimes their combination. In this course, we will study widely-used logical theories as well as algorithms for answering whether formu- las in those theories are satisfiable. We will consider state-of-the-art automated reasoning techniques for propositional logic, first-order logic, and various first- order theories, such as linear arithmetic over reals and integers, uninterpreted functions, bit-vectors, and arrays. We will also consider ways to reason about combinations of those theories. Topics include: logical foundations, SAT-solving, techniques for first-order theorem proving, decision procedures for different first- order theories, theory combination, the DPLL(T) framework, and applications of automated reasoning in program analysis and hardware verification. Prerequisites: CS154 Introduction to the Theory of Computation, or CS106b Programming Abstractions and CS103 Mathematical Foundations of Computing, or consent of instructor
Terms: Aut | Units: 3

CS 259Q: Quantum Computing

This course introduces the basics of quantum computing. Topics include: qubits, entanglement, and non-local correlations; quantum gates, circuits, and compilation algorithms; basic quantum algorithms such as Simon's algorithm and Grover's algorithm; Shor's factoring algorithm and the hidden subgroup problem; Hamiltonian simulation; stabilizer circuits, the Gottesman-Knill theorem, and the basics of quantum error correction. Prerequisites: Knowledge of linear algebra & discrete probability, and knowledge of algorithms OR quantum mechanics (or both)
Terms: Aut | Units: 3

CS 260: Geometry of Polynomials in Algorithm Design

Over the years, many powerful algorithms have been built via tools such as linear programming relaxations, spectral properties of graphs, and others, that all bridge the discrete and continuous worlds. This course will cover another such tool recently gaining popularity: polynomials, their roots, and their analytic properties, collectively known as geometry of polynomials. The course will cover fundamental properties of polynomials that are useful in designing algorithms, and then will showcase applications in several areas of algorithm design: combinatorial optimization, graph sparsification, high-dimensional expanders, analysis of random walks on combinatorial objects, and counting algorithms. Prerequisites: CS161 or equivalent. Basic knowledge of probability, linear algebra, and calculus.
Last offered: Winter 2020 | Units: 3

CS 261: Optimization and Algorithmic Paradigms

Algorithms for network optimization: max-flow, min-cost flow, matching, assignment, and min-cut problems. Introduction to linear programming. Use of LP duality for design and analysis of algorithms. Approximation algorithms for NP-complete problems such as Steiner Trees, Traveling Salesman, and scheduling problems. Randomized algorithms. Introduction to sub-linear algorithms and decision making under uncertainty. Prerequisite: 161 or equivalent.
Terms: Aut | Units: 3

CS 263: Counting and Sampling

This course will cover various algorithm design techniques for two intimately connected class of problems: sampling from complex probability distributions and counting combinatorial structures. A large part of the course will cover Markov Chain Monte Carlo techniques: coupling, stationary times, canonical paths, Poincare and log-Sobolev inequalities. Other topics include correlation decay in spin systems, variational techniques, holographic algorithms, and polynomial interpolation-based counting. Prerequisites: CS161 or equivalent, STAT116 or equivalent.
Terms: Aut | Units: 3

CS 265: Randomized Algorithms and Probabilistic Analysis (CME 309)

Randomness pervades the natural processes around us, from the formation of networks, to genetic recombination, to quantum physics. Randomness is also a powerful tool that can be leveraged to create algorithms and data structures which, in many cases, are more efficient and simpler than their deterministic counterparts. This course covers the key tools of probabilistic analysis, and application of these tools to understand the behaviors of random processes and algorithms. Emphasis is on theoretical foundations, though we will apply this theory broadly, discussing applications in machine learning and data analysis, networking, and systems. Topics include tail bounds, the probabilistic method, Markov chains, and martingales, with applications to analyzing random graphs, metric embeddings, random walks, and a host of powerful and elegant randomized algorithms. Prerequisites: CS 161 and STAT 116, or equivalents and instructor consent.
Terms: Aut | Units: 3

CS 268: Geometric Algorithms

Techniques for design and analysis of efficient geometric algorithms for objects in 2-, 3-, and higher dimensions. Topics: convexity, triangulations and simplicial complexes, sweeping, partitioning, and point location. Voronoi/Delaunay diagrams and their properties. Arrangements of curves and surfaces. Intersection and visibility problems. Geometric searching and optimization. Random sampling methods. Range searching. Impact of numerical issues in geometric computation. Example applications to robotic motion planning, visibility preprocessing and rendering in graphics, and model-based recognition in computer vision. Prerequisite: discrete algorithms at the level of CS161. Recommended: CS164.
Last offered: Autumn 2016 | Units: 3

CS 269G: Almost Linear Time Graph Algorithms (MS&E 313)

Over the past decade there has been an explosion in activity in designing new provably efficient fast graph algorithms. Leveraging techniques from disparate areas of computer science and optimization researchers have made great strides on improving upon the best known running times for fundamental optimization problems on graphs, in many cases breaking long-standing barriers to efficient algorithm design. In this course we will survey these results and cover the key algorithmic tools they leverage to achieve these breakthroughs. Possible topics include but are not limited to, spectral graph theory, sparsification, oblivious routing, local partitioning, Laplacian system solving, and maximum flow. Prerequisites: calculus and linear algebra.
Last offered: Autumn 2018 | Units: 3

CS 269I: Incentives in Computer Science (MS&E 206)

Many 21st-century computer science applications require the design of software or systems that interact with multiple self-interested participants. This course will provide students with the vocabulary and modeling tools to reason about such design problems. Emphasis will be on understanding basic economic and game theoretic concepts that are relevant across many application domains, and on case studies that demonstrate how to apply these concepts to real-world design problems. Topics include auction and contest design, equilibrium analysis, cryptocurrencies, design of networks and network protocols, reputation systems, social choice, and social network analysis. Case studies include BGP routing, Bitcoin, eBay's reputation system, Facebook's advertising mechanism, Mechanical Turk, and dynamic pricing in Uber/Lyft. Prerequisites: CS106B/X and CS161, or permission from the instructor.
Terms: Spr | Units: 3

CS 269O: Introduction to Optimization Theory (MS&E 213)

Introduction of core algorithmic techniques and proof strategies that underlie the best known provable guarantees for minimizing high dimensional convex functions. Focus on broad canonical optimization problems and survey results for efficiently solving them, ultimately providing the theoretical foundation for further study in optimization. In particular, focus will be on first-order methods for both smooth and non-smooth convex function minimization as well as methods for structured convex function minimization, discussing algorithms such as gradient descent, accelerated gradient descent, mirror descent, Newton's method, interior point methods, and more. Prerequisite: multivariable calculus and linear algebra.
Last offered: Autumn 2020 | Units: 3

CS 269Q: Elements of Quantum Computer Programming

For advanced undergraduates and for graduate students. Quantum computing is an emerging computational paradigm with vast potential. This course is an introduction to modern quantum programming for students who want to work with quantum computing technologies and learn about new paradigms of computation. A physics / quantum mechanics background is not required. Students will learn the model of quantum computation, quantum programming languages, hybrid quantum/classical programming, quantum algorithms, quantum error correction, and applications. The course is hands on using open source Python packages for working with publicly available quantum processors. Prerequisites: linear algebra and programming at the undergraduate level.
Last offered: Spring 2019 | Units: 3

CS 270: Modeling Biomedical Systems (BIOMEDIN 210)

At the core of informatics is the problem of creating computable models of biomedical phenomena. This course explores methods for modeling biomedical systems with an emphasis on contemporary semantic technology, including knowledge graphs. Topics: data modeling, knowledge representation, controlled terminologies, ontologies, reusable problem solvers, modeling problems in healthcare information technology and other aspects of informatics. Students acquire hands-on experience with several systems and tools. Prerequisites: CS106A. Basic familiarity with Python programming, biology, probability, and logic are assumed.
Terms: Win, Spr | Units: 3
Instructors: ; Musen, M. (PI)

CS 272: Introduction to Biomedical Data Science Research Methodology (BIOE 212, BIOMEDIN 212, GENE 212)

Capstone Biomedical Data Science experience. Hands-on software building. Student teams conceive, design, specify, implement, evaluate, and report on a software project in the domain of biomedicine. Creating written proposals, peer review, providing status reports, and preparing final reports. Issues related to research reproducibility. Guest lectures from professional biomedical informatics systems builders on issues related to the process of project management. Software engineering basics. Because the team projects start in the first week of class, attendance that week is strongly recommended. Prerequisites: BIOMEDIN 210 or 214 or 215 or 217 or 260. Preference to BMI graduate students. Consent of instructor required.NOTE: For students in the Department of Biomedical Data Science Program, this core course MUST be taken as a letter grade only.
Terms: Spr | Units: 3-5

CS 273B: Deep Learning in Genomics and Biomedicine (BIODS 237, BIOMEDIN 273B, GENE 236)

Recent breakthroughs in high-throughput genomic and biomedical data are transforming biological sciences into "big data" disciplines. In parallel, progress in deep neural networks are revolutionizing fields such as image recognition, natural language processing and, more broadly, AI. This course explores the exciting intersection between these two advances. The course will start with an introduction to deep learning and overview the relevant background in genomics and high-throughput biotechnology, focusing on the available data and their relevance. It will then cover the ongoing developments in deep learning (supervised, unsupervised and generative models) with the focus on the applications of these methods to biomedical data, which are beginning to produced dramatic results. In addition to predictive modeling, the course emphasizes how to visualize and extract interpretable, biological insights from such models. Recent papers from the literature will be presented and discussed. Experts in the field will present guest lectures. Students will be introduced to and work with popular deep learning software frameworks. Students will work in groups on a final class project using real world datasets. Prerequisites: College calculus, linear algebra, basic probability and statistics such as CS 109, and basic machine learning such as CS 229. No prior knowledge of genomics is necessary.
Terms: Spr | Units: 3
Instructors: ; Kundaje, A. (PI); Zou, J. (PI)

CS 273C: Cloud Computing for Biology and Healthcare (BIOMEDIN 222, GENE 222)

Big Data is radically transforming healthcare. To provide real-time personalized healthcare, we need hardware and software solutions that can efficiently store and process large-scale biomedical datasets. In this class, students will learn the concepts of cloud computing and parallel systems' architecture. This class prepares students to understand how to design parallel programs for computationally intensive medical applications and how to run these applications on computing frameworks such as Cloud Computing and High Performance Computing (HPC) systems. Prerequisites: familiarity with programming in Python and R.
Terms: Spr | Units: 3

CS 274: Representations and Algorithms for Computational Molecular Biology (BIOE 214, BIOMEDIN 214, GENE 214)

BIOMEDIN 214: Representations and Algorithms for Computational Molecular Biology (BIOE 214, CS 274, GENE 214)Topics: This is a graduate level introduction to bioinformatics and computational biology, algorithms for alignment of biological sequences and structures, BLAST, phylogenetic tree construction, hidden Markov models, basic structural computations on proteins, protein structure prediction, molecular dynamics and energy minimization, statistical analysis of 3D structure, knowledge controlled terminologies for molecular function, expression analysis, chemoinformatics, pharmacogenetics, network biology. Lectures are supplemented with assignments and programming projects, which allow students to implement important computational biology algorithms. Firm prerequisite: CS 106B. NOTE: For students in the Department of Biomedical Data Science Program, this core course MUST be taken as a letter grade only.
Terms: Aut | Units: 3-4

CS 275: Translational Bioinformatics (BIOE 217, BIOMEDIN 217, GENE 217)

Analytic and interpretive methods to optimize the transformation of genetic, genomic, and biological data into diagnostics and therapeutics for medicine. Topics: access and utility of publicly available data sources; types of genome-scale measurements in molecular biology and genomic medicine; linking genome-scale data to clinical data and phenotypes; and new questions in biomedicine using bioinformatics. Case studies. Prerequisites: programming ability at the level of CS 106A and familiarity with statistics and biology.
Terms: Spr | Units: 3-4

CS 275A: Symbolic Musical Information (MUSIC 253)

Properties of symbolic data for music applications including advanced notation systems, data durability, mark-up languages, optical music recognition, and data-translation tasks. Hands-on work involves these digital score formats: Guido Music Notation, Humdrum, MuseData, MEI, MusicXML, SCORE, and MIDI internal code.
Terms: Win | Units: 2-4

CS 275B: Computational Music Analysis (MUSIC 254)

Leveraging off three synchronized sets of symbolic data resources for notation and analysis, the lab portion introduces students to the open-source Humdrum Toolkit for music representation and analysis. Issues of data content and quality as well as methods of information retrieval, visualization, and summarization are considered in class. Grading based primarily on student projects. Prerequisite: 253 or consent of instructor.
Terms: Spr | Units: 2-4

CS 276: Information Retrieval and Web Search (LINGUIST 286)

Text information retrieval systems; efficient text indexing; Boolean, vector space, and probabilistic retrieval models; ranking and rank aggregation; evaluating IR systems; text clustering and classification; Web search engines including crawling and indexing, link-based algorithms, web metadata, and question answering; distributed word representations. Prerequisites: CS 107, CS 109, CS 161.
Last offered: Spring 2019 | Units: 3

CS 277: Foundation Models for Healthcare (BIODS 271, RAD 271)

Generative AI and large-scale self-supervised foundation models are poised to have a profound impact on human decision making across occupations. Healthcare is one such area where such models have the capacity to impact patients, clinicians, and other care providers. In this course, we will explore the training, evaluation, and deployment of generative AI and foundation models, with a focus on addressing current and future medical needs. The course will cover models used in natural language processing, computer vision, and multi-modal applications. We will explore the intersection of models trained on non-healthcare domains and their adaptation to domain-specific problems, as well as healthcare-specific foundation models. Prerequisites: Familiarity with machine learning principles at the level of CS 229, 231N, or 224N
Terms: Win | Units: 3

CS 278: Social Computing (SOC 174, SOC 274)

Today we interact with our friends and enemies, our team partners and romantic partners, and our organizations and societies, all through computational systems. How do we design these social computing systems - platforms for social media, online communities, and collaboration - to be effective and responsible? This course covers design patterns for social computing systems and the foundational ideas that underpin them.
Terms: Spr | Units: 3-4

CS 279: Computational Biology: Structure and Organization of Biomolecules and Cells (BIOE 279, BIOMEDIN 279, BIOPHYS 279, CME 279)

Computational techniques for investigating and designing the three-dimensional structure and dynamics of biomolecules and cells. These computational methods play an increasingly important role in drug discovery, medicine, bioengineering, and molecular biology. Course topics include protein structure prediction, protein design, drug screening, molecular simulation, cellular-level simulation, image analysis for microscopy, and methods for solving structures from crystallography and electron microscopy data. Prerequisites: elementary programming background (CS 106A or equivalent) and an introductory course in biology or biochemistry.
Terms: Aut | Units: 3

CS 281: Ethics of Artificial Intelligence

Machine learning has become an indispensable tool for creating intelligent applications, accelerating scientific discoveries, and making better data-driven decisions. Yet, the automation and scaling of such tasks can have troubling negative societal impacts. Through practical case studies, you will identify issues of fairness, justice and truth in AI applications. You will then apply recent techniques to detect and mitigate such algorithmic biases, along with methods to provide more transparency and explainability to state-of-the-art ML models. Finally, you will derive fundamental formal results on the limits of such techniques, along with tradeoffs that must be made for their practical application. CS229 or equivalent classes or experience.
Terms: Spr | Units: 3-4
Instructors: ; Guestrin, C. (PI)

CS 288: Applied Causal Inference with Machine Learning and AI (MS&E 228)

Fundamentals of modern applied causal inference. Basic principles of causal inference and machine learning and how the two can be combined in practice to deliver causal insights and policy implications in real world datasets, allowing for high-dimensionality and flexible estimation. Lectures will provide foundations of these new methodologies and the course assignments will involve real world data (from social science, tech industry and healthcare applications) and synthetic data analysis based on these methodologies. Prerequisites: basic knowledge of probability and statistics. Recommended: 226 or equivalent.
Terms: Win | Units: 3

CS 293: Empowering Educators via Language Technology (EDUC 473)

This course explores the use of natural language processing (NLP) to support educators, by discovering, measuring, and analyzing high-leverage teaching practices. Topics include computational social science methods, ethics, bias and fairness, automated scoring, causal analyses, large language models, among others. Engaging with relevant papers, students will work towards a final project using NLP methods and a critical social scientific lens. Projects are pitched to a jury of educators at the end of the course.
Terms: Aut | Units: 2-4

CS 294A: Research Project in Artificial Intelligence

Student teams under faculty supervision work on research and implementation of a large project in AI. State-of-the-art methods related to the problem domain. Prerequisites: AI course from 220 series, and consent of instructor.
Last offered: Winter 2012 | Units: 3 | Repeatable for credit

CS 294S: Research Project in Software Systems and Security

Topics vary. Focus is on emerging research themes such as programmable open mobile Internet that spans multiple system topics such as human-computer interaction, programming systems, operating systems, networking, and security. May be repeated for credit. Prerequisites: CS 103 and 107.
Last offered: Autumn 2020 | Units: 3 | Repeatable for credit

CS 294W: Writing Intensive Research Project in Computer Science

Restricted to Computer Science and Computer Systems Engineering undergraduates. Students enroll in the CS 294W section attached to the CS 294 project they have chosen.
Last offered: Autumn 2020 | Units: 3

CS 295: Software Engineering

Software specification, testing and verification. The emphasis is on automated tools for developing reliable software. The course covers material---drawn primarily from recent research papers---on the technologyunderlying these tools. Assignments supplement the lectures with hands-on experience in using these tools and customizing them for solving new problems. The course is appropriate for students intending to pursue research in program analysis and verification, as well as for those who wish to add the use of advanced software tools to their skill set. Prerequisites: 108. Recommended: a project course such as 140, 143 or 145.
Terms: Win | Units: 3

CS 298: Seminar on Teaching Introductory Computer Science (EDUC 298)

Faculty, undergraduates, and graduate students interested in teaching discuss topics raised by teaching computer science at the introductory level. Prerequisite: consent of instructor.
Terms: Aut | Units: 1
Instructors: ; Gregg, C. (PI)

CS 300: Departmental Lecture Series

Priority given to first-year Computer Science Ph.D. students. CS Masters students admitted if space is available. Presentations by members of the department faculty, each describing informally his or her current research interests and views of computer science as a whole.
Terms: Aut | Units: 1

CS 309: Industrial Lectureships in Computer Science

Guest computer scientist. By arrangement. May be repeated for credit.
| Units: 1 | Repeatable for credit

CS 309A: Cloud Computing Seminar

For science, engineering, computer science, business, education, medicine, and law students. Cloud computing is bringing information systems out of the back office and making it core to the entire economy. Furthermore with the advent of smarter machines cloud computing will be integral to building a more precision planet. This class is intended for all students who want to begin to understand the implications of this technology. Guest industry experts are public company CEOs who are either delivering cloud services or using cloud services to transform their businesses.
Terms: Aut | Units: 1 | Repeatable for credit
Instructors: ; Chou, T. (PI)

CS 315B: Parallel Computing Research Project

Advanced topics and new paradigms in parallel computing including parallel algorithms, programming languages, runtime environments, library debugging/tuning tools, and scalable architectures. Research project. Prerequisite: consent of instructor.
Last offered: Autumn 2022 | Units: 3

CS 316: Advanced Multi-Core Systems

In-depth coverage of the architectural techniques used in modern, multi-core chips for mobile and server systems. Advanced processor design techniques (superscalar cores, VLIW cores, multi-threaded cores, energy-efficient cores), cache coherence, memory consistency, vector processors, graphics processors, heterogeneous processors, and hardware support for security and parallel programming. Students will become familiar with complex trade-offs between performance-power-complexity and hardware-software interactions. A central part of CS316 is a project on an open research question on multi-core technologies. Prerequisites: EE 180 (formerly 108B) and EE 282. Recommended: CS 149.
Last offered: Spring 2019 | Units: 3

CS 319: Topics in Digital Systems

Advanced material is often taught for the first time as a topics course, perhaps by a faculty member visiting from another institution. May be repeated for credit.
| Units: 3 | Repeatable for credit

CS 320: Value of Data and AI

Many of the most valuable companies in the world and the most innovative startups have business models based on data and AI, but our understanding about the economic value of data, networks and algorithmic assets remains at an early stage. For example, what is the value of a new dataset or an improved algorithm? How should investors value a data-centric business such as Netflix, Uber, Google, or Facebook? And what business models can best leverage data and algorithmic assets in settings as diverse as e-commerce, manufacturing, biotech and humanitarian organizations? In this graduate seminar, we will investigate these questions by studying recent research on these topics and by hosting in-depth discussions with experts from industry and academia. Key topics will include value of data quantity and quality in statistics and AI, business models around data, networks, scaling effects, economic theory around data, and emerging data protection regulations. Students will also conduct a group research projects in this field.nnPrerequisites: Sufficient mathematical maturity to follow the technical content; some familiarity with data mining and machine learning and at least an undergraduate course in statistics are recommended.
Last offered: Winter 2022 | Units: 3

CS 322: Triangulating Intelligence: Melding Neuroscience, Psychology, and AI (PSYCH 225)

This course will cover both classic findings and the latest research progress on the intersection of cognitive science, neuroscience, and artificial intelligence: How does the study of minds and machines inform and guide each other? What are the assumptions, representations, or learning mechanisms that are shared (across multiple disciplines, and what are different? How can we build a synergistic partnership between cognitive psychology, neuroscience, and artificial intelligence? We will focus on object perception and social cognition (human capacities, especially in infancy and early childhood) and the ways in which these capacities are formalized and reverse-engineered (computer vision, reinforcement learning). Through paper reading and review, discussion, and the final project, students will learn the common foundations shared behind neuroscience, cognitive science, and AI research and leverage them to develop their own research project in these areas. Recommended prerequisites: PSYCH 1, PSYCH 24/SYMSYS 1/CS 24, CS 221, CS 231N
Last offered: Winter 2022 | Units: 3

CS 323: The AI Awakening: Implications for the Economy and Society

Intelligent computer agents must reason about complex, uncertain, and dynamic environments. This course is a graduate level introduction to automated reasoning techniques and their applications, covering logical and probabilistic approaches. Topics include: logical and probabilistic foundations, backtracking strategies and algorithms behind modern SAT solvers, stochastic local search and Markov Chain Monte Carlo algorithms, variational techniques, classes of reasoning tasks and reductions, and applications. Enrollment by application: https://digitaleconomy.stanford.edu/about/the-ai-awakening-implications-for-the-economy-and-society/
Terms: Spr | Units: 3-4
Instructors: ; Brynjolfsson, E. (PI)

CS 323A: The AI Awakening: Implications for the Economy and Society

This course offers an overview of blockchain governance and DAOs, including the governance of layer-1 blockchains, DAO tooling, on-chain and off-chain voting, delegation and constitutional design, identity, and privacy. We will cover these topics both from a technical perspective and from a social scientific perspective, and will include a range of guests from the web3 space.
| Units: 3

CS 324: Advances in Foundation Models

Foundation models (FMs) are transforming the landscape of AI in research and industry. Such models (e.g., GPT-3, CLIP, Stable Diffusion) are trained on large amounts of broad data and are adaptable to a wide range of downstream tasks. In this course, students will learn fundamentals behind the models and algorithms, systems and infrastructure, and ethics and societal impacts of foundation models, with an emphasis on gaining hands-on experience and identifying real-world use-cases for FMs. Students will hear from speakers in industry working on foundation models in the wild. The main class assignment will be a quarter-long final project, involving either researching the capabilities of FMs or building an FM-powered application.
Last offered: Winter 2023 | Units: 3

CS 324H: History of Natural Language Processing

Intellectual history of computational linguistics, natural language processing, and speech recognition, using primary sources. Reading of seminal early papers, interviews with early pioneers, with the goal of understanding the origins and intellectual development of the field. Prerequisites: (strictly required) completion of a Stanford graduate NLP course (CS 224C/N/U/S, 329X, 384).
Terms: Win | Units: 3-4

CS 325B: Data for Sustainable Development (EARTHSYS 162, EARTHSYS 262)

The sustainable development goals (SDGs) encompass many important aspects of human and ecosystem well-being that are traditionally difficult to measure. This project-based course will focus on ways to use inexpensive, unconventional data streams to measure outcomes relevant to SDGs, including poverty, hunger, health, governance, and economic activity. Students will apply machine learning techniques to various projects outlined at the beginning of the quarter. The main learning goals are to gain experience conducting and communicating original research. Prior knowledge of machine learning techniques, such as from CS 221, CS 229, CS 231N, STATS 202, or STATS 216 is required. Open to both undergraduate and graduate students. Enrollment limited to 24. Students must apply for the class by filling out the form at https://goo.gl/forms/9LSZF7lPkHadix5D3. A permission code will be given to admitted students to register for the class.
Terms: Aut | Units: 3-5 | Repeatable for credit

CS 326: Topics in Advanced Robotic Manipulation

This course provides a survey of the most important and influential concepts in autonomous robotic manipulation. It includes classical concepts that are still widely used and recent approaches that have changed the way we look autonomous manipulation. We cover approaches towards motion planning and control using visual and tactile perception as well as machine learning. This course is especially concerned with new approaches for overcoming challenges in generalization from experience, exploration of the environment, and learning representation so that these methods can scale to real problems. Students are expected to present one paper in a tutorial, debate a paper once from the Pro and once from the Con side. They are also expected to propose an original research project and work on it towards a research paper. Recommended: CS 131, 223A, 229 or equivalents.
Terms: Aut | Units: 3-4
Instructors: ; Bohg, J. (PI); Chen, C. (TA)

CS 327A: Advanced Robotic Manipulation (ME 323)

Advanced control methodologies and novel design techniques for complex human-like robotic and bio mechanical systems. Class covers the fundamentals in operational space dynamics and control, elastic planning, human motion synthesis. Topics include redundancy, inertial properties, haptics, simulation, robot cooperation, mobile manipulation, human-friendly robot design, humanoids and whole-body control. Additional topcs in emerging areas are presented by groups of students at the end-of-quarter mini-symposium. Prerequisites: 223A or equivalent.
Last offered: Spring 2023 | Units: 3

CS 328: Foundations of Causal Machine Learning

Theoretical foundations of modern techniques at the intersection of causal inference and machine learning. Topics may include: semi-parametric inference and semi-parametric efficiency, modern statistical learning theory, Neyman orthogonality and double/debiased machine learning, theoretical foundations of high-dimensional linear regression, theoretical foundations of non-linear regression models, such as random forests and neural networks, adaptive non-parametric estimation of conditional moment models, estimation and inference on heterogeneous treatment effects, causal inference and reinforcement learning, off-policy evaluation, adaptive experimentation and inference.
Terms: Aut | Units: 3 | Repeatable for credit
Instructors: ; Syrgkanis, V. (PI)

CS 329: Topics in Artificial Intelligence

Advanced material is often taught for the first time as a topics course, perhaps by a faculty member visiting from another institution. May be repeated for credit.
| Units: 3 | Repeatable for credit

CS 329D: Machine Learning Under Distributional Shifts

The progress of machine learning systems has seemed remarkable and inexorable a wide array of benchmark tasks including image classification, speech recognition, and question answering have seen consistent and substantial accuracy gains year on year. However, these same models are known to fail consistently on atypical examples and domains not contained within the training data. The goal of the course is to introduce the variety of areas in which distributional shifts appear, as well as provide theoretical characterization and learning bounds for distribution shifts. Prerequisites: CS229 or equivalent. Recommended: CS229T (or basic knowledge of learning theory).
Last offered: Spring 2023 | Units: 3

CS 329E: Machine Learning on Embedded Systems (EE 292D)

This is a project-based class where students will learn how to develop machine learning models for execution in resource constrained environments such as embedded systems. In this class students will learn about techniques to optimize machine learning models and deploy them on a device such as a Arduino, Raspberry PI, Jetson, or Edge TPUs. The class has a significant project component. Prerequisites: CS 107(required), CS 229 (recommended), CS 230 (recommended).
Last offered: Autumn 2022 | Units: 3

CS 329H: Machine Learning from Human Preferences

Machine learning (ML) from human preferences provides mechanisms for capturing human feedback, which is used to design loss functions or rewards that are otherwise difficult to specify quantitatively, e.g., for socio-technical applications such as algorithmic fairness and many language and robotic tasks. While learning from human preferences has emerged as an increasingly important component of modern machine learning, e.g., credited with advancing the state of the art in language modeling and reinforcement learning, existing approaches are largely reinvented independently in each subfield, with limited connections drawn among them. This course will cover the foundations of learning from human preferences from first principles and outline connections to the growing literature on the topic. This includes: Inverse reinforcement learning, which uses human preferences to specify the reinforcement learning reward function; Metric elicitation, which uses human preferences to specify tradeoffs for cost-sensitive classification; Reinforcement learning from human feedback, where human preferences are used to align a pre-trained language model. This is a graduate-level course. By the end of the course, students should be able to understand and implement state-of-the-art learning from human feedback and be ready to conduct research on these topics. Prerequisites: Recommend CS 221 and CS 229
Terms: Aut | Units: 3

CS 329M: Machine Programming

The field of machine programming (MP) is concerned with the automation of software development. Given the recent advances in software algorithms, hardware efficiency and capacity, and an ever increasing availability of code data, it is now possible to train machines to help develop software. In this course, we teach students how to build real-world MP systems. We begin with a high-level overview of the field, including an abbreviated analysis of state-of-the-art (e.g., Merly Mentor). Next, we discuss the foundations of MP and the key areas for innovation, some of which are unique to MP. We close with a discussion of current limitations and future directions of MP. This course includes a nine-week hands-on project, where students (as individuals or in a small group) will create their own MP system and demonstrate it to the class. This course is primary intended for graduate students (it is not recommended for undergraduate students without first reviewing that the course prerequisites are met).
Terms: Aut | Units: 3-4

CS 329P: Practical Machine Learning

Applying Machine Learning (ML) to solve real problems accurately and robustly requires more than just training the latest ML model. First, you will learn practical techniques to deal with data. This matters since real data is often not independently and identically distributed. It includes detecting covariate, concept, and label shifts, and modeling dependent random variables such as the ones in time series and graphs. Next, you will learn how to efficiently train ML models, such as tuning hyper-parameters, model combination, and transfer learning. Last, you will learn about fairness and model explainability, and how to efficiently deploy models. This class will teach both statistics, algorithms and code implementations. Homeworks and the final project emphasize solving real problems. Prerequisites: Python programing and machine learning (CS 229), basic statistics. Please view course website here: https://c.d2l.ai/stanford-cs329p/
Last offered: Autumn 2021 | Units: 3-4

CS 329R: Race and Natural Language Processing (LINGUIST 281A, PSYCH 257A)

The goal of this practicum is to integrate methods from natural language processing with social psychological perspectives on race to build practical systems that address significant societal issues. Readings will be drawn broadly from across the social sciences and computer science. Students will work with large, complex datasets and participate in research involving community partnerships relevant to race and natural language processing. Prerequisite: CS224N, PSYCH290, or equivalent background in natural language processing. Students interested in participating should complete the online application for permission at https://web.stanford.edu/class/cs329r/. Limited enrollment.
Terms: Aut | Units: 3

CS 329S: Machine Learning Systems Design

This project-based course covers the iterative process for designing, developing, and deploying machine learning systems. It focuses on systems that require massive datasets and compute resources, such as large neural networks. Students will learn about data management, data engineering, approaches to model selection, training, scaling, how to continually monitor and deploy changes to ML systems, as well as the human side of ML projects. In the process, students will learn about important issues including privacy, fairness, and security. Pre-requisites: At least one of the following; CS229, CS230, CS231N, CS224N or equivalent. Students should have a good understanding of machine learning algorithms and should be familiar with at least one framework such as TensorFlow, PyTorch, JAX.
Last offered: Winter 2022 | Units: 3-4

CS 329T: Trustworthy Machine Learning

This course will provide an introduction to state-of-the-art ML methods designed to make AI more trustworthy. The course focuses on four concepts: explanations, fairness, privacy, and robustness. We first discuss how to explain and interpret ML model outputs and inner workings. Then, we examine how bias and unfairness can arise in ML models and learn strategies to mitigate this problem. Next, we look at differential privacy and membership inference in the context of models leaking sensitive information when they are not supposed to. Finally, we look at adversarial attacks and methods for imparting robustness against adversarial manipulation.Students will gain understanding of a set of methods and tools for deploying transparent, ethically sound, and robust machine learning solutions. Students will complete labs, homework assignments, and discuss weekly readings. Prerequisites: CS229 or similar introductory Python-based ML class; knowledge of deep learning such as CS230, CS231N; familiarity with ML frameworks in Python (scikit-learn, Keras) assumed.
Terms: Aut | Units: 3

CS 329X: Human Centered NLP (CS 129X)

Recent advances in natural language processing (NLP), especially around large pretrained models, have enabled extensive successful applications. However, there are growing concerns about the negative aspects of NLP systems, such as biases and a lack of input from users. This course gives an overview of human-centered techniques and applications for NLP, ranging from human-centered design thinking to human-in-the-loop algorithms, fairness, and accessibility. Along the way, we will cover machine-learning techniques which are especially relevant to NLP and to human experiences. Prerequisite: CS224N or CS224U, or equivalent background in natural language processing. Prerequisite: CS224N or CS224U, or equivalent background in natural language processing.
Last offered: Spring 2023 | Units: 3-4

CS 330: Deep Multi-task and Meta Learning

While deep learning has achieved remarkable success in supervised and reinforcement learning problems, such as image classification, speech recognition, and game playing, these models are, to a large degree, specialized for the single task they are trained for. This course will cover the setting where there are multiple tasks to be solved, and study how the structure arising from multiple tasks can be leveraged to learn more efficiently or effectively. This includes: goal-conditioned reinforcement learning techniques that leverage the structure of the provided goal space to learn many tasks significantly faster; meta-learning methods that aim to learn efficient learning algorithms that can learn new tasks quickly; curriculum and lifelong learning, where the problem requires learning a sequence of tasks, leveraging their shared structure to enable knowledge transfer. This is a graduate-level course. By the end of the course, students should be able to understand and implement the state-of-the-art multi-task learning algorithms and be ready to conduct research on these topics. Prerequisites: CS 229 or equivalent. Familiarity with deep learning, reinforcement learning, and machine learning is assumed.
Terms: Aut | Units: 3

CS 331B: Interactive Simulation for Robot Learning

This course provides a research survey of advanced methods for robot learning in simulation, analyzing the simulation techniques and recent research results enabled by advances in physics and virtual sensing simulation. The course covers two main components: agent-environment interactions and domains for multi-agent and human-robot interaction. First, we cover agent-environment interactions by studying novel simulation environments for robotics, imitation and reinforcement learning methods, simulation for navigation and manipulation and `sim2real' techniques. In the second part, we explore models and algorithms for simulation and robot learning in multi-agent domains and human-robot interaction, studying the principles of learning for interactive tasks in which each agent collaborates to accomplish tasks. The topics include domains of social navigation, human-robot collaborative manipulation and multi-agent settings.nnThis a project-based seminar class. Projects will leverage the state-of-the-art simulation environment iGibson, in which students will develop simulations to explore learning and planning methods for diverse domains. We will provide a list of suggested projects but students might also propose an original idea. The course will cover a set of research papers with presentations by students. This is a research field in rapid transformation with exciting research lines. The goal of the class is to provide practical experience and understanding of the main research lines to enable students to conduct innovative research in this field.
Last offered: Spring 2021 | Units: 3

CS 332: Advanced Survey of Reinforcement Learning

This class will provide a core overview of essential topics and new research frontiers in reinforcement learning. Planned topics include: model free and model based reinforcement learning, policy search, Monte Carlo Tree Search planning methods, off policy evaluation, exploration, imitation learning, temporal abstraction/hierarchical approaches, safety and risk sensitivity, human-in-the-loop RL, inverse reinforcement learning, learning to communicate, and insights from human learning. Students are expected to create an original research paper on a related topic. Prerequisites: CS 221 or AA 238/CS 238 or CS 234 or CS 229 or similar experience.
Last offered: Autumn 2022 | Units: 3

CS 333: Algorithms for Interactive Robotics

AI agents need to collaborate and interact with humans in many different settings such as bots operating on social media and crowdsourcing platforms, AI assistants brokering transactions on electronic marketplaces, autonomous vehicles driving alongside humans, or robots interacting with and assisting humans in homes. Our goal in this class is to learn about and design algorithms that enable robots and AI agents to reason about their actions, interact with one another, the humans, and the environment they live in, as well as plan safe strategies that humans can trust and rely on. This is a project-based graduate course that studies algorithms in robotics, machine learning, and control theory, which can improve the state-of-the-art human-AI systems. nnRecommended: Introductory course in AI (CS 221) and Machine Learning (CS 229).
Last offered: Winter 2022 | Units: 3-4

CS 335: Fair, Accountable, and Transparent (FAccT) Deep Learning

Deep learning-based AI systems have demonstrated remarkable learning capabilities. A growing field in deep learning research focuses on improving the Fairness, Accountability, and Transparency (FAccT) of a model in addition to its performance. Although FAccT will be difficult to achieve, emerging technical approaches in this topic show promise in making better FAccT AI systems. In this course, we will study the rigorous computer science necessary foundations for FAccT deep learning and dive into the technical underpinnings of topics including fairness, robustness, interpretability, accountability, and privacy. These topics reflect state-of-the-art research in FAccT, are socially important, and they have strong industrial interest due to government and other policy regulation. This course will focus on the algorithmic and statistical methods needed to approach FAccT AI from a deep learning perspective. We will also discuss several application areas where we can apply these techniques. Prerequisites: Intermediate knowledge of statistics, machine learning, and AI. Qualified students will have taken any one of the following, or their advanced equivalents: CS224N, CS230, CS231N, CS236, CS273B. Alternatively, students who have taken CS229 or have equivalent knowledge can be admitted with the permission of the instructors.
| Units: 3

CS 336: Language Modeling from Scratch

Language models serve as the cornerstone of modern natural language processing (NLP) applications and open up a new paradigm of having a single general purpose system address a range of downstream tasks. As the field of artificial intelligence (AI), machine learning (ML), and NLP continues to grow, possessing a deep understanding of language models becomes essential for scientists and engineers alike. This course is designed to provide students with a comprehensive understanding of language models by walking them through the entire process of developing their own. Drawing inspiration from operating systems courses that create an entire operating system from scratch, we will lead students through every aspect of language model creation, including data collection and cleansing for pre-training, transformer model construction, model training, and evaluation before deployment. Application required, apply at https://docs.google.com/forms/d/e/1FAIpQLSdW0HgT8MHzdM8cgapLWqX2ZPP1yHSX52R_r5JzF52poqXsHg/viewform
Terms: Spr | Units: 3-5

CS 337: AI-Assisted Care (MED 277)

AI has been advancing quickly, with its impact everywhere. In healthcare, innovation in AI could help transforming of our healthcare system. This course offers a diverse set of research projects focusing on cutting edge computer vision and machine learning technologies to solve some of healthcare's most important problems. The teaching team and teaching assistants will work closely with students on research projects in this area. Research projects include Care for Senior at Senior Home, Surgical Quality Analysis, AI Assisted Parenting, Burn Analysis & Assessment and more. AI areas include Video Understanding, Image Classification, Object Detection, Segmentation, Action Recognition, Deep Learning, Reinforcement Learning, HCI and more. The course is open to students in both school of medicine and school of engineering.
Terms: Aut | Units: 1-4

CS 338: Physical Human Robot Interaction

Robotics researchers and futurists have long dreamed of robots that can serve as assistants or caregivers. One important research area to develop such robots in the immediate future is Physical Human-Robot Interaction (pHRI). Assistive robots have the potential to provide adaptable and intelligent assistance to people in need, but developing such a robot is challenging because the robot needs to coordinate its motion with human, often through physical contacts. Reliable mechanical and control methods need to be developed in consideration of actively participating humans, while safety and dependability issues have to be addressed to successfully introduce robots in everyday environments. In this hands-on project-based course, students will learn about future opportunities and present realities for autonomous robots that provide physical assistance to humans. Students will also gain experience with key technologies for the creation of autonomous robots, including perception, action, human-robot interaction, and learning. Prerequisites: CS223A
| Units: 3

CS 339H: Human-Computer Interaction and AI/ML

Understanding the human side of AI/ML based systems requires understanding both how the system-side AI works, but also how people think about, understand, and use AI tools and systems. This course will cover how what AI components and systems currently exits, along with how mental models and user models are made. These models lead to user expectations of AI systems are formed, and ultimately to design guidelines to avoid disappointing end-users by creating unintelligible AI tools that are based on a cryptic depiction of how things work. We'll also cover the ethics of AI data collection and model building, as well as how to build fair systems.
Last offered: Autumn 2022 | Units: 3

CS 339N: Machine Learning Methods for Neural Data Analysis (NBIO 220, STATS 220, STATS 320)

With modern high-density electrodes and optical imaging techniques, neuroscientists routinely measure the activity of hundreds, if not thousands, of cells simultaneously. Coupled with high-resolution behavioral measurements, genetic sequencing, and connectomics, these datasets offer unprecedented opportunities to learn how neural circuits function. This course will study statistical machine learning methods for analysing such datasets, including: spike sorting, calcium deconvolution, and voltage smoothing techniques for extracting relevant signals from raw data; markerless tracking methods for estimating animal pose in behavioral videos; network models for connectomics and fMRI data; state space models for analysis of high-dimensional neural and behavioral time-series; point process models of neural spike trains; and deep learning methods for neural encoding and decoding. We will develop the theory behind these models and algorithms and then apply them to real datasets in the homeworks and final project.This course is similar to STATS215: Statistical Models in Biology and STATS366: Modern Statistics for Modern Biology, but it is specifically focused on statistical machine learning methods for neuroscience data. Prerequisites: Students should be comfortable with basic probability (STATS 116) and statistics (at the level of STATS 200). This course will place a heavy emphasis on implementing models and algorithms, so coding proficiency is required.
Last offered: Winter 2023 | Units: 3

CS 339R: Collaborative Robotics (ME 326)

This course focuses on how robots can be effective teammates with other robots and human partners. Concepts and tools will be reviewed for characterizing task objectives, robot perception and control, teammate behavioral modeling, inter-agent communication, and team consensus. We will consider the application of these tools to robot collaborators, wearable robotics, and the latest applications in the relevant literature. This will be a project-based graduate course, with the implementation of algorithms in either python or C++.
Terms: Win | Units: 3

CS 340: Topics in Computer Systems

Topics vary every quarter, and may include advanced material being taught for the first time. May be repeated for credit.
| Units: 3-4

CS 340LX: Advanced Operating System Lab: Accelerated (II)

This is an implementation-heavy, lab-based class that continues the topics from CS240LX. The labs will be more specialized, with an emphasis on research-worthy topics and techniques. The class format will follow CS240LX: two labs, twice a week, along with a set of research papers for context. Enrollment requires instructor permission.
Last offered: Autumn 2022 | Units: 2

CS 340R: Rusty Systems

Language shapes thought; for 40 years, software systems and some of their research challenges have been defined by the C language. In the past 5 years, this has begun to change, with new languages (Rust, Go, coq) becoming competitors to C in large classes of systems. CS340R is a project-centric course that examines how the Rust programming language changes software systems, solving some problems while presenting new ones. This course seeks to ask and start to answer a simple question: "What are the most important open research challenges for software systems written in Rust?"
Terms: Spr | Units: 3

CS 341: Project in Mining Massive Data Sets

Students work in teams of three to solve a problem involving the analysis of a massive dataset. A proposal, early in March is required. There will be an information session (announced in CS246) explaining the datasets available in early March and this information will also be on the CS341 course website in late February. Each accepted team will be assigned a mentor who will work with them regularly throughout the quarter. Teams will also be provided access to significant computing resources on a commercial public cloud.
Last offered: Spring 2020 | Units: 3

CS 342: Building for Digital Health (MED 253)

This project-based course will provide a comprehensive overview of key requirements in the design and full-stack implementation of a digital health research application. Several pre-vetted and approved projects from the Stanford School of Medicine will be available for students to select from and build. Student teams learn about all necessary approval processes to deploy a digital health solution (data privacy clearance/I RB approval, etc.) and be guided in the development of front-end and back-end infrastructure using best practices. The final project will be the presentation and deployment of a fully approved digital health research application. CS106A, CS106B, Recommended: CS193P/A, CS142, CS47, CS110. Limited enrollment for this course. Apply for enrollment permission here: https://stanforduniversity.qualtrics.com/jfe/form/SV_9ThVhqf4zyhzheS
Terms: Win | Units: 3-4

CS 343D: Domain-Specific Programming Models and Compilers

This class will cover the principles and practices of domain-specific programming models and compilers for dense and sparse applications in scientific computing, data science, and machine learning. We will study programming models from the recent literature, categorize them, and discuss their properties. We will also discuss promising directions for their compilation, including the separation of algorithm, schedule, and data representation, polyhedral compilation versus rewrite rules, and sparse iteration theory. Prerequisites: CS143 or equivalent
Terms: Win | Units: 3

CS 343S: Domain-Specific Language Design Studio

This is a design-studio course for the creation of domain-specific languages (DSLs). We will start with lectures teaching fundamental skills for designing and implementing DSLs, followed by a long term project designing and implementing a DSL of the student's choice. The course will particularly emphasize the role that languages can play in tasks that we do not usually think of as programming, such as DSLs for knitting patterns or geometric constructions.
Terms: Spr | Units: 3

CS 344: Topics in Computer Networks

This class could also be called "Build an Internet Router": Students work in teams of two to build a fully functioning Internet router, gaining hands-on experience building the hardware and software of a high-performance network system. Students design the control plane in C on a linux host and design the data plane in the new P4 language on both a software switch and a high-speed hardware switch (e.g., Intel Tofino). For the midterm milestone, teams must demonstrate that their routers can interoperate with the other teams by building a small scale datacenter topology. In the final 3-4 weeks of the class, teams will participate in an open-ended design challenge. Prerequisites: At least one student in each team must have taken CS144 at Stanford and completed Lab 3 (static router). No Verilog or FPGA programming experience is required. May be repeated for credit.
Last offered: Spring 2021 | Units: 3 | Repeatable 3 times (up to 9 units total)

CS 345S: Data-intensive Systems for the Next 1000x

The last decade saw enormous shifts in the design of large-scale data-intensive systems due to the rise of Internet services, cloud computing, and Big Data processing. Where will we see the next 1000x increases in scale and data volume, and how should data-intensive systems accordingly evolve? This course will critically examine a range of trends, including the Internet of Things, drones, smart cities, and emerging hardware capabilities, through the lens of software systems research and design. Students will perform a comparative analysis by reading and discussing cutting-edge research while performing their own original research. Prerequisites: Strong background in software systems, especially databases (CS 245) and distributed systems (CS 244B), and/or machine learning (CS 229). Undergraduates who have completed CS 245 are strongly encouraged to attend.
Last offered: Autumn 2016 | Units: 3-4

CS 347: Human-Computer Interaction: Foundations and Frontiers

(Previously numbered CS376.) How will the future of human-computer interaction evolve? This course equips students with the major animating theories of human-computer interaction, and connects those theories to modern innovations in research. Major theories are drawn from interaction (e.g., tangible and ubiquitous computing), social computing (e.g., Johansen matrix), and design (e.g., reflective practitioner, wicked problems), and span domains such as AI+HCI (e.g., mixed initiative interaction), accessibility (e.g., ability based design), and interface software tools (e.g., threshold/ceiling diagrams). Students read and comment on multiple research papers per week, and perform a quarter-long research project. Prerequisites: For CS and Symbolic Systems undergraduates/masters students, CS147 or CS247. No prerequisite for PhD students or students outside of CS and Symbolic Systems.
Terms: Spr | Units: 3-4 | Repeatable for credit

CS 348A: Computer Graphics: Geometric Modeling & Processing

The mathematical tools needed for the geometrical aspects of computer graphics and especially for modeling smooth shapes. The course covers classical computer-aided design, geometry processing, and data-driven approaches for shape generation. Fundamentals: homogeneous coordinates and transformation. Theory of parametric and implicit curve and surface models: polar forms, Bézier arcs and de Casteljau subdivision, continuity constraints, B-splines, tensor product, and triangular patch surfaces. Subdivision surfaces and multi-resolution representations of geometry. Surface reconstruction from scattered data points. Geometry processing on meshes, including simplification and parametrization. Deep neural generative models for 3D geometry: parametric and implicit approaches, VAEs and GANs. Prerequisite: linear algebra at the level of CME103. Recommended: CS248.
Last offered: Winter 2021 | Units: 3

CS 348B: Computer Graphics: Image Synthesis Techniques

Intermediate level, emphasizing high-quality image synthesis algorithms and systems issues in rendering. Topics include: Reyes and advanced rasterization, including motion blur and depth of field; ray tracing and physically based rendering; Monte Carlo algorithms for rendering, including direct illumination and global illumination; path tracing and photon mapping; surface reflection and light source models; volume rendering and subsurface scattering; SIMD and multi-core parallelism for rendering. Written assignments and programming projects. Prerequisite: 248 or equivalent. Recommended: Fourier analysis or digital signal processing.
Last offered: Spring 2022 | Units: 3-4

CS 348C: Computer Graphics: Animation and Simulation

Core mathematics and methods for computer animation and motion simulation. Traditional animation techniques. Physics-based simulation methods for modeling shape and motion: particle systems, constraints, rigid bodies, deformable models, collisions and contact, fluids, and fracture. Animating natural phenomena. Methods for animating virtual characters and crowds. Additional topics selected from data-driven animation methods, realism and perception, animation systems, motion control, real-time and interactive methods, and multi-sensory feedback. Recommended: CS 148 and/or 205A. Prerequisite: linear algebra.
Terms: Win | Units: 3

CS 348E: Character Animation: Modeling, Simulation, and Control of Human Motion

This course introduces technologies and mathematical tools for simulating, modeling, and controlling human/animal movements. Students will be exposed to integrated knowledge and techniques across computer graphics, robotics, machine learning and biomechanics. The topics include numerical integration, 3D character modeling, keyframe animation, skinning/rigging, multi-body dynamics, human kinematics, muscle dynamics, trajectory optimization, learning policies for motor skills, and motion capture. Students who successfully complete this course will be able to use and modify physics simulator for character animation or robotic applications, to design/train control policies for locomotion or manipulation tasks on virtual agents, and to leverage motion capture data for synthesizing realistic virtual humans. The evaluation of this course is based on three assignments and an open-ended research project. Recommended Prerequisite: CS148 or CS205A
Last offered: Spring 2023 | Units: 3

CS 348I: Computer Graphics in the Era of AI

This course introduces deep learning methods and AI technologies applied to four main areas of Computer Graphics: rendering, geometry, animation, and imaging. We will study a wide range of problems on content creation for images, shapes, and animations, recently advanced by deep learning techniques. For each problem, we will understand its conventional solutions, study the state-of-the-art learning-based approaches, and critically evaluate their results as well as the impacts to researchers and practitioners in Computer Graphics. The topics include differentiable rendering/neural rendering, BRDF estimation, texture synthesis, denoising, procedural modeling, view synthesis, colorization, style transfer, motion synthesis, differentiable physics simulation, and reinforcement learning. Through programming projects and homework, students who successfully complete this course will be able to use neural rendering algorithms for image manipulation, apply neural procedural modeling for shape and scene synthesis, exploit data-driven methods for simulating physical phenomena, and implement policy learning algorithms for creating character animation. Recommended Prerequisites: CS148, CS231N
Terms: Win | Units: 3-4

CS 348K: Visual Computing Systems

Visual computing tasks such as computational photography, image/video understanding, and real-time 3D graphics are key responsibilities of modern computer systems ranging from sensor-rich smart phones, autonomous robots, and large data centers. These workloads demand exceptional system efficiency and this course examines the key ideas, techniques, and challenges associated with the design of parallel, heterogeneous systems that execute and accelerate visual computing applications. This course is intended for graduate and advanced undergraduate-level students interested in architecting efficient graphics, image processing, and computer vision systems (both new hardware architectures and domain-optimized programming frameworks) and for students in graphics, vision, and ML that seek to understand throughput computing concepts so they can develop scalable algorithms for these platforms. Students will perform daily research paper readings, complete simple programming assignments, and compete a self-selected term project. Prerequisites: CS 107 or equivalent. Highly recommended: Parallel Computing (CS149) or Computer Architecture (EE 282). Students will benefit from some background in deep learning (CS 230, CS 231N), computer vision (CS 231A), digital image processing (CS 232) or computer graphics (CS248).
Terms: Spr | Units: 3-4
Instructors: ; Fatahalian, K. (PI)

CS 348N: Neural Models for 3D Geometry

Course Description: Generation of high-quality 3D models and scenes by leveraging machine learning tools and approaches. Survey of geometry representations. Public 3D object and scene data sets. Neural architectures for geometry, including deep architectures for point clouds and meshes. Generative models for 3D: autoencoders, GANs, neural implicits, neural ODEs, autoregressive models. Conditional generation based on images or partial geometry. Variation generation. Evaluation metrics for content generation. Use of synthetic data in ML training pipelines. Prerequisites: CS148 and the rudiments of deep learning. Recommended: CS229.
Last offered: Spring 2023 | Units: 3

CS 349: Topics in Programming Systems

Advanced material is often taught for the first time as a topics course, perhaps by a faculty member visiting from another institution. May be repeated for credit.
Last offered: Winter 2006 | Units: 3 | Repeatable for credit

CS 349D: Cloud Computing Technology

The largest change in the computer industry over the past twenty years has arguably been the emergence of cloud computing: organizations are increasingly developing their workloads to be cloud native, using global-scale compute, storage, and communication services that were simply not possible with private infrastructure. This research seminar covers the latest technical advances and open issues in cloud computing, including cloud infrastructure for AI inference and training, cloud databases and data lakes, resource management, serverless computing, confidential computing, multi-cloud computing, and AI for cloud management. Students will propose and develop an original research project in cloud computing. Prerequisites: Background in computer systems recommended but not required ( CS 111/240, 144/244, 244B or 245).
Terms: Spr | Units: 3
Instructors: ; Kozyrakis, C. (PI)

CS 349F: Technology for Financial Systems

Financial systems have spurred technological innovation and, in turn, are driven byncutting-edge technological developments. This course explores the synergy.nStudents will learn from faculty and industry experts how to build faster and fairer financial systems. Topics include network infrastructure: data center fabrics, ultra-low latency trading systems; cloud computing infrastructure: building large-scale risk computation platforms using virtual machines, containers and serverless computing. A particular focus will be on challenges and opportunities presented by cloud-native financial exchanges: the course will provide such an exchange and student groups will write programs for high-frequency and algorithmic trading. Recommended: Knowledge of basic Networking, OS, or Distributed Systems (CS 144, 140, or equivalent), as well as basic EE courses (EE 178) will be useful.
Last offered: Spring 2023 | Units: 2

CS 349G: Selected Reading of Ph.D. Dissertations

Detailed reading of 5 selected Ph.D. dissertations within a field of computer science. For undergraduates, the course is an introduction to advanced foundational concepts within a field as well as an in-depth look at detailed research. For graduate students, the course focuses on historical reading as well as an opportunity to read dissertations and discuss their strengths and weaknesses. Both groups of students discuss historical context, how ideas succeeded or did not and why, and how they manifest in modern technology. The discussion of each dissertation completes with a guest lecture by its author. The selected dissertations change with each offering but are always from a coherent time period and topic area. Prerequisites: CS110 for undergraduates, EE282 for graduate students.
Last offered: Winter 2021 | Units: 3 | Repeatable 10 times (up to 30 units total)

CS 349H: Software Techniques for Emerging Hardware Platforms (EE 292Y)

Research seminar on software techniques for emerging computational substrates with guest lectures from hardware designers from research and industry. This seminar explores the benefits of novel hardware technologies, the challenges gating broad adoption of these technologies, and how software techniques can help mitigate these challenges and improve the usability of these hardware platforms. Note that the computational substrates discussed vary depending on the semester. Topics covered include: In-memory computing platforms, dynamical system-solving mixed-signal devices, exible and bendable electronics, neuromorphic computers, intermittent computing platforms, ReRAMs, DNA-based storage, and optical computing platforms. Prerequisites: CS107 or CS107E (required) and EE180 (recommended).
Terms: Aut | Units: 3
Instructors: ; Achour, S. (PI); Park, R. (TA)

CS 349M: Machine Learning for Software Engineering

In recent years, tools based on machine learning have become increasingly prevalent in the software engineering field. The ubiquity of machine learning is an important factor, but just as important is the availability of software engineering data: there are billions of lines of code available in public repositories (e.g. on GitHub), there is the change history of that code, there are discussion fora (e.g. Stack Overflow) that contain a wealth of information for developers, companies have access to telemetry on their apps from millions of users, and so on. The scale of software engineering data has permitted machine learning and statistical approaches to imagine tools that are beyond the capabilities of traditional, semantics-based approaches. In this graduate seminar, students will learn the various ways in which code and related artifacts can be treated as data, and how various developer tools can be built by applying machine learning over this data. The course will consist of discussion of a selection of research papers, as well as a hands-on project that can be done in small groups. Prerequisites: Familiarity with basic machine learning, and either CS143 or CS295.
Last offered: Spring 2022 | Units: 3-4

CS 349T: Project Lab: Video and Audio Technology for Live Theater in the Age of COVID (EE 192T)

This class is part of a multi-disciplinary collaboration between researchers in the CS, EE, and TAPS departments to design and develop a system to host a live theatrical production that will take place over the Internet in the winter quarter. The performing arts have been greatly affected by a transition to theater over Zoom and its competitors, none of which are great at delivering low-latency audio to actors, or high-quality audio and video to the audience, or feedback from the audience back to actors. These are big technical challenges. During the fall, we'll build a system that improves on current systems in certain areas: audio quality and latency over spotty Internet connections, video quality and realistic composited scenes with multiple actors, audience feedback, and perhaps digital puppetry. Students will learn to be part of a deadline-driven software development effort working to meet the needs of a theater director and creative specialists -- while communicating the effect of resource limits and constraints to a nontechnical audience. This is an experimental hands-on laboratory class, and our direction may shift as the creative needs of the theatrical production evolve. Based on the success of class projects and subsequent needs, some students may be invited to continue in the winter term with a research appointment (for pay or credit) to operate the system you have built and instruct actors and creative professionals how to work with the system through rehearsals and the final performance before spring break. Prerequisites: CS110 or EE102A. Recommended: familiarity with Linux, C++, and Git.
Last offered: Autumn 2020 | Units: 3

CS 350: Secure Compilation

This course explores the field of secure compilation, which sits at the intersection between security and programming languages. The course covers the following topics: threat models for secure compilers, formal criteria for secure compilers to adhere to, security relevance of secure compilation criteria, security architectures employed to achieve secure compilation, proof techniques for secure compilation with a focus on backtranslation.
Last offered: Spring 2021 | Units: 3

CS 351: Open Problems in Coding Theory

Coding theory is the study of how to encode data to protect it from noise. Coding theory touches CS, EE, math, and many other areas, and there are exciting open problems at all of these frontiers. In this class, we will explore these open problems by reading recent research papers and thinking about some open problems together. Required work will involve reading and presenting research papers, as well as working in small groups at these open problems and presenting progress. (Solving an open problem is not required!) Topics will depend on student interest and may include locality, coded computation, index coding, interactive communication, and group testing. Prerequisites: CS250 / EE387 or EE388; or linear algebra and permission of the instructor.
Last offered: Spring 2021 | Units: 3

CS 352B: Blockchain Governance

This course offers an overview of blockchain governance and Decentralized Autonomous Organizations (DAOs), with topics including DAO tooling, on-chain and off-chain voting, delegation, constitutional design, alternative governance mechanisms, identity, and privacy. We will cover these topics and others from technical, social science, and legal perspectives, and we will include a range of guests from the web3 space as well as several speakers who are on the frontiers of DAO research. The course presumes some basic familiarity with blockchain and cryptocurrencies, but deep technical facility is not required, i.e., successful completion of CS 251 or LAW 1043 is more than enough. Elements used in grading: Homework and papers. There are no examinations. Grading elements and the course itself are designed so that students with diverse expertise and backgrounds (law, technical, business, etc.) have an equal opportunity to do well and have a powerful learning experience. Cross-listed with LAW 1078. The course will be taught in law school classrooms. In addition to the listed Stanford faculty instructors and the various guest speakers, Silke Noa Elrifai, a crypto lawyer and mathematician with a deep background in actual DAO projects and currently a Visiting Scholar at Stanford, will be the primary instructor for several classes and will play an integral role in the course.
Terms: Spr | Units: 3

CS 353: Seminar on Logic & Formal Philosophy (PHIL 391)

Contemporary work. May be repeated a total of three times for credit.
Terms: Aut, Win | Units: 2-4 | Repeatable 3 times (up to 12 units total)
Instructors: ; Icard, T. (PI)

CS 354: Topics in Intractability: Unfulfilled Algorithmic Fantasies

Over the past 45 years, understanding NP-hardness has been an amazingly useful tool for algorithm designers. This course will expose students to additional ways to reason about obstacles for designing efficient algorithms. Topics will include unconditional lower bounds (query- and communication-complexity), total problems, Unique Games, average-case complexity, and fine-grained complexity. Prerequisites: CS 161 or equivalent. CS 254 recommended but not required.
Last offered: Winter 2022 | Units: 3

CS 355: Advanced Topics in Cryptography

Topics: Pseudo randomness, multiparty computation, pairing-based and lattice-based cryptography, zero knowledge protocols, and new encryption and integrity paradigms. May be repeated for credit. Prerequisite: CS255.
Terms: Spr | Units: 3 | Repeatable for credit

CS 356: Topics in Computer and Network Security

Research seminar covering foundational work and current topics in computer and network security. Students will read and discuss published research papers as well as complete an original research project in small groups. Open to Ph.D. and masters students as well as advanced undergraduate students. Prerequisites: While the course has no official prerequisites, students need a mature understanding of software systems and networks to be successful. We strongly encourage students to first take CS155: Computer and Network Security.
Terms: Aut | Units: 3

CS 357: Advanced Topics in Formal Methods

Topics vary annually. Recent offerings have covered the foundations of static analysis, including decision procedures for important theories (SAT, linear integer constraints, SMT solvers), model checking, abstract interpretation, and constraint-based analysis. May be repeated for credit.
Last offered: Autumn 2019 | Units: 3 | Repeatable for credit

CS 357S: Formal Methods for Computer Systems

The complexity of modern computer systems requires rigorous and systematic verification/validation techniques to evaluate their ability to correctly and securely support application programs. To this end, a growing body of work in both industry and academia leverages formal methods techniques to solve computer systems challenges. This course is a research seminar that will cover foundational work and current topics in the application of formal methods-style techniques (some possible examples include SAT/SMT, model checking, symbolic execution, theorem proving, program synthesis, fuzzing) to reliable and secure computer systems design. The course can be thought of as an applied formal methods course where the application is reliable and secure architecture, microarchitecture, and distributed systems design. Prior formal methods experience is not necessary. Students will read and discuss published research papers and complete an original research project. Open to PhD and masters students as well as advanced undergraduate students. Prerequisites: EE180 Digital Systems Architecture or comparable course, or consent of instructor.
Last offered: Autumn 2021 | Units: 3

CS 358: Topics in Programming Language Theory

Advanced material is often taught for the first time as a topics course, perhaps by a faculty member visiting from another institution. May be repeated for credit.
Last offered: Spring 2019 | Units: 3 | Repeatable for credit

CS 358A: Programming Language Foundations

This course introduces advanced formal systems and programming languages as well as techniques to reason formally about them. Possible systems of study include: the lambda calculus, System F, the Pi and Spi calculi, simply-typed languages, security type systems for non-interference, robust safety, linear types, ownership types, session types, logical relations and semantic models etc.
Last offered: Winter 2021 | Units: 3

CS 359: Topics in the Theory of Computation

Advanced material is often taught for the first time as a topics course, perhaps by a faculty member visiting from another institution. May be repeated for credit.
Last offered: Spring 2005 | Units: 3 | Repeatable for credit

CS 359A: Research Seminar in Complexity Theory

A research seminar on computational complexity theory. The focus of this year's offering will be on concrete complexity, a major strand of research in modern complexity theory. We will cover fundamental techniques and major results concerning basic models of computation such as circuits, decision trees, branching problems, and halfspaces.
Last offered: Spring 2021 | Units: 3

CS 359D: Quantum Complexity Theory

Introduction to quantum complexity theory. Topics include: the class BQP and its relation to other complexity classes; quantum query and communication complexity; quantum proof systems, Hamiltonian complexity, and the quantum PCP conjecture; the complexity & verification of quantum sampling experiments; and quantum cryptography. Prerequisites: background in quantum computing and computational complexity theory
Last offered: Spring 2023 | Units: 3

CS 360: Simplicity and Complexity in Economic Theory (ECON 284)

Technology has enabled the emergence of economic systems of formerly inconceivable complexity. Nevertheless, some technology-related economic problems are so complex that either supercomputers cannot solve them in a reasonable time, or they are too complex for humans to comprehend. Thus, modern economic designs must still be simple enough for humans to understand, and must address computationally complex problems in an efficient fashion. This topics course explores simplicity and complexity in economics, primarily via theoretical models. We will focus on recent advances. Key topics include (but are not limited to) resource allocation in complex environments, communication complexity and information aggregation in markets, robust mechanisms, dynamic matching theory, influence maximization in networks, and the design of simple (user-friendly) mechanisms. Some applications include paired kidney exchange, auctions for electricity and for radio spectrum, ride-sharing platforms, and the diffusion of information. Prerequisites: Econ 203 or equivalent.
Terms: Spr | Units: 3-5
Instructors: ; Akbarpour, M. (PI)

CS 361: Engineering Design Optimization (AA 222)

Design of engineering systems within a formal optimization framework. This course covers the mathematical and algorithmic fundamentals of optimization, including derivative and derivative-free approaches for both linear and non-linear problems, with an emphasis on multidisciplinary design optimization. Topics will also include quantitative methodologies for addressing various challenges, such as accommodating multiple objectives, automating differentiation, handling uncertainty in evaluations, selecting design points for experimentation, and principled methods for optimization when evaluations are expensive. Applications range from the design of aircraft to automated vehicles. Prerequisites: some familiarity with probability, programming, and multivariable calculus.
Terms: Spr | Units: 3-4

CS 362: Research in AI Alignment

In this course we will explore the current state of research in the field of AI alignment, which seeks to bring increasingly intelligent AI systems in line with human values and interests. The purpose of this course is to encourage the development of new ideas in this field, where a dominant paradigm has not yet been established. The format will be weekly lectures in which speakers present their current research approaches. The assignment structure will be slightly unusual: each week students will have a choice between a problem set and a short research assignment based on the weekly guest speaker's research area. For the research assignment, students will start with the abstract of a relevant AI alignment paper or blog post and create a blog post or Github repository describing how they would continue the paper. The final weekly assignment will be an extension of one of the previous weeks' work. Therefore this course requires research experience, preferably using mathematical and programming tools (e.g. Python, PyTorch, calculus), and is a graduate level course, open to advanced undergraduates.
Last offered: Spring 2023 | Units: 3

CS 366: Computational Social Choice (MS&E 336)

An in-depth treatment of algorithmic and game-theoretic issues in social choice. Topics include common voting rules and impossibility results; ordinal vs cardinal voting; market approaches to large scale decision making; voting in complex elections, including multi-winner elections and participatory budgeting; protocols for large scale negotiation and deliberation; fairness in societal decision making;nalgorithmic approaches to governance of modern distributed systems such as blockchains and community-mediated social networks; opinion dynamics and polarization. Prerequisites: algorithms at the level of 212 or CS 161, probability at the level of 221, and basic game theory, or consent of instructor.
Terms: Win | Units: 3
Instructors: ; Goel, A. (PI)

CS 368: Algorithmic Techniques for Big Data

(Previously numbered CS 369G.) Designing algorithms for efficient processing of large data sets poses unique challenges. This course will discuss algorithmic paradigms that have been developed to efficiently process data sets that are much larger than available memory. We will cover streaming algorithms and sketching methods that produce compact datanstructures, dimension reduction methods that preserve geometric structure, efficient algorithms for numerical linear algebra, graph sparsification methods, as well as impossibility results for these techniques.
Last offered: Spring 2022 | Units: 3

CS 369: Topics in Analysis of Algorithms

Advanced material is often taught for the first time as a topics course, perhaps by a faculty member visiting from another institution. May be repeated for credit.
Last offered: Spring 2013 | Units: 3 | Repeatable for credit

CS 369L: Algorithmic Perspective on Machine Learning

Many problems in machine learning are intractable in the worst case, andnpose a challenge for the design of algorithms with provable guarantees. In this course, we will discuss several success stories at the intersection of algorithm design and machine learning, focusing on devising appropriate models and mathematical tools to facilitate rigorous analysis.
Last offered: Winter 2019 | Units: 3

CS 369M: Metric Embeddings and Algorithmic Applications

Low distortion embeddings of finite metric spaces is a topic at the intersection of mathematics and theoretical computer science. Much progress in this area in recent years has been motivated by algorithmic applications. Mapping complicated metrics of interest to simpler metrics (normed spaces, trees, and so on) gives access to a powerful algorithmic toolkit for approximation algorithms, online algorithms as well as for efficient search and indexing of large data sets. In a different vein, convex relaxations are a useful tool for graph partitioning problems; central to the analysis are metric embedding questions for certainly computationally defined metrics. In this course, we will see several classical and recent results on metric embeddings with a focus on algorithmic applications. Students will be expected to have a strong background in algorithms and probability.
Last offered: Autumn 2018 | Units: 3

CS 369O: Optimization Algorithms (CME 334, MS&E 312)

Fundamental theory for solving continuous optimization problems with provable efficiency guarantees. Coverage of both canonical optimization methods and techniques, e.g. gradient descent, mirror descent, stochastic methods, acceleration, higher-order methods, etc. and canonical optimization problems, critical point computation for non-convex functions, smooth-convex function minimization, regression, linear programming, etc. Focus on provable rates for solving broad classes of prevalent problems including both classic problems and those motivated by large-scale computational concerns. Discussion of computational ramifications, fundamental information-theoretic limits, and problem structure. Prerequisite: linear algebra, multivariable calculus, probability, and proofs.
Terms: Win | Units: 3

CS 369Z: Dynamic Data Structures for Graphs

With the increase of huge, dynamically changing data sets there is a raising need for dynamic data structures to represent and process them. This course will present the algorithmic techniques that have been developed for dynamic data structures for graphs and for point sets.
Last offered: Autumn 2021 | Units: 3

CS 371: Computational Biology in Four Dimensions (BIOMEDIN 371, BIOPHYS 371, CME 371)

Cutting-edge research on computational techniques for investigating and designing the three-dimensional structure and dynamics of biomolecules, cells, and everything in between. These techniques, which draw on approaches ranging from physics-based simulation to machine learning, play an increasingly important role in drug discovery, medicine, bioengineering, and molecular biology. Course is devoted primarily to reading, presentation, discussion, and critique of papers describing important recent research developments. Prerequisite: CS 106A or equivalent, and an introductory course in biology or biochemistry. Recommended: some experience in mathematical modeling (does not need to be a formal course).
Last offered: Winter 2023 | Units: 3

CS 372: Artificial Intelligence for Precision Medicine and Psychiatric Disorders

Artificial intelligence, specifically deep learning, stands out as one of the most transformative technologies of the past decade. AI can already outperform humans in several computer vision and natural language processing tasks. However, we still face some of the same limitations and obstacles that led to the demise of the first AI boom phase five decades ago. This research-oriented course will first review and reveal the limitations (e.g., iid assumption on training and testing data, voluminous training data requirement, and lacking interpretability) of some widely used AI algorithms, including convolutional neural networks (CNNs), transformers, reinforcement learning, and generative adversarial networks (GANs). To address these limitations, we will then explore topics including transfer learning for remedying data scarcity, knowledge-guided multimodal learning for improving data diversity, out of distribution generalization, attention mechanisms for enabling Interpretability, meta learning, and privacy-preserving training data management. The course will be taught through a combination of lecture and project sessions. Lectures on specialized AI applications (e.g., cancer/depression diagnosis and treatment, AI/VR for surgery, and health education) will feature guest speakers from academia and industry. Students will be assigned to work on an extensive project that is relevant to their fields of study (e.g., CS, Medicine, and Data Science). Projects may involve conducting literature surveys, formulating ideas, and implementing these ideas. Example project topics are but not limited to 1) knowledge guided GANs for improving training data diversity, 2) disease diagnosis via multimodal symptom checking, and 3) fake and biased news/information detection.
Terms: Spr | Units: 3
Instructors: ; Chang, E. (PI); Jin, M. (TA)

CS 373: Statistical and Machine Learning Methods for Genomics (BIO 268, BIOMEDIN 245, STATS 345)

Introduction to statistical and computational methods for genomics. Sample topics include: expectation maximization, hidden Markov model, Markov chain Monte Carlo, ensemble learning, probabilistic graphical models, kernel methods and other modern machine learning paradigms. Rationales and techniques illustrated with existing implementations used in population genetics, disease association, and functional regulatory genomics studies. Instruction includes lectures and discussion of readings from primary literature. Homework and projects require implementing some of the algorithms and using existing toolkits for analysis of genomic datasets.
Last offered: Winter 2020 | Units: 3

CS 375: Large-Scale Neural Network Modeling for Neuroscience (PSYCH 249)

The last ten years has seen a watershed in the development of large-scale neural networks in artificial intelligence. At the same time, computational neuroscientists have discovered a surprisingly robust mapping between the internal components of these networks and real neural structures in the human brain. In this class we will discuss a panoply of examples of such "convergent man-machine evolution", including: feedforward models of sensory systems (vision, audition, somatosensation); recurrent neural networks for dynamics and motor control; integrated models of attention, memory, and navigation; transformer models of language areas; self-supervised models of learning; and deep RL models of decision and planning. We will also delve into the methods and metrics for comparing such models to real-world neural data, and address how unsolved open problems in AI (that you can work on!) will drive forward novel neural models. Some meaningful background in modern neural networks is highly advised (e.g. CS229, CS230, CS231n, CS234, CS236, CS 330), but formal preparation in cognitive science or neuroscience is not needed (we will provide this).
Terms: Win | Units: 3

CS 377: Topics in Human-Computer Interaction

Contents change each quarter. May be repeated for credit. See http://hci.stanford.edu/academics for offerings.
| Units: 2-3 | Repeatable for credit

CS 377E: Designing Solutions to Global Grand Challenges (DESIGN 297)

In this course we creatively apply information technologies to collectively attack Global Grand Challenges (e.g., global warming, rising healthcare costs and declining access, and ensuring quality education for all). Interdisciplinary student teams will carry out need-finding within a target domain, followed by brainstorming to propose a quarter long project. Teams will spend the rest of the quarter applying user-centered design methods to rapidly iterate through design, prototyping, and testing of their solutions. This course will interweave a weekly lecture with a weekly studio session where students apply the techniques hands-on in a small-scale, supportive environment. Note: Cardinal Course certified by the Haas Center for Public Service
Last offered: Spring 2023 | Units: 3-4

CS 377G: Designing Serious Games

Over the last few years we have seen the rise of "serious games" to promote understanding of complex social and ecological challenges, and to create passion for solving them. This project-based course provides an introduction to game design principals while applying them to games that teach. Run as a hands-on studio class, students will design and prototype games for social change and civic engagement. We will learn the fundamentals of games design via lecture and extensive reading in order to make effective games to explore issues facing society today. The course culminates in an end-of- quarter open house to showcase our games. Prerequisite: CS147 or equivalent. 247G recommended, but not required.
Terms: Aut | Units: 3-4
Instructors: ; Wodtke, C. (PI); Lo, A. (TA)

CS 377N: Introduction to the Design of Smart Products (ME 216M)

This course will focus on the technical mechatronic skills as well as the human factors and interaction design considerations required for the design of smart products and devices. Students will learn techniques for rapid prototyping of smart devices, best practices for physical interaction design, fundamentals of affordances and signifiers, and interaction across networked devices. Students will be introduced to design guidelines for integrating electrical components such as PCBs into mechanical assemblies and consider the physical form of devices, not just as enclosures but also as a central component of the smart product. Prerequisites include: CS106A and E40 highly recommended, or instructor approval.
Last offered: Spring 2020 | Units: 3-4

CS 377Q: Designing for Accessibility (ME 214)

Designing for accessibility is a valuable and important skill in the UX community. As businesses are becomeing more aware of the needs and scope of people with some form of disability, the benefits of universal design, where designing for accessibility ends up benefiting everyone, are becoming more apparent. This class introduces fundamental Human Computer Interaction (HCI) concepts and skills in designing for accessibility through individual assignments. Student projects will identify an accessibility need, prototype a design solution, and conduct a user study with a person with a disability. This class focuses on the accessibility of UX with computers, mobile phones, VR, and has a design class prerequisite (e.g., CS147, ME115A).
Terms: Spr | Units: 3-4

CS 377T: Topics in Human-Computer Interaction: Teaching Studio Classes

Studio teaching is a practice that dates back to the apprentice days of art studios. In this course, you will learn to teach project based classes that include critique. We will also cover effective coaching, design of projects and exercises, and curating material in order to maximize the effectiveness of a flipped classroom. Recommended for TAs in HCI.
Last offered: Autumn 2019 | Units: 3

CS 377U: Understanding Users

This project-based class focuses on understanding the use of technology in the world. Students will learn generative and evaluative research methods to explore how systems are appropriated into everyday life in a quarter-long project where they design, implement and evaluate a novel mobile application. Quantitative (e.g. A/B testing, instrumentation, analytics, surveys) and qualitative (e.g. diary studies, contextual inquiry, ethnography) methods and their combination will be covered along with practical experience applying these methods in their project. Prerequisites: CS 147, 193A/193P (or equivalent mobile programming experience).
Terms: Spr | Units: 3-4
Instructors: ; Bentley, F. (PI)

CS 379C: Computational Models of the Neocortex

This class focuses on building agents that achieve human-level performance in specialized technical domains and are adept at collaborating with humans using natural language. We draw upon research in cognitive and systems neuroscience to take advantage of what is known about how humans communicate and solve problems in order to design advanced artificial neural network architectures. For more detail on invited speakers, schedule of talks and project milestones, see here:  https://web.stanford.edu/class/cs379c/class_messages_listing/curriculum/
Last offered: Spring 2021 | Units: 3

CS 381: Sensorimotor Learning for Embodied Agents (EE 381)

This is an advanced course that will focus on modern machine learning algorithms for autonomous robots as an embodied intelligent agent. It covers advanced topics that center around 1. what is embodied AI and how it differs from internet AI, 2. how embodied agents perceive their environment from raw sensory data and make decisions, and 3. continually adapt to the physical world through both hardware and software improvements. By the end of the course, we hope to prepare you for conducting research in this area, knowing how to formulate the problem, design the algorithm, critically validate the idea through experimental designs and finally clearly present and communicate the findings. Students are expected to read, present, and debate the latest research papers on embodied AI, as well as obtain hands-on experience through the course projects. Prerequisites: Recommended EE 160A/EE 260A /CS 237A or equivalent.
| Units: 3

CS 384: Seminar on Ethical and Social Issues in Natural Language Processing (LINGUIST 287)

Seminar covering issues in natural language processing related to ethical and social issues and the overall impact of these algorithms on people and society. Topics include: bias in data and models, privacy and computational profiling, measuring civility and toxicity online, computational propaganda, manipulation and framing, fairness/equity, power, recommendations and filter bubbles, applications to social good, and philosophical foundations of ethical investigation. Prerequisites: CS 224N and 224U.
Last offered: Spring 2023 | Units: 3-4

CS 390A: Curricular Practical Training

Educational opportunities in high technology research and development labs in the computing industry. Qualified computer science students engage in internship work and integrate that work into their academic program. Students register under their faculty advisor during the quarter they are employed and complete a research report outlining their work activity, problems investigated, results, and follow-on projects they expect to perform. CS390A, CS390B, and CS390C may each be taken once.
Terms: Aut, Win, Spr, Sum | Units: 1
Instructors: ; Achour, S. (PI); Agrawala, M. (PI); Aiken, A. (PI); Altman, R. (PI); Anari, N. (PI); Bailis, P. (PI); Barrett, C. (PI); Batzoglou, S. (PI); Bejerano, G. (PI); Bernstein, M. (PI); Blikstein, P. (PI); Bohg, J. (PI); Boneh, D. (PI); Borenstein, J. (PI); Bouland, A. (PI); Boyd, S. (PI); Brunskill, E. (PI); Cain, J. (PI); Cao, P. (PI); Chang, M. (PI); Charikar, M. (PI); Cheriton, D. (PI); Dally, B. (PI); Dill, D. (PI); Dror, R. (PI); Duchi, J. (PI); Durumeric, Z. (PI); Engler, D. (PI); Ermon, S. (PI); Fatahalian, K. (PI); Fedkiw, R. (PI); Feigenbaum, E. (PI); Fikes, R. (PI); Finn, C. (PI); Fischer, M. (PI); Fisher, K. (PI); Fogg, B. (PI); Follmer, S. (PI); Fox, A. (PI); Fox, E. (PI); Genesereth, M. (PI); Girod, B. (PI); Goel, A. (PI); Goel, S. (PI); Goodman, N. (PI); Gregg, C. (PI); Guestrin, C. (PI); Guibas, L. (PI); Haber, N. (PI); Hanrahan, P. (PI); Hashimoto, T. (PI); Hennessy, J. (PI); Horowitz, M. (PI); Icard, T. (PI); James, D. (PI); Johari, R. (PI); Jurafsky, D. (PI); Katti, S. (PI); Kennedy, M. (PI); Khatib, O. (PI); Kochenderfer, M. (PI); Koller, D. (PI); Koyejo, S. (PI); Kozyrakis, C. (PI); Kundaje, A. (PI); Lam, M. (PI); Landay, J. (PI); Latombe, J. (PI); Lee, C. (PI); Leskovec, J. (PI); Levis, P. (PI); Levitt, M. (PI); Levoy, M. (PI); Li, F. (PI); Liang, P. (PI); Liu, K. (PI); Ma, T. (PI); Manning, C. (PI); Mazieres, D. (PI); McKeown, N. (PI); Mitchell, J. (PI); Mitra, S. (PI); Montgomery, S. (PI); Musen, M. (PI); Nayak, P. (PI); Ng, A. (PI); Niebles Duque, J. (PI); Okamura, A. (PI); Olukotun, O. (PI); Ousterhout, J. (PI); Paepcke, A. (PI); Pande, V. (PI); Parlante, N. (PI); Pavone, M. (PI); Pea, R. (PI); Piech, C. (PI); Plotkin, S. (PI); Plummer, R. (PI); Potts, C. (PI); Prabhakar, B. (PI); Pratt, V. (PI); Raghavan, P. (PI); Rajaraman, A. (PI); Re, C. (PI); Reingold, O. (PI); Roberts, E. (PI); Rosenblum, M. (PI); Roughgarden, T. (PI); Rubinstein, A. (PI); Sadigh, D. (PI); Sahami, M. (PI); Salisbury, J. (PI); Savarese, S. (PI); Schramm, T. (PI); Schwarz, K. (PI); Shoham, Y. (PI); Sidford, A. (PI); Sosic, R. (PI); Stanford, J. (PI); Tan, L. (PI); Thrun, S. (PI); Tobagi, F. (PI); Trippel, C. (PI); Troccoli, N. (PI); Ullman, J. (PI); Valiant, G. (PI); Van Roy, B. (PI); Vitercik, E. (PI); Wetzstein, G. (PI); Widom, J. (PI); Winograd, T. (PI); Winstein, K. (PI); Wodtke, C. (PI); Wootters, M. (PI); Wu, J. (PI); Yamins, D. (PI); Yang, D. (PI); Yeung, S. (PI); Young, P. (PI); Zaharia, M. (PI); Zelenski, J. (PI); Zou, J. (PI); Rutherford, E. (GP)

CS 390B: Curricular Practical Training

Educational opportunities in high technology research and development labs in the computing industry. Qualified computer science students engage in internship work and integrate that work into their academic program. Students register under their faculty advisor during the quarter they are employed and complete a research report outlining their work activity, problems investigated, results, and follow-on projects they expect to perform. CS390A, CS390B, and CS390C may each be taken once.
Terms: Aut, Win, Spr, Sum | Units: 1
Instructors: ; Achour, S. (PI); Agrawala, M. (PI); Aiken, A. (PI); Altman, R. (PI); Anari, N. (PI); Bailis, P. (PI); Barrett, C. (PI); Batzoglou, S. (PI); Bejerano, G. (PI); Bernstein, M. (PI); Blikstein, P. (PI); Bohg, J. (PI); Boneh, D. (PI); Borenstein, J. (PI); Bouland, A. (PI); Boyd, S. (PI); Brunskill, E. (PI); Cain, J. (PI); Cao, P. (PI); Chang, M. (PI); Charikar, M. (PI); Cheriton, D. (PI); Dally, B. (PI); Dill, D. (PI); Dror, R. (PI); Duchi, J. (PI); Durumeric, Z. (PI); Engler, D. (PI); Ermon, S. (PI); Fatahalian, K. (PI); Fedkiw, R. (PI); Feigenbaum, E. (PI); Fikes, R. (PI); Finn, C. (PI); Fisher, K. (PI); Fogg, B. (PI); Follmer, S. (PI); Fox, A. (PI); Fox, E. (PI); Genesereth, M. (PI); Girod, B. (PI); Goel, A. (PI); Goel, S. (PI); Goodman, N. (PI); Gregg, C. (PI); Guestrin, C. (PI); Guibas, L. (PI); Hanrahan, P. (PI); Hashimoto, T. (PI); Hennessy, J. (PI); Horowitz, M. (PI); Icard, T. (PI); James, D. (PI); Johari, R. (PI); Jurafsky, D. (PI); Katti, S. (PI); Khatib, O. (PI); Kochenderfer, M. (PI); Koller, D. (PI); Koyejo, S. (PI); Kozyrakis, C. (PI); Kundaje, A. (PI); Lam, M. (PI); Landay, J. (PI); Latombe, J. (PI); Lee, C. (PI); Leskovec, J. (PI); Levis, P. (PI); Levitt, M. (PI); Levoy, M. (PI); Li, F. (PI); Liang, P. (PI); Ma, T. (PI); Manning, C. (PI); Mazieres, D. (PI); McKeown, N. (PI); Mitchell, J. (PI); Mitra, S. (PI); Musen, M. (PI); Nayak, P. (PI); Ng, A. (PI); Niebles Duque, J. (PI); Okamura, A. (PI); Olukotun, O. (PI); Ousterhout, J. (PI); Paepcke, A. (PI); Parlante, N. (PI); Pavone, M. (PI); Pea, R. (PI); Piech, C. (PI); Plotkin, S. (PI); Plummer, R. (PI); Potts, C. (PI); Prabhakar, B. (PI); Pratt, V. (PI); Raghavan, P. (PI); Rajaraman, A. (PI); Re, C. (PI); Reingold, O. (PI); Roberts, E. (PI); Rosenblum, M. (PI); Rubinstein, A. (PI); Sadigh, D. (PI); Sahami, M. (PI); Salisbury, J. (PI); Savarese, S. (PI); Schramm, T. (PI); Schwarz, K. (PI); Shoham, Y. (PI); Sidford, A. (PI); Tan, L. (PI); Thrun, S. (PI); Tobagi, F. (PI); Troccoli, N. (PI); Ullman, J. (PI); Valiant, G. (PI); Van Roy, B. (PI); Vitercik, E. (PI); Wang, G. (PI); Wetzstein, G. (PI); Widom, J. (PI); Winograd, T. (PI); Winstein, K. (PI); Wootters, M. (PI); Wu, J. (PI); Yang, D. (PI); Yeung, S. (PI); Young, P. (PI); Zaharia, M. (PI); Zelenski, J. (PI); Zou, J. (PI); Rutherford, E. (GP)

CS 390C: Curricular Practical Training

Educational opportunities in high technology research and development labs in the computing industry. Qualified computer science students engage in internship work and integrate that work into their academic program. Students register under their faculty advisor during the quarter they are employed and complete a research report outlining their work activity, problems investigated, results, and follow-on projects they expect to perform. CS 390A, CS390B, and CS390C may each be taken once.
Terms: Aut, Win, Spr, Sum | Units: 1
Instructors: ; A. Hudson, D. (PI); Achour, S. (PI); Aiken, A. (PI); Altman, R. (PI); Barrett, C. (PI); Batzoglou, S. (PI); Bejerano, G. (PI); Bernstein, M. (PI); Blikstein, P. (PI); Boneh, D. (PI); Borenstein, J. (PI); Bouland, A. (PI); Cain, J. (PI); Cao, P. (PI); Charikar, M. (PI); Cheriton, D. (PI); Dally, B. (PI); Dill, D. (PI); Durumeric, Z. (PI); Engler, D. (PI); Ermon, S. (PI); Fedkiw, R. (PI); Feigenbaum, E. (PI); Fikes, R. (PI); Finn, C. (PI); Fisher, K. (PI); Fogg, B. (PI); Follmer, S. (PI); Fox, A. (PI); Fox, E. (PI); Genesereth, M. (PI); Girod, B. (PI); Goel, A. (PI); Goodman, N. (PI); Gregg, C. (PI); Guibas, L. (PI); Hanrahan, P. (PI); Hashimoto, T. (PI); Hennessy, J. (PI); Horowitz, M. (PI); James, D. (PI); Johari, R. (PI); Jurafsky, D. (PI); Katti, S. (PI); Khatib, O. (PI); Koller, D. (PI); Koyejo, S. (PI); Kozyrakis, C. (PI); Lam, M. (PI); Latombe, J. (PI); Lee, C. (PI); Leskovec, J. (PI); Levis, P. (PI); Levitt, M. (PI); Levoy, M. (PI); Li, F. (PI); Liang, P. (PI); Liu, K. (PI); Ma, T. (PI); Manning, C. (PI); Mazieres, D. (PI); McKeown, N. (PI); Mitchell, J. (PI); Mitra, S. (PI); Musen, M. (PI); Nayak, P. (PI); Ng, A. (PI); Okamura, A. (PI); Olukotun, O. (PI); Ousterhout, J. (PI); Paepcke, A. (PI); Parlante, N. (PI); Pavone, M. (PI); Pea, R. (PI); Piech, C. (PI); Plotkin, S. (PI); Plummer, R. (PI); Potts, C. (PI); Prabhakar, B. (PI); Pratt, V. (PI); Raghavan, P. (PI); Rajaraman, A. (PI); Re, C. (PI); Reingold, O. (PI); Roberts, E. (PI); Rosenblum, M. (PI); Roughgarden, T. (PI); Sahami, M. (PI); Salisbury, J. (PI); Savarese, S. (PI); Schwarz, K. (PI); Shoham, Y. (PI); Sidford, A. (PI); Tan, L. (PI); Thrun, S. (PI); Tobagi, F. (PI); Troccoli, N. (PI); Ullman, J. (PI); Valiant, G. (PI); Van Roy, B. (PI); Vitercik, E. (PI); Wang, G. (PI); Widom, J. (PI); Winograd, T. (PI); Winstein, K. (PI); Wu, J. (PI); Yang, D. (PI); Yeung, S. (PI); Young, P. (PI); Zaharia, M. (PI); Zelenski, J. (PI); Rutherford, E. (GP)

CS 390D: Part-time Curricular Practical Training

For qualified computer science PhD students only. Permission number required for enrollment; see the CS PhD program administrator in Gates room 195. Educational opportunities in high technology research and development labs in the computing industry. Qualified computer science PhD students engage in research and integrate that work into their academic program. Students register under their faculty advisor during the quarter they are employed and complete a research report outlining their work activity, problems investigated, results, and follow-on projects they expect to perform. Students on F1 visas should be aware that completing 12 or more months of full-time CPT will make them ineligible for Optional Practical Training (OPT).
Terms: Aut, Win, Spr, Sum | Units: 1 | Repeatable for credit
Instructors: ; Achour, S. (PI); Agrawala, M. (PI); Aiken, A. (PI); Altman, R. (PI); Bailis, P. (PI); Barrett, C. (PI); Batzoglou, S. (PI); Bejerano, G. (PI); Bernstein, M. (PI); Blikstein, P. (PI); Bohg, J. (PI); Boneh, D. (PI); Bouland, A. (PI); Boyd, S. (PI); Brunskill, E. (PI); Cain, J. (PI); Cao, P. (PI); Charikar, M. (PI); Cheriton, D. (PI); Dally, B. (PI); Dill, D. (PI); Dror, R. (PI); Duchi, J. (PI); Durumeric, Z. (PI); Engler, D. (PI); Ermon, S. (PI); Fatahalian, K. (PI); Fedkiw, R. (PI); Feigenbaum, E. (PI); Fikes, R. (PI); Finn, C. (PI); Fisher, K. (PI); Follmer, S. (PI); Fox, A. (PI); Genesereth, M. (PI); Girod, B. (PI); Goel, A. (PI); Goel, S. (PI); Goodman, N. (PI); Guestrin, C. (PI); Guibas, L. (PI); Haber, N. (PI); Hanrahan, P. (PI); Hashimoto, T. (PI); Hayden, P. (PI); Hennessy, J. (PI); Horowitz, M. (PI); James, D. (PI); Johari, R. (PI); Jurafsky, D. (PI); Katti, S. (PI); Khatib, O. (PI); Kochenderfer, M. (PI); Koller, D. (PI); Koyejo, S. (PI); Kozyrakis, C. (PI); Kundaje, A. (PI); Lam, M. (PI); Landay, J. (PI); Latombe, J. (PI); Leskovec, J. (PI); Levis, P. (PI); Levitt, M. (PI); Levoy, M. (PI); Li, F. (PI); Liang, P. (PI); Liu, K. (PI); Ma, T. (PI); Manning, C. (PI); Mazieres, D. (PI); McKeown, N. (PI); Mitchell, J. (PI); Mitra, S. (PI); Montanari, A. (PI); Musen, M. (PI); Nayak, P. (PI); Ng, A. (PI); Olukotun, O. (PI); Ousterhout, J. (PI); Paepcke, A. (PI); Pande, V. (PI); Parlante, N. (PI); Pavone, M. (PI); Piech, C. (PI); Plotkin, S. (PI); Prabhakar, B. (PI); Pratt, V. (PI); Raghavan, P. (PI); Rajaraman, A. (PI); Re, C. (PI); Reingold, O. (PI); Roberts, E. (PI); Rosenblum, M. (PI); Rubinstein, A. (PI); Saberi, A. (PI); Sadigh, D. (PI); Sahami, M. (PI); Salisbury, J. (PI); Savarese, S. (PI); Schwarz, K. (PI); Shoham, Y. (PI); Tan, L. (PI); Thrun, S. (PI); Tobagi, F. (PI); Ullman, J. (PI); Valiant, G. (PI); Van Roy, B. (PI); Wang, G. (PI); Wetzstein, G. (PI); Widom, J. (PI); Winograd, T. (PI); Winstein, K. (PI); Wootters, M. (PI); Wu, J. (PI); Yan, L. (PI); Yeung, S. (PI); Young, P. (PI); Zaharia, M. (PI); Zelenski, J. (PI); Zou, J. (PI); Rutherford, E. (GP)

CS 398: Computational Education

This course covers cutting-edge education algorithms used to model students, assess learning, and design widely deployable tools for open access education. The goal of the course is for you to be ready to lead your own computation education research project. Topics include knowledge tracing, generative grading, teachable agents, and challenges and opportunities implementing computational education in diverse contexts around the world. The course will consist of group and individual work and encourages creativity. Recommended: CS 142 and/or CS 221. Prerequisites: CS 106B and 109.
Last offered: Spring 2022 | Units: 4

CS 399: Independent Project

Letter grade only. This course is for masters students only. Undergraduate students should enroll in CS199; PhD students should enroll in CS499. Letter grade; if not appropriate, enroll in CS399P. Register using the section number associated with the instructor. Prerequisite: consent of instructor.
Terms: Aut, Win, Spr, Sum | Units: 1-9 | Repeatable for credit
Instructors: ; Achour, S. (PI); Adeli, E. (PI); Agrawala, M. (PI); Aiken, A. (PI); Akbarpour, M. (PI); Altman, R. (PI); Barrett, C. (PI); Batzoglou, S. (PI); Bejerano, G. (PI); Bernstein, M. (PI); Blikstein, P. (PI); Bohg, J. (PI); Boneh, D. (PI); Borenstein, J. (PI); Bouland, A. (PI); Boyd, S. (PI); Brunskill, E. (PI); Cain, J. (PI); Cao, P. (PI); Chang, M. (PI); Charikar, M. (PI); Cheriton, D. (PI); Dally, B. (PI); Demszky, D. (PI); Dill, D. (PI); Dror, R. (PI); Durumeric, Z. (PI); Engler, D. (PI); Ermon, S. (PI); Fatahalian, K. (PI); Fedkiw, R. (PI); Feigenbaum, E. (PI); Fikes, R. (PI); Finn, C. (PI); Fisher, K. (PI); Fogg, B. (PI); Fox, A. (PI); Fox, E. (PI); Genesereth, M. (PI); Girod, B. (PI); Goel, A. (PI); Goel, S. (PI); Goodman, N. (PI); Gregg, C. (PI); Guestrin, C. (PI); Guibas, L. (PI); Haber, N. (PI); Hanrahan, P. (PI); Hashimoto, T. (PI); Hennessy, J. (PI); Ho, D. (PI); Horowitz, M. (PI); Icard, T. (PI); James, D. (PI); Johari, R. (PI); Jurafsky, D. (PI); Katti, S. (PI); Khatib, O. (PI); Kjoelstad, F. (PI); Kochenderfer, M. (PI); Koller, D. (PI); Koyejo, S. (PI); Kozyrakis, C. (PI); Kundaje, A. (PI); Lam, M. (PI); Landay, J. (PI); Latombe, J. (PI); Lee, C. (PI); Leskovec, J. (PI); Levis, P. (PI); Levitt, M. (PI); Levoy, M. (PI); Li, F. (PI); Liang, P. (PI); Liu, K. (PI); Ma, T. (PI); MacCartney, B. (PI); Manning, C. (PI); Mazieres, D. (PI); McKeown, N. (PI); Mirhoseini, A. (PI); Mitchell, J. (PI); Montgomery, S. (PI); Musen, M. (PI); Nayak, P. (PI); Ng, A. (PI); Niebles Duque, J. (PI); Okamura, A. (PI); Olukotun, O. (PI); Ousterhout, J. (PI); Paepcke, A. (PI); Pande, V. (PI); Parlante, N. (PI); Patrignani, M. (PI); Pavone, M. (PI); Pea, R. (PI); Piech, C. (PI); Plotkin, S. (PI); Plummer, R. (PI); Potts, C. (PI); Prabhakar, B. (PI); Pratt, V. (PI); Raghavan, P. (PI); Rajaraman, A. (PI); Re, C. (PI); Reingold, O. (PI); Roberts, E. (PI); Rosenblum, M. (PI); Roughgarden, T. (PI); Rubin, D. (PI); Rubinstein, A. (PI); Sadigh, D. (PI); Sahami, M. (PI); Salisbury, J. (PI); Savarese, S. (PI); Saxena, A. (PI); Schwarz, K. (PI); Shoham, Y. (PI); Sidford, A. (PI); Socher, R. (PI); Sosic, R. (PI); Stanford, J. (PI); Subramonyam, H. (PI); Syrgkanis, V. (PI); Tan, L. (PI); Thrun, S. (PI); Tobagi, F. (PI); Trippel, C. (PI); Ullman, J. (PI); Valiant, G. (PI); Van Roy, B. (PI); Varodayan, D. (PI); Vitercik, E. (PI); Wang, G. (PI); Wetzstein, G. (PI); Widom, J. (PI); Winograd, T. (PI); Winstein, K. (PI); Wodtke, C. (PI); Wootters, M. (PI); Wu, J. (PI); Yamins, D. (PI); Yan, L. (PI); Yang, D. (PI); Yeung, S. (PI); Young, P. (PI); Zaharia, M. (PI); Zelenski, J. (PI); Zou, J. (PI); Rutherford, E. (GP)

CS 399P: Independent Project

Graded satisfactory/no credit. This course is for masters students only. Undergraduate students should enroll in CS199; PhD students should enroll in CS499. S/NC only; if not appropriate, enroll in CS399. Register using the section number associated with the instructor. Prerequisite: consent of instructor.
Terms: Aut, Win, Spr, Sum | Units: 1-9 | Repeatable for credit
Instructors: ; Achour, S. (PI); Agrawala, M. (PI); Aiken, A. (PI); Altman, R. (PI); Bailis, P. (PI); Batzoglou, S. (PI); Bejerano, G. (PI); Bernstein, M. (PI); Blikstein, P. (PI); Boneh, D. (PI); Bouland, A. (PI); Boyd, S. (PI); Brunskill, E. (PI); Cain, J. (PI); Cao, P. (PI); Charikar, M. (PI); Cheriton, D. (PI); Dally, B. (PI); Dill, D. (PI); Dror, R. (PI); Engler, D. (PI); Ermon, S. (PI); Fedkiw, R. (PI); Feigenbaum, E. (PI); Fikes, R. (PI); Finn, C. (PI); Fisher, K. (PI); Fogg, B. (PI); Fox, A. (PI); Fox, E. (PI); Genesereth, M. (PI); Girod, B. (PI); Goel, A. (PI); Goodman, N. (PI); Guibas, L. (PI); Haber, N. (PI); Hanrahan, P. (PI); Hennessy, J. (PI); Horowitz, M. (PI); James, D. (PI); Johari, R. (PI); Jurafsky, D. (PI); Katti, S. (PI); Khatib, O. (PI); Kjoelstad, F. (PI); Kochenderfer, M. (PI); Koller, D. (PI); Koyejo, S. (PI); Kozyrakis, C. (PI); Lam, M. (PI); Landay, J. (PI); Latombe, J. (PI); Lee, C. (PI); Leskovec, J. (PI); Levis, P. (PI); Levitt, M. (PI); Levoy, M. (PI); Li, F. (PI); Liang, P. (PI); Liu, K. (PI); Manning, C. (PI); Mazieres, D. (PI); McKeown, N. (PI); Mirhoseini, A. (PI); Mitchell, J. (PI); Musen, M. (PI); Nayak, P. (PI); Ng, A. (PI); Olukotun, O. (PI); Ousterhout, J. (PI); Paepcke, A. (PI); Parlante, N. (PI); Pavone, M. (PI); Plotkin, S. (PI); Plummer, R. (PI); Potts, C. (PI); Prabhakar, B. (PI); Pratt, V. (PI); Raghavan, P. (PI); Rajaraman, A. (PI); Re, C. (PI); Roberts, E. (PI); Rosenblum, M. (PI); Roughgarden, T. (PI); Sahami, M. (PI); Salisbury, J. (PI); Savarese, S. (PI); Saxena, A. (PI); Shoham, Y. (PI); Socher, R. (PI); Thrun, S. (PI); Tobagi, F. (PI); Ullman, J. (PI); Valiant, G. (PI); Van Roy, B. (PI); Varodayan, D. (PI); Vitercik, E. (PI); Wang, G. (PI); Wetzstein, G. (PI); Widom, J. (PI); Winograd, T. (PI); Wodtke, C. (PI); Wu, J. (PI); Yan, L. (PI); Yang, D. (PI); Young, P. (PI); Zelenski, J. (PI); Zou, J. (PI); Rutherford, E. (GP)

CS 407: Lytics Seminar (EDUC 407)

(Same as GSBGID 307) Students will learn to design technology mediated learning environments for adult learners, conduct research in those environments, and learn from prior EdTech failures. Grounded in various theoretical frameworks that inform the design of learning environments, the course explores how people learn and the evidence of learning that can be collected and modeled in online environments in real world contexts. The course also examines specific case studies of failed EdTech ventures to identify patterns and causes of failure. Throughout the course we will consider ethical issues related to design and research in human learning. Overall, this course will provide students with a foundation in learning theory and the skills and knowledge needed to design, implement, and evaluate effective technology mediated learning environments.
Terms: Spr | Units: 1-4 | Repeatable 4 times (up to 16 units total)

CS 421: Designing AI to Cultivate Human Well-Being

Artificial Intelligence (AI) has the potential to drive us towards a better future for all of humanity, but it also comes with significant risks and challenges. At its best, AI can help humans mitigate climate change, diagnose and treat diseases more effectively, enhance learning, and improve access to capital throughout the world. But it also has the potential to exacerbate human biases, destroy trust in information flow, displace entire industries, and amplify inequality throughout the world. We have arrived at a pivotal moment in the development of the technology in which we must establish a foundation for how we will design AI to capture the positive potential and mitigate the negative risks. To do this, building AI must be an inclusive, interactive, and introspective process guided by an affirmative vision of a beneficial AI-future. The goal of this interdisciplinary class is to bridge the gap between technological and societal objectives: How do we design AI to promote human well-being? The ultimate aim is to provide tools and frameworks to build a more harmonious human society based on cooperation toward a shared vision. Thus, students are trained in basic science to understand what brings about the conditions for human flourishing and will create meaningful AI technologies that aligns with the PACE framework: 1) has a clear and meaningful purpose, 2) augments human dignity and autonomy, 3) creates a feeling of inclusivity and collaboration, 4) creates shared prosperity and a sense of forward movement (excellence). Toward this end, students work in interdisciplinary teams on a final project and propose a solution that tackles a significant societal challenge by leveraging technology and frameworks on human thriving.
Last offered: Winter 2021 | Units: 2

CS 422: Interactive and Embodied Learning (EDUC 234A)

Most successful machine learning algorithms of today use either carefully curated, human-labeled datasets, or large amounts of experience aimed at achieving well-defined goals within specific environments. In contrast, people learn through their agency: they interact with their environments, exploring and building complex mental models of their world so as to be able to flexibly adapt to a wide variety of tasks. One crucial next direction in artificial intelligence is to create artificial agents that learn in this flexible and robust way. Students will read and take turns presenting current works, and they will produce a proposal of a feasible next research direction. Prerequisites: CS229, CS231N, CS234 (or equivalent).
Terms: Win | Units: 3 | Repeatable 5 times (up to 15 units total)
Instructors: ; Haber, N. (PI)

CS 428A: Probabilistic models of cognition: Reasoning and Learning (PSYCH 220A)

How can we understand intelligent behavior as computation? This course introduces probabilistic programming as a tool for cognitive modeling. We will use probabilistic generative models to explain aspects of human and artificial cognition. Topics will be drawn from causal and social reasoning, concept learning, and hierarchical abstraction.
Last offered: Spring 2023 | Units: 3

CS 428B: Probabilistic Models of Cognition: Language (LINGUIST 238B, PSYCH 220B)

How can we understand natural language use in computational terms? This course surveys probabilistic models for natural language semantics and pragmatics. It begins with an introduction to the Rational Speech Acts framework for modeling pragmatics as social reasoning. It then explores a variety of phenomena in language meaning and usage. Probabilistic programming will be used as a precise and practical way to express models.
Last offered: Autumn 2021 | Units: 3

CS 431: High-level Vision: From Neurons to Deep Neural Networks (PSYCH 250)

Interdisciplinary seminar focusing on understanding how computations in the brain enable rapid and efficient object perception. Covers topics from multiple perspectives drawing on recent research in Psychology, Neuroscience, and Computer Science. Emphasis on discussing recent empirical findings, methods and theoretical debates in the field.
Last offered: Winter 2021 | Units: 1-3

CS 432: Computer Vision for Education and Social Science Research (EDUC 463)

Computer vision -- the study of how to design artificial systems that can perform high-level tasks related to image or video data (e.g. recognizing and locating objects in images and behaviors in videos) -- has seen recent dramatic success. In this course, we seek to give education and social science researchers the know-how needed to apply cutting edge computer vision algorithms in their work as well as an opportunity to workshop applications. Prerequisite: python familiarity and some experience with data.
Terms: Win | Units: 3
Instructors: ; Haber, N. (PI); Cerit, M. (TA)

CS 448: Topics in Computer Graphics

Topic changes each quarter. Recent topics: computational photography, datanvisualization, character animation, virtual worlds, graphics architectures, advanced rendering. See http://graphics.stanford.edu/courses for offererings and prerequisites. May be repeated for credit.
Last offered: Autumn 2007 | Units: 3-4 | Repeatable for credit

CS 448B: Data Visualization (EDUC 458, SYMSYS 195V)

Techniques and algorithms for creating effective visualizations based on principles from graphic design, visual art, perceptual psychology, and cognitive science. Topics: graphical perception, data and image models, visual encoding, graph and tree layout, color, animation, interaction techniques, automated design. Lectures, reading, and project. There are no official prerequisites for the class, but familiarity with the material in CS147, CS148 and CS142 is especially useful. Most important is a basic working knowledge of, or willingness to learn, web- programming, especially JavaScript, Vega-Lite and D3.js.
Terms: Aut | Units: 3-4 | Repeatable for credit

CS 448H: Topics in Computer Graphics: Agile Hardware Design

Topic changes each quarter. Recent topics: computational photography, data visualization, character animation, virtual worlds, graphics architectures, advanced rendering. See http://graphics.stanford.edu/courses for offerings and prerequisites. May be repeated for credit.
Last offered: Winter 2018 | Units: 3

CS 448I: Computational Imaging (EE 367)

Digital photography and basic image processing, convolutional neural networks for image processing, denoising, deconvolution, single pixel imaging, inverse problems in imaging, proximal gradient methods, introduction to wave optics, time-of-flight imaging, end-to-end optimization of optics and imaging processing. Emphasis is on applied image processing and solving inverse problems using classic algorithms, formal optimization, and modern artificial intelligence techniques. Students learn to apply material by implementing and investigating image processing algorithms in Python. Term project. Recommended: EE261, EE263, EE278.
Terms: Win | Units: 3

CS 448M: Making Making Machines for Makers

An introductory, project-based exploration of systems and processes for making things using computer-aided design and manufacturing, and an introduction to machines and machine tools. Emphasis will be placed on building novel machines and related software for use by "makers" and interactive machines. Course projects will encourage students to understand, build and modify/hack a sequence of machines: (1) an embroidery machine for custom textiles, (2) a paper cutting machine (with drag knife) for ornamental design, and (3) an XY plotter with Arduino controller. Through these projects students explore both (i) principles of operation (mechanical, stepper motors and servos, electrical control, computer software), and (ii) computer algorithms (trajectory, tool path, design). Current trends in interactive machines will be surveyed. The course will culminate in a final student-selected project. Prerequisite: CS106A or equivalent programming experience. Students should have a desire to make things.
Last offered: Spring 2020 | Units: 3-4

CS 448P: Hacking the Pandemic

This timely project-based course provides a venue for students to apply their skills in computing and other areas to help people cope with the Coronavirus Disease 2019 (CoViD-19) pandemic. In addition to brief lectures, guest speakers, and moderated discussions and brainstorming sessions, the course will primarily consist of self-organized team projects where students find creative ways to contribute by leveraging any and all computational tools at our disposal (e.g., algorithms, app development, HCI, remote interaction and communication, data visualization, modeling and simulation, fabrication and 3d printing, design, computer games, VR, computer systems and networking, AI, statistics, bioinformatics, etc.). Prerequisite: CS106B.
Last offered: Spring 2020 | Units: 3

CS 448V: Topics in Computer Graphics: Computational Video Manipulation

The goal of this graduate (advanced undergraduate also welcome) course is to survey recent work on computational video analysis and manipulation techniques. We will learn how to acquire, represent, edit and remix video. Several popular video manipulation algorithms will be presented, with an emphasis on using these techniques to build practical systems. Students will have the opportunity to acquire their own video and implement the processing tools needed to computationally analyze and manipulate it. The course will be project based with a substantial final project.
Last offered: Spring 2020 | Units: 3

CS 448Z: Physically Based Animation and Sound

Intermediate level, emphasizing physically based simulation techniques for computer animation and synchronized sound synthesis. Topics vary from year to year, but include the simulation of acoustic waves, and integrated approaches to visual and auditory simulation of rigid bodies, deformable solids, collision detection and contact resolution, fracture, fluids and gases, and virtual characters. Students will read and discuss papers, and do programming projects. Prerequisite: None. Recommended: Prior exposure to computer graphics and/or scientific computing.
Last offered: Spring 2021 | Units: 3-4

CS 468: Topics in Geometric Algorithms: Non-Euclidean Methods in Machine Learning

Contents of this course vary with each offering. Past offerings have included geometric matching, surface reconstruction, collision detection, computational topology, differential geometry for computer scientists, computational symmetry and regularity, data-driven shape analysis, and non-Euclidean methods in machine learning.
Last offered: Autumn 2020 | Units: 3 | Repeatable for credit

CS 470: Music and AI (MUSIC 356)

How do we make music with artificial intelligence? What does it mean to do so (and is it even a good idea)? How might we design systems that balance machine automation and human interaction? More broadly, how do we want to live with our technologies? Are there - and ought there be - limits to using AI for art? (And what is Art, anyway?) In this "critical making" course, students will learn practical tools and techniques for AI-mediated music creation, engineer software systems incorporating AI, HCI and Music, and critically reflect on the aesthetic and ethical dimensions of technology.
Terms: Win | Units: 3-4
Instructors: ; Wang, G. (PI); Zhu, A. (TA)

CS 476A: Music, Computing, Design: The Art of Design (MUSIC 256A)

This course explores the artful design of software tools, toys, games,ninstruments, and experiences. Topics include programming, audiovisualndesign, strategies for crafting interactive systems, game design, asnwell as aesthetic and social considerations of shaping technology in ournworld today. Course work features several programming assignments withnan emphasis on critical design feedback, reading responses, and an"design your own" final project. Prerequisite: experience in C/C++/Javanor Unity/C#.  See https://ccrma.stanford.edu/courses/256a/
Terms: Aut | Units: 3-4
Instructors: ; Wang, G. (PI); Zhu, A. (PI)

CS 481: Digital Technology and Law: Foundations

Taught by a team of law and engineering faculty, this unique interdisciplinary course will empower students across the University to work together and exercise leadership on critically important debates at the intersection of law and digital technology. Designed as an accessible survey, the course will equip students with two powerful bases of knowledge: (i) a working technical grasp of key digital technologies (e.g., AI and machine learning, internet structure, encryption, blockchain); and (ii) basic fluency in the key legal frameworks implicated by each (e.g., privacy, cybersecurity, anti-discrimination, free speech, torts, procedural fairness). Substantively, the course will be organized into modules focused on distinct law-tech intersections, including: platform regulation, speech, and intermediary liability; algorithmic bias and civil rights; autonomous systems, safety, and tort liability; "smart" contracting; data privacy and consumer protection; "legal tech," litigation, and access to justice; government use of AI; and encryption and criminal procedure. Each module will be explored via a mix of technical and legal instruction, case study discussions, in-class practical exercises, and guest speakers from industry, government, academe, and civil society. Law students will emerge from the course with a basic understanding of core digital technologies and related legal frameworks and a roadmap of curricular and career pathways one might follow to pursue each area further. Students from elsewhere in the University, from engineering to business to the social sciences and beyond, will emerge with an enhanced capacity to critically assess the legal and policy implications of new digital technologies and the ways society can work to ensure those technologies serve the public good. All students will learn to work together across disciplinary divides to solve technical, legal, and practical problems. There are no course prerequisites, and no prior legal or technical training will be assumed. Students will be responsible for short discussion papers or a final paper. After the term begins, students electing the final paper option can transfer from section 1 to section 2, which meets the R requirement, with consent of the instructor. This class is cross-listed in the University and undergraduates and graduates are eligible to take it. Consent Application for Non-Law Students: We will try to accommodate all students interested in the course. But to facilitate planning and confirm interest, please fill out a consent application ( https://forms.gle/hLAQ7JUm2jFTWQzE9) by March 13, 2020. Applications received after March 13 will be considered on a rolling basis. Elements used in grading: Attendance, Class Participation; Written Assignments or Final Paper.
Last offered: Spring 2020 | Units: 3

CS 498C: Introduction to CSCL: Computer-Supported Collaborative Learning (EDUC 315A)

This seminar introduces students to foundational concepts and research on computer-supported collaborative learning (CSCL). It is designed for LSTD doctoral students, LDT masters' students, other GSE graduate students and advanced undergraduates inquiring about theory, research and design of CSCL. CSCL is defined as a triadic structure of collaboration mediated by a computational artefact (participant-artifact-participant). CSCL encompasses two individuals performing a task together in a short time, small or class-sized groups, and students following the same course, digitally interacting.
Terms: Win | Units: 3
Instructors: ; Pea, R. (PI); Pittman, J. (TA)

CS 498D: Design for Learning: Generative AI for Collaborative Learning (DESIGN 292, EDUC 449)

Would you like to design ways to use generative AI to help humans learn with other humans? In this course, you will develop creative ways to use generative AI to support collaborative learning, also learning more about AI as researchers continue to improve tools like ChatGPT. In creating new learning activities that could be used at Stanford or in other courses, you will build experience with fundamentals of design, including the design abilities of learning from others, navigating ambiguity, synthesizing information, and experimenting rapidly. You will do this by tackling real design challenges presented by our project partners, which include several Stanford programs, while drawing on your own first-hand experience as students. This class is open to all students, undergraduate and graduate, of any discipline. No previous design experience or experience with AI is required. Just a collaborative spirit and hard work.
Terms: Aut | Units: 3

CS 499: Advanced Reading and Research

Letter grade only. Advanced reading and research for CS PhD students. Register using the section number associated with the instructor. Prerequisite: consent of instructor. This course is for PhD students only. Undergraduate students should enroll in CS199, masters students should enroll in CS399. Letter grade; if not appropriate, enroll in CS499P.
Terms: Aut, Win, Spr, Sum | Units: 1-15 | Repeatable for credit
Instructors: ; Achour, S. (PI); Adeli, E. (PI); Agrawala, M. (PI); Aiken, A. (PI); Akbarpour, M. (PI); Altman, R. (PI); Anari, N. (PI); Bailis, P. (PI); Barrett, C. (PI); Batzoglou, S. (PI); Bejerano, G. (PI); Bernstein, M. (PI); Boahen, K. (PI); Bohg, J. (PI); Boneh, D. (PI); Bouland, A. (PI); Boyd, S. (PI); Brunskill, E. (PI); Cain, J. (PI); Cao, P. (PI); Charikar, M. (PI); Cheriton, D. (PI); Dally, B. (PI); Dill, D. (PI); Dror, R. (PI); Duchi, J. (PI); Durumeric, Z. (PI); Engler, D. (PI); Ermon, S. (PI); Fatahalian, K. (PI); Fedkiw, R. (PI); Feigenbaum, E. (PI); Fikes, R. (PI); Finn, C. (PI); Fisher, K. (PI); Fogg, B. (PI); Follmer, S. (PI); Fox, A. (PI); Fox, E. (PI); Fox, J. (PI); Ganguli, S. (PI); Genesereth, M. (PI); Girod, B. (PI); Goel, A. (PI); Goel, S. (PI); Goodman, N. (PI); Guestrin, C. (PI); Guibas, L. (PI); Haber, N. (PI); Hanrahan, P. (PI); Hashimoto, T. (PI); Hayden, P. (PI); Hennessy, J. (PI); Ho, D. (PI); Horowitz, M. (PI); Icard, T. (PI); James, D. (PI); Johari, R. (PI); Jurafsky, D. (PI); Katti, S. (PI); Kennedy, M. (PI); Khatib, O. (PI); Kjoelstad, F. (PI); Kochenderfer, M. (PI); Koller, D. (PI); Koyejo, S. (PI); Kozyrakis, C. (PI); Kundaje, A. (PI); Lam, M. (PI); Landay, J. (PI); Latombe, J. (PI); Leskovec, J. (PI); Levis, P. (PI); Levitt, M. (PI); Levoy, M. (PI); Li, F. (PI); Liang, P. (PI); Linderman, S. (PI); Liu, K. (PI); Ma, T. (PI); Manning, C. (PI); Mazieres, D. (PI); McClelland, J. (PI); McKeown, N. (PI); Mirhoseini, A. (PI); Mitchell, J. (PI); Mitra, S. (PI); Montanari, A. (PI); Montgomery, S. (PI); Musen, M. (PI); Nayak, P. (PI); Ng, A. (PI); Niebles Duque, J. (PI); Okamura, A. (PI); Olukotun, O. (PI); Ousterhout, J. (PI); Paepcke, A. (PI); Parlante, N. (PI); Pavone, M. (PI); Pea, R. (PI); Piech, C. (PI); Plotkin, S. (PI); Plummer, R. (PI); Potts, C. (PI); Prabhakar, B. (PI); Pratt, V. (PI); Raghavan, P. (PI); Raina, P. (PI); Rajaraman, A. (PI); Re, C. (PI); Reingold, O. (PI); Roberts, E. (PI); Rosenblum, M. (PI); Rubin, D. (PI); Rubinstein, A. (PI); Saberi, A. (PI); Sadigh, D. (PI); Sahami, M. (PI); Salisbury, J. (PI); Savarese, S. (PI); Saxena, A. (PI); Schwarz, K. (PI); Shoham, Y. (PI); Sidford, A. (PI); Tan, L. (PI); Thrun, S. (PI); Tobagi, F. (PI); Trippel, C. (PI); Ullman, J. (PI); Utterback, C. (PI); Valiant, G. (PI); Van Roy, B. (PI); Vitercik, E. (PI); Wang, G. (PI); Wetzstein, G. (PI); Widom, J. (PI); Winograd, T. (PI); Winstein, K. (PI); Wootters, M. (PI); Wu, J. (PI); Yamins, D. (PI); Yan, L. (PI); Yang, D. (PI); Yeung, S. (PI); Young, P. (PI); Zaharia, M. (PI); Zelenski, J. (PI); Zou, J. (PI); Rutherford, E. (GP)

CS 499P: Advanced Reading and Research

Graded satisfactory/no credit. Advanced reading and research for CS PhD students. Register using the section number associated with the instructor. Prerequisite: consent of instructor. This course is for PhD students only. Undergraduate students should enroll in CS199, masters students should enroll in CS399. S/NC only; if not appropriate, enroll in CS499.
Terms: Aut, Win, Spr, Sum | Units: 1-15 | Repeatable for credit
Instructors: ; Achour, S. (PI); Adeli, E. (PI); Agrawala, M. (PI); Aiken, A. (PI); Akbarpour, M. (PI); Altman, R. (PI); Anari, N. (PI); Bailis, P. (PI); Barrett, C. (PI); Batzoglou, S. (PI); Bejerano, G. (PI); Bernstein, M. (PI); Blikstein, P. (PI); Boahen, K. (PI); Bohg, J. (PI); Boneh, D. (PI); Bouland, A. (PI); Boyd, S. (PI); Brunskill, E. (PI); Cain, J. (PI); Cao, P. (PI); Charikar, M. (PI); Cheriton, D. (PI); Dally, B. (PI); Dill, D. (PI); Dror, R. (PI); Duchi, J. (PI); Durumeric, Z. (PI); Engler, D. (PI); Ermon, S. (PI); Fatahalian, K. (PI); Fedkiw, R. (PI); Feigenbaum, E. (PI); Fikes, R. (PI); Finn, C. (PI); Fisher, K. (PI); Fogg, B. (PI); Follmer, S. (PI); Fox, A. (PI); Fox, E. (PI); Fox, J. (PI); Ganguli, S. (PI); Genesereth, M. (PI); Girod, B. (PI); Goel, A. (PI); Goel, S. (PI); Goodman, N. (PI); Guestrin, C. (PI); Guibas, L. (PI); Haber, N. (PI); Hanrahan, P. (PI); Hashimoto, T. (PI); Hayden, P. (PI); Hennessy, J. (PI); Horowitz, M. (PI); Icard, T. (PI); James, D. (PI); Johari, R. (PI); Jurafsky, D. (PI); Katti, S. (PI); Kennedy, M. (PI); Khatib, O. (PI); Kjoelstad, F. (PI); Kochenderfer, M. (PI); Koller, D. (PI); Koyejo, S. (PI); Kozyrakis, C. (PI); Kundaje, A. (PI); Lam, M. (PI); Landay, J. (PI); Latombe, J. (PI); Leskovec, J. (PI); Levis, P. (PI); Levitt, M. (PI); Levoy, M. (PI); Li, F. (PI); Liang, P. (PI); Linderman, S. (PI); Liu, K. (PI); Ma, T. (PI); Manning, C. (PI); Mazieres, D. (PI); McClelland, J. (PI); McKeown, N. (PI); Mirhoseini, A. (PI); Mitchell, J. (PI); Mitra, S. (PI); Montgomery, S. (PI); Musen, M. (PI); Nayak, P. (PI); Ng, A. (PI); Niebles Duque, J. (PI); Okamura, A. (PI); Olukotun, O. (PI); Ousterhout, J. (PI); Paepcke, A. (PI); Parlante, N. (PI); Pavone, M. (PI); Pea, R. (PI); Piech, C. (PI); Plotkin, S. (PI); Plummer, R. (PI); Potts, C. (PI); Prabhakar, B. (PI); Pratt, V. (PI); Raghavan, P. (PI); Raina, P. (PI); Rajaraman, A. (PI); Re, C. (PI); Reingold, O. (PI); Roberts, E. (PI); Rosenblum, M. (PI); Rubin, D. (PI); Rubinstein, A. (PI); Saberi, A. (PI); Sadigh, D. (PI); Sahami, M. (PI); Salisbury, J. (PI); Savarese, S. (PI); Saxena, A. (PI); Schwarz, K. (PI); Shoham, Y. (PI); Sidford, A. (PI); Tan, L. (PI); Thrun, S. (PI); Tobagi, F. (PI); Trippel, C. (PI); Ullman, J. (PI); Utterback, C. (PI); Valiant, G. (PI); Van Roy, B. (PI); Vitercik, E. (PI); Wang, G. (PI); Wetzstein, G. (PI); Widom, J. (PI); Winograd, T. (PI); Winstein, K. (PI); Wootters, M. (PI); Wu, J. (PI); Yamins, D. (PI); Yan, L. (PI); Yang, D. (PI); Yeung, S. (PI); Young, P. (PI); Zaharia, M. (PI); Zelenski, J. (PI); Zou, J. (PI); Rutherford, E. (GP)

CS 520: Knowledge Graphs

Knowledge graphs have emerged as a compelling abstraction for organizing world's structured knowledge over the internet, capturing relationships among key entities of interest to enterprises, and a way to integrate information extracted from multiple data sources. Knowledge graphs have also started to play a central role in machine learning and natural language processing as a method to incorporate world knowledge, as a target knowledge representation for extracted knowledge, and for explaining what is being learned. This class is a graduate level research seminar and will include lectures on knowledge graph topics (e.g., data models, creation, inference, access) and invited lectures from prominent researchers and industry practitioners. The seminar emphasizes synthesis of AI, database systems and HCI in creating integrated intelligent systems centered around knowledge graphs.
Last offered: Spring 2022 | Units: 1

CS 521: Seminar on AI Safety

In this seminar, we will focus on the challenges in the design of safe and verified AI-based systems. We will explore some of the major problems in this area from the viewpoint of industry and academia. We plan to have a weekly seminar speaker to discuss issues such as verification of AI systems, reward misalignment and hacking, secure and attack-resilient AI systems, diagnosis and repair, issues regarding policy and ethics, as well as the implications of AI safety in automotive industry. Prerequisites: There are no official prerequisites but an introductory course in artificial intelligence is recommended.
Last offered: Spring 2023 | Units: 1

CS 522: Seminar in Artificial Intelligence in Healthcare

Artificial intelligence is poised to make radical changes in healthcare, transforming areas such as diagnosis, genomics, surgical robotics, and drug discovery. In the coming years, artificial intelligence has the potential to lower healthcare costs, identify more effective treatments, and facilitate prevention and early detection of diseases. This class is a seminar series featuring prominent researchers, physicians, entrepreneurs, and venture capitalists, all sharing their thoughts on the future of healthcare. We highly encourage students of all backgrounds to enroll (no AI/healthcare background necessary). Speakers and more at https://tinyurl.com/cs522-stanford
Terms: Aut | Units: 1
Instructors: ; Dror, R. (PI); Chan, Z. (GP)

CS 523: Research Seminar in Computer Vision + X

With advances in deep learning, computer vision (CV) has been transforming all sorts of domains, including healthcare, human-computer interaction, transportation, art, sustainability, and so much more. In this seminar, we investigate its far-reaching applications, with a different theme chosen as the focus each quarter (e.g. the inaugural quarter was CV + Healthcare; the theme for the quarter will be listed on the class syllabus). Throughout the quarter, we deeply examine these themes in CV + X research through weekly intimate discussions with researchers from academia and industry labs who conduct research at the center of CV and other domains. Each week, students will read and prepare questions and reflections on an assigned paper authored by that week's speaker. We highly encourage students who are interested in taking an interactive, deep dive into CV research literature to apply. While there are no hard requirements, we strongly suggest having the background and fluency necessary to read and analyze AI research papers (thus MATH 51 or linear algebra, and at least one of CS 231x, 224x, 221, 229, 230, 234, 238, AI research experience for CV and AI fundamentals may be helpful).
Last offered: Spring 2022 | Units: 1-2

CS 523: Research Seminar in Computer Vision and Healthcare

With advances in deep learning, computer vision (CV) has been transforming healthcare, from diagnosis to prognosis, from treatment to prevention. Its far-reaching applications include surgical assistants, patient monitoring, data synthesis, and cancer screening. Before these algorithms make their way into the clinic, however, there is exciting research to develop methods that are accurate, robust, interpretable, grounded, and human-centered. In this seminar, we deeply examine these themes in medical CV research through weekly intimate discussions with researchers from academia and industry labs who conduct research at the center of CV and healthcare. Each week students will read and prepare questions and reflections on an assigned paper authored by that week's speaker. We highly encourage students who are interested in taking an interactive, deep dive into medical CV research literature to apply. While there are no hard requirements, we strongly suggest having the background and fluency necessary to read and analyze AI research papers (thus MATH 51 or linear algebra, and at least one of CS 231x, 224x, 221, 229, 230, 234, 238, AI research experience for CV and AI fundamentals may be helpful).
| Units: 1

CS 528: Machine Learning Systems Seminar

Machine learning is driving exciting changes and progress in computing systems. What does the ubiquity of machine learning mean for how people build and deploy systems and applications? What challenges does industry face when deploying machine learning systems in the real world, and how can new system designs meet those challenges? In this weekly talk series, we will invite speakers working at the frontier of machine learning systems, and focus on how machine learning changes the modern programming stack. Topics will include programming models for ML, infrastructure to support ML applications such as ML Platforms, debugging, parallel computing, and hardware for ML. May be repeated for credit.
Terms: Aut, Win, Spr | Units: 1 | Repeatable 3 times (up to 3 units total)

CS 529: Robotics and Autonomous Systems Seminar (AA 289)

Seminar talks by researchers and industry professionals on topics related to modern robotics and autonomous systems. Broadly, talks will cover robotic design, perception and navigation, planning and control, and learning for complex robotic systems. May be repeated for credit.
Terms: Aut, Win, Spr | Units: 1 | Repeatable for credit (up to 99 units total)

CS 547: Human-Computer Interaction Seminar

Weekly speakers on human-computer interaction topics. May be repeated for credit.
Terms: Aut, Win, Spr | Units: 1 | Repeatable for credit

CS 549: Human-Computer Interaction in the Real World

Intended for students who are pursuing a focus on HCI, this course focuses on showing students how HCI gets applied in industry across different types of companies. The course consists of on-site visits to large companies (for example Google, Yahoo, Square, Tesla) and to startups to talk to the HCI practitioners at these companies and learn first hand how HCI and design fits in at different companies. The objective of this class is to have students understand how HCI practitioners fit into organizations, the roles they play, and what skills they need in the real world to be able to do their magic.
Last offered: Autumn 2018 | Units: 1

CS 571: Surgical Robotics Seminar (ME 571)

Surgical robots developed and implemented clinically on varying scales. Seminar goal is to expose students from engineering, medicine, and business to guest lecturers from academia and industry. Engineering and clinical aspects connected to design and use of surgical robots, varying in degree of complexity and procedural role. May be repeated for credit.
Last offered: Winter 2019 | Units: 1 | Repeatable for credit

CS 581: Media Innovation

This course will introduce students interested in computer science, engineering, and media to what is possible and probable when it comes to media innovation. Speakers from multiple disciplines and industry will discuss a range of topics in the context of evolving media with a focus on the technical trends, opportunities and challenges surfacing in the unfolding media ecosystem. Speakers will underscore the need to innovate to survive in the media and information industries. Open to both undergraduates and graduate students.
Last offered: Autumn 2019 | Units: 1

CS 802: TGR Dissertation

Terminal Graduate Registration (TGR). CS PhD students who have their TGR form approved should register under the section number associated with their faculty advisor.
Terms: Aut, Win, Spr, Sum | Units: 0 | Repeatable for credit
Instructors: ; Achour, S. (PI); Agrawala, M. (PI); Aiken, A. (PI); Akbarpour, M. (PI); Altman, R. (PI); Anari, N. (PI); Barrett, C. (PI); Batzoglou, S. (PI); Bejerano, G. (PI); Bernstein, M. (PI); Blikstein, P. (PI); Boahen, K. (PI); Bohg, J. (PI); Boneh, D. (PI); Bouland, A. (PI); Boyd, S. (PI); Brunskill, E. (PI); Cain, J. (PI); Cao, P. (PI); Charikar, M. (PI); Cheriton, D. (PI); Dally, B. (PI); Dill, D. (PI); Dror, R. (PI); Durumeric, Z. (PI); Engler, D. (PI); Ermon, S. (PI); Fatahalian, K. (PI); Fedkiw, R. (PI); Feigenbaum, E. (PI); Fikes, R. (PI); Finn, C. (PI); Fisher, K. (PI); Fogg, B. (PI); Follmer, S. (PI); Fox, A. (PI); Fox, E. (PI); Fox, J. (PI); Ganguli, S. (PI); Genesereth, M. (PI); Girod, B. (PI); Goel, A. (PI); Goel, S. (PI); Goodman, N. (PI); Guestrin, C. (PI); Guibas, L. (PI); Haber, N. (PI); Hanrahan, P. (PI); Hashimoto, T. (PI); Hayden, P. (PI); Hennessy, J. (PI); Horowitz, M. (PI); Icard, T. (PI); James, D. (PI); Johari, R. (PI); Jurafsky, D. (PI); Katti, S. (PI); Kennedy, M. (PI); Khatib, O. (PI); Kjoelstad, F. (PI); Kochenderfer, M. (PI); Koller, D. (PI); Koyejo, S. (PI); Kozyrakis, C. (PI); Kundaje, A. (PI); Lam, M. (PI); Landay, J. (PI); Latombe, J. (PI); Leskovec, J. (PI); Levis, P. (PI); Levitt, M. (PI); Levoy, M. (PI); Li, F. (PI); Liang, P. (PI); Linderman, S. (PI); Liu, K. (PI); Ma, T. (PI); Manning, C. (PI); Mazieres, D. (PI); McClelland, J. (PI); McKeown, N. (PI); Mitchell, J. (PI); Mitra, S. (PI); Montgomery, S. (PI); Musen, M. (PI); Nayak, P. (PI); Ng, A. (PI); Niebles Duque, J. (PI); Okamura, A. (PI); Olukotun, O. (PI); Ousterhout, J. (PI); Parlante, N. (PI); Pavone, M. (PI); Pea, R. (PI); Piech, C. (PI); Plotkin, S. (PI); Plummer, R. (PI); Potts, C. (PI); Prabhakar, B. (PI); Pratt, V. (PI); Raghavan, P. (PI); Raina, P. (PI); Rajaraman, A. (PI); Re, C. (PI); Reingold, O. (PI); Roberts, E. (PI); Rosenblum, M. (PI); Rubin, D. (PI); Rubinstein, A. (PI); Sadigh, D. (PI); Sahami, M. (PI); Salisbury, J. (PI); Savarese, S. (PI); Shoham, Y. (PI); Sidford, A. (PI); Tan, L. (PI); Thrun, S. (PI); Tobagi, F. (PI); Trippel, C. (PI); Ullman, J. (PI); Utterback, C. (PI); Valiant, G. (PI); Van Roy, B. (PI); Vitercik, E. (PI); Wang, G. (PI); Wetzstein, G. (PI); Widom, J. (PI); Winograd, T. (PI); Winstein, K. (PI); Wootters, M. (PI); Wu, J. (PI); Yamins, D. (PI); Yang, D. (PI); Yeung, S. (PI); Young, P. (PI); Zaharia, M. (PI); Zelenski, J. (PI); Zou, J. (PI); Rutherford, E. (GP)
© Stanford University | Terms of Use | Copyright Complaints