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

For those with limited experience with computers or 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 the Resident Computer Consultant (RCC). Final project. Not a programming course.

Terms: Aut
| Units: 1

Instructors:
Smith, S. (PI)

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

Terms: Aut, Win, Spr
| 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 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, and will include tangents that explore sister fields such as augmented reality and 360 video. Students will work in groups to present a final project in building an application for the Oculus Go headset. Enrollment is limited and by rolling application only. Prerequisite:
CS 106A or equivalent.

Terms: Aut, Win, Spr
| Units: 2

Instructors:
Borenstein, J. (PI)

## CS 45N: Computers and Photography: From Capture to Sharing

Preference to freshmen with experience in photography and use of computers. Elements of photography, such as lighting, focus, depth of field, aperture, and composition. How a photographer makes photos available for computer viewing, reliably stores them, organizes them, tags them, searches them, and distributes them online. No programming experience required. Digital SLRs and editing software will be provided to those students who do not wish to use their own.

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

Instructors:
Garcia-Molina, H. (PI)

## CS 47: Cross-Platform Mobile Development

The fundamentals of cross-platform mobile application development using 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, Walmart, Tesla, and UberEats. Skills developed over the course will be consolidated by the completion of a final project. Required Prerequisites:
CS106A/B. Website:
https://web.stanford.edu/class/cs47/

Terms: Aut
| Units: 2

Instructors:
Landay, J. (PI)

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

This course interrogates the social challenges of Silicon Valley, a place of privilege, privation, and precarity, and encourages students to perform their own ethnographical studies through writing, coding, engagement, digital culture, and social practice. We will learn about the importance of technology in shaping our critical understanding of social conditions in our community and the global economy.

Terms: Aut
| Units: 3
| UG Reqs: WAY-ED

Instructors:
Lee, C. (PI)

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

Terms: Aut
| Units: 3-5
| UG Reqs: GER:DB-EngrAppSci, WAY-FR

Instructors:
Taylor, A. (PI)
;
Shankar, S. (TA)

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

Instructors:
Fang, F. (PI)
;
Lee, C. (PI)
;
Liu, A. (PI)
;
Schwarz, K. (PI)
;
Alvarez, J. (TA)
;
Brickner, A. (TA)
;
Chuchro, R. (TA)
;
Hoag, E. (TA)
;
Kravitz, J. (TA)
;
Le, T. (TA)
;
Liang, D. (TA)
;
Mayer-Hirshfeld, R. (TA)
;
Melloni, J. (TA)
;
Murphy, D. (TA)
;
Noyola, T. (TA)
;
Rusak, G. (TA)
;
Saini, D. (TA)
;
Saleh, M. (TA)
;
Smith, R. (TA)
;
Spyropoulos, A. (TA)
;
Sriram, P. (TA)
;
Valdivia, H. (TA)
;
Zhu, M. (TA)

## CS 103A: 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
| Units: 1

Instructors:
Lee, C. (PI)
;
Schwarz, K. (PI)

Filter Results: