## BIOMEDIN 273A: The Human Genome Source Code (CS 273A, DBIO 273A)

A computational introduction to the most amazing programming language on the planet: your genome. Topics include genome sequencing (assembling source code from code fragments); the human genome functional landscape: variable assignments (genes), control-flow logic (gene regulation) and run-time stack (epigenomics); human disease and personalized genomics (as a hunt for bugs in the human code); genome editing (code injection) to cure the incurable; and the source code behind amazing animal adaptations. Algorithmic approaches will introduce ideas from computational genomics, machine learning and natural language processing. Course includes primers on molecular biology, and text processing languages. Prerequisites: CS106B or equivalent.

Terms: Win
| Units: 3

Instructors:
Bejerano, G. (PI)
;
Yoo, B. (TA)

## CME 253: Introduction to GPU Computing and CUDA

Covers the fundamentals of accelerating applications with GPUs (Graphics Processing Units); GPU programming with CUDA and OpenACC, debugging, thrust/CUB, profiling, optimization, debugging, and other CUDA tools. Libraries to easily accelerate compute code will be presented and deployment on larger systems will be addressed, including multi-GPU environments. Several practical examples will be detailed, including deep learning. Pre-requiste: knowledge of C/C++ at the level of CME211 or
CS106b.

Last offered: Winter 2017

## CME 257: Advanced Topics in Scientific Computing with Julia

This course will rapidly introduce students to the Julia programming language, with the goal of giving students the knowledge and experience necessary to navigate the language and package ecosystem while using Julia for their own scientific computing needs. The course will begin with learning the basics of Julia, and then introduce students to git version control and package development. Additional topics include: common packages, parallelism, interfacing with shared object libraries, and aspects of Julia's implementation (e.g. core numerical linear algebra). Lectures will be interactive, with an emphasis on collaboration and learning by example. Prerequisites: Data structures at the level of
CS106B, experience with one or more scientific computing languages (e.g. Python, Matlab, or R), and some familiarity with the Unix shell. No prior experience with Julia or git is required.

Terms: Aut
| Units: 1

Instructors:
Jambulapati, A. (PI)

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

The fundamentals and contemporary usage of the Python programming language. 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, and powerful built-ins (e.g. map, filter, zip). We will also focus on data analysis tools including NumPy, Pandas, Matplotlib, and Scikit-learn for their application in machine learning. Prerequisite:
CS106B,
CS106X, or equivalent. Application required.

Terms: Win
| Units: 2

Instructors:
Cain, J. (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 or
CS106B. Website:
web.stanford.edu/class/cs47/. To enroll in the class, please show up to the first day of class and fill the following application:
https://forms.gle/WM3SDd3qyF3eQC3x5

Terms: Aut
| Units: 2

Instructors:
Landay, J. (PI)

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

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

Terms: Aut, Win, Spr
| Units: 1

Instructors:
Gregg, C. (PI)
;
Lee, C. (PI)
;
Schwarz, K. (PI)
;
Zelenski, J. (PI)
;
D'Souza, K. (TA)
;
Fernandez, G. (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 prin
more »

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

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

Instructors:
Lee, C. (PI)
;
Liu, A. (PI)
;
Schwarz, K. (PI)
;
Smith, R. (PI)
;
Varodayan, D. (PI)
;
Vitko, A. (PI)
;
Cai, B. (TA)
;
Chan, E. (TA)
;
Dudas, S. (TA)
;
Fang, F. (TA)
;
Fotedar, N. (TA)
;
Galczak, A. (TA)
;
Guo, J. (TA)
;
Hakim, D. (TA)
;
Hulett, R. (TA)
;
Li, J. (TA)
;
Li, W. (TA)
;
Melloni, J. (TA)
;
Radif, D. (TA)
;
Reamer, S. (TA)
;
Sha, H. (TA)
;
Sharp, A. (TA)
;
Smith, R. (TA)
;
Spayd, J. (TA)
;
Spyropoulos, A. (TA)
;
Srivatsan, K. (TA)
;
Wang, Q. (TA)
;
Wang, W. (TA)
;
Yau, J. (TA)
;
Zhi, Q. (TA)
;
de Leon, 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

Instructors:
Bowman, N. (PI)
;
Gregg, C. (PI)
;
Jue, K. (PI)
;
Lee, C. (PI)
;
Schwarz, K. (PI)
;
Zelenski, J. (PI)
;
Bowman, N. (TA)
;
Erdman, K. (TA)

## CS 106S: Coding for Social Good

Survey course on applications of fundamental computer science concepts from
CS 106B/X to problems in the social good space (such as health, government, education, and environment). Each week consists of in-class activities designed by student groups, local tech companies, and nonprofits. 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, and storytelling through virtual reality. Pre/Corequisite: CS106B or
CS106X.

Terms: Win, Spr
| Units: 1

Instructors:
Cain, J. (PI)

## 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: Aut, Win, Spr
| Units: 3-4

Instructors:
BENSOUDA MOURRI, Y. (PI)
;
Ng, A. (PI)
;
Magon de La Villehuchet, P. (TA)
;
Shuaibi, A. (TA)

Filter Results: