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
Last offered: Spring 2025
| Units: 1
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. Students may not earn credit for both
CS 107 and
CS 107E.
Terms: Aut, Win, Spr, Sum
| Units: 3-5
| UG Reqs: GER:DB-EngrAppSci, WAY-FR
Instructors:
Alonso, Y. (PI)
;
Cain, J. (PI)
;
Keppler, A. (PI)
;
Troccoli, N. (PI)
;
AbuHashem, Y. (TA)
;
Aggarwal, A. (TA)
;
Baker, K. (TA)
;
Barrett, K. (TA)
;
Boneh, N. (TA)
;
Chudnovsky, J. (TA)
;
Devalapura, A. (TA)
;
Heer, S. (TA)
;
Ibanez, F. (TA)
;
Rodriguez Cardenas, J. (TA)
;
Toure, L. (TA)
;
Vallabhaneni, H. (TA)
;
Yan, B. (TA)
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:
Berny, I. (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. Students may not earn credit for both
CS 107 and
CS 107E.
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.
Last offered: Winter 2024
| 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.
Terms: Aut, Win, Spr, Sum
| Units: 3-5
| UG Reqs: GER:DB-EngrAppSci, WAY-AQR, WAY-FR
Instructors:
Gregg, C. (PI)
;
Piech, C. (PI)
;
Woodrow, J. (PI)
;
Bejerano, N. (TA)
;
Bogle, E. (TA)
;
Chawla, S. (TA)
;
Choo, J. (TA)
;
Fisher Lopez, A. (TA)
;
Kim, J. (TA)
;
Kim, T. (TA)
;
Liu, K. (TA)
;
Lopez, A. (TA)
;
Michel, I. (TA)
;
Sundar, S. (TA)
;
Woodrow, J. (TA)
;
Xu, B. (TA)
;
Zhu, E. (TA)
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:
Arifov, J. (PI)
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 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
