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: Win
| Units: 2
Instructors:
Borenstein, J. (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? Wha
more »
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. Note that this is a hybrid course. Students should plan to enroll by the first day of the quarter and check their Stanford email account for instructions on how to access the course material. If you have any questions about the course, please email symsys1staff@gmail.com.
Terms: Win, Spr
| Units: 4
| UG Reqs: WAY-FR, GER:DB-SocSci
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. Designated a Cardinal Course by the Haas Center for Public Service.
Terms: Win
| Units: 2
Instructors:
Cain, J. (PI)
CS 91SI: Digital Canvas: An Introduction to UI/UX Design
In this course, students learn digital design in a low-stress environment. We will teach the essential concepts of UI/UX design and create actual user interfaces in a project-based format. By the end of the class, students will have experience in creating handoff-ready interactive high-fidelity mockups for a realistic product feature. This course covers what makes a good or bad interface, effective design techniques from the ground up, and how to execute on design principles using the tool Figma. Limited enrollment - admission determined by short application due 11:59 PM on Jan 6:
https://forms.gle/LAb2Rx3VJh3BR9is8. No required prerequisites. Recommended: some prior experience in product design, human-computer interaction, or front-end engineering
Terms: Win
| Units: 2
Instructors:
Landay, J. (PI)
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:
Ofosu, A. (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
Instructors:
Jeong, K. (PI)
CS 103: Mathematical Foundations of Computing
What are the theoretical limits of computing power? What problems can be solved with computers? Which ones cannot? And how can we reason about the answers to these questions with mathematical certainty? This course explores the answers to these questions and serves as an introduction to discrete mathematics, computability theory, and complexity theory. At the completion of the course, students will feel comfortable writing mathematical proofs, reasoning about discrete structures, reading and writing statements in first-order logic, and working with mathematical models of computing devices. Throughout the course, students will gain exposure to some of the most exciting mathematical and philosophical ideas of the late nineteenth and twentieth centuries. Specific topics covered include formal mathematical proofwriting, propositional and first-order logic, set theory, binary relations, functions (injections, surjections, and bijections), cardinality, basic graph theory, the pigeonhole prin
more »
What are the theoretical limits of computing power? What problems can be solved with computers? Which ones cannot? And how can we reason about the answers to these questions with mathematical certainty? This course explores the answers to these questions and serves as an introduction to discrete mathematics, computability theory, and complexity theory. At the completion of the course, students will feel comfortable writing mathematical proofs, reasoning about discrete structures, reading and writing statements in first-order logic, and working with mathematical models of computing devices. Throughout the course, students will gain exposure to some of the most exciting mathematical and philosophical ideas of the late nineteenth and twentieth centuries. Specific topics covered include formal mathematical proofwriting, propositional and first-order logic, set theory, binary relations, functions (injections, surjections, and bijections), cardinality, basic graph theory, the pigeonhole principle, mathematical induction, finite automata, regular expressions, the Myhill-Nerode theorem, context-free grammars, Turing machines, decidable and recognizable languages, self-reference and undecidability, verifiers, and the P versus NP question. Students with significant proofwriting experience are encouraged to instead take
CS154. Students interested in extra practice and support with the course are encouraged to concurrently enroll in
CS103A. Prerequisite: CS106B or equivalent. CS106B may be taken concurrently with
CS103.
Terms: Aut, Win, Spr
| Units: 3-5
| UG Reqs: GER:DB-Math, WAY-FR
Instructors:
Aiken, A. (PI)
;
Bailey, C. (PI)
;
Schwarz, K. (PI)
;
Szumlanski, S. (PI)
;
Aiu, K. (TA)
;
Bosman, L. (TA)
;
Cao, S. (TA)
;
Carrell, T. (TA)
;
Chen, Z. (TA)
;
Dieulesaint, C. (TA)
;
Guha, N. (TA)
;
Han, R. (TA)
;
Li, K. (TA)
;
Pandya, D. (TA)
;
Raman, V. (TA)
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:
Sierra, E. (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
more »
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
Instructors:
Achour, S. (PI)
Filter Results: