Stanford UniversityWebsiteAcademic Catalog
Computer ScienceDepartment Website
BS Degree in Computer Science (Comp Bio Track)source 1source 2
CS Courses
- Mathematical Foundations of ComputingCS 103 (3-5)theoryCS 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 CS 154. Students interested in extra practice and support with the course are encouraged to concurrently enroll in CS 103A.
- Programming MethodologyCS 106A (3-5)introCS 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.
- Programming AbstractionsCS 106B (3-5)introCS 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.
- Computer Organization and SystemsorCS 107 (3-5)sysCS 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.
Computer Systems from the Ground UpCS 107E (3-5)sysCS 107E: Computer Systems from the Ground UpIntroduction 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.
- Operating Systems PrinciplesCS 111 (3-5)sysCS 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 CS 110 that fulfills any requirement satisfied by CS 110.
- Web ApplicationsorCS 142 (3)sysCS 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.
Cross-platform Mobile App DevelopmentorCS 147L (3)sysCS 147L: Cross-platform Mobile App DevelopmentThe 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.
Data VisualizationCS 448B (3-4)graphicsCS 448B: Data VisualizationTechniques 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.
- Data Management and Data SystemsorCS 145 (3-4)sysCS 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.
Mining Massive Data SetsCS 246 (3-4)aiCS 246: Mining Massive Data SetsThe 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.
- Design and Analysis of AlgorithmsCS 161 (3-5)algsCS 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.
- Foundations of Computational Human GenomicsCS 173A (3-4)scienceCS 173A: Foundations of Computational Human Genomics
(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.
- Artificial Intelligence: Principles and TechniquesCS 221 (3-4)aiCS 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.
- Computers, Ethics, and Public Policy (WIM)orCS 181W (4)impactCS 181W: Computers, Ethics, and Public Policy (WIM)
Writing-intensive version of CS 181. 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://CS 181.stanford.edu for more information.
Ethics, Public Policy, and Technological Change (WIM)orCS 182W (5)impactCS 182W: Ethics, Public Policy, and Technological Change (WIM)Writing-intensive version of CS 182. 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: CS 106A. See CS 182 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 125 students. 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.
Senior ProjectororCS 191 (1-6)capstoneCS 191: Senior ProjectRestricted 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.
Software ProjectorCS 194 (3)capstoneCS 194: Software ProjectDesign, 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.
User Interface Design ProjectororCS 194H (3-4)capstoneCS 194H: User Interface Design ProjectAdvanced 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.
Software Project Experience with Corporate PartnersorCS 210B (3-4)capstoneCS 210B: Software Project Experience with Corporate PartnersContinuation of CS 210A. 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.
Research Project in Software Systems and SecurityCS 294S (3)capstoneCS 294S: Research Project in Software Systems and SecurityTopics 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.
Math/Stat Courses
- CalculusMATH 20 (3)mathMATH 20: Calculus
The definite integral, Riemann sums, antiderivatives, the Fundamental Theorem of Calculus. Integration by substitution and by parts. Area between curves, and volume by slices, washers, and shells. Initial-value problems, exponential and logistic models, direction fields, and parametric curves.
- Introduction to Probability for Computer ScientistsCS 109 (3-5)mathCS 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.
Engineering Courses
Science Courses
- pick 3or
GeneticsBIO 82 (4)sciBIO 82: GeneticsThe focus of the course is on the basic mechanisms underlying the transmission of genetic information and on the use of genetic analysis to study biological and medical questions. Major topics will include: (1) the use of existing genetic variation in humans and other species to identify genes that play an important role in determining traits and disease-susceptibility, (2) the analysis of mutations in model organisms and their use in the investigation of biological processes and questions and (3) using genetic information for diagnosis and the potential for genetic manipulations to treat disease.
Biochemistry & Molecular BiologyBIO 83 (4)sciBIO 83: Biochemistry & Molecular BiologyIntroduction to the molecular and biochemical basis of life. Lecture topics include the structure and function of proteins, nucleic acids, lipids and carbohydrates, energy metabolism, signal transduction, epigenetics and DNA repair. The course will also consider how defects in these processes cause disease.
EvolutionBIO 85 (4)sciBIO 85: EvolutionUnderstanding evolution is key to understanding the diversity of life on earth. We will be focusing on the fundamental principles of evolutionary biology from natural and sexual selection to the formation of new species. To understand these concepts we will delve into the mechanisms that underlie them. The course will also link these fundamental processes to important contemporary evolutionary topics such as the evolution of behavior, life history evolution, and human evolution.
Other Courses
- 12 × Free Elective
Program Learning Outcomes
- Apply the knowledge of mathematics, science, and engineering
- Design and conduct experiments, as well to analyze and interpret data
- Design a system, component, or process to meet desired needs within realistic constraints such as economic, environmental, social, political, ethical, health and safety, manufacturability, and sustainability
- Function on multidisciplinary teams
- Identify, formulate, and solve engineering problems
- Understand professional and ethical responsibility
- Communicate effectively
- Understand the impact of engineering solutions in a global, economic, environmental, and societal context
- Demonstrate a working knowledge of contemporary issues
- Apply the techniques, skills, and modern engineering tools necessary for engineering practice
- Transition from engineering concepts and theory to real engineering applications