CS 144: Introduction to Computer Networking
Principles and practice. Structure and components of computer networks, with focus on the Internet. Packet switching, layering, and routing. Transport and TCP: reliable delivery over an unreliable network, flow control, congestion control. Network names, addresses and ethernet switching. Includes significant programming component in C/C++; students build portions of the internet TCP/IP software. Prerequisite:
CS110.
Terms: Aut
| Units: 3-4
| UG Reqs: GER:DB-EngrAppSci
Instructors:
Winstein, K. (PI)
;
Boneh, N. (TA)
;
Heer, S. (TA)
;
Ho, D. (TA)
;
Nasra, M. (TA)
;
Podosin, K. (TA)
;
Xiao, C. (TA)
CS 145: Introduction to Big 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. Prereqs: CS106B or
CS106X;
CS103. Need to have a basic understanding of RAM, disks, sorting/hashing algorithms. Soft prereqs: One of CS161 or
CS111.
Terms: Aut
| Units: 3-4
| UG Reqs: GER:DB-EngrAppSci
Instructors:
Shivakumar, N. (PI)
;
Ja, M. (TA)
;
Seyahi, L. (TA)
;
Sharaf, A. (TA)
;
Wang, R. (TA)
;
Wang, Y. (TA)
;
Yeung, B. (TA)
CS 146: Game Development
Game Programming teaches students the programming principles and workflows used in modern game development. Through hands-on projects in industry-standard game engines (Unity or Unreal), students implement core game mechanics, integrate AI techniques like NPC behavior and procedural content generation, and prototype interactive experiences. The course complements
CS247G: Design for Play by focusing on technical implementation. Students complete a team-based final game project and learn from guest speakers from the game industry.
Terms: Win
| Units: 2
CS 146J: Full-Stack Web Programming
Have you ever wanted to build your own website and truly customize every part of it - not just use a website builder? Do you have a big idea for an app that you want to build for the web? This is the class for you! In this course, we'll cover the fundamentals of full-stack web development, from how to create a stunning frontend (the website your users see and interact with) and a robust backend (the server that forms the backbone of your website), with a focus on modern technologies that are widely used across the industry, from startups to large tech companies. While this course focuses primarily on the practice of programming web applications, we will also cover the conceptual aspects of how web technologies work. At the end, you'll work in a team to build a large web app of your own design from scratch! Prerequisites:
CS 106B or equivalent programming experience. We expect that you will be comfortable picking up a new programming language quickly.
Terms: Spr
| Units: 3
Instructors:
Cheng, A. (PI)
CS 146S: The Modern Software Developer
AI is rapidly transforming how we build, debug, and maintain software. From new-age IDEs and terminals like Cursor and Warp to code review and testing platforms like Coderabbit and Qodo, every phase of the software development life cycle is getting revamped. In this course, you'll explore how these tools are reshaping the craft of software engineering, making it more collaborative and iterative, enabling tremendous developer productivity. We'll connect the core principles of building complex systems with hands-on experience using state-of-the-art AI tools, guided by industry pioneers leading this revolution. Through real-world engineering tasks and a team-based project, you'll learn not just how to use the latest AI-powered workflows, but also when and why to trust them. Whether you're aiming to accelerate your productivity or rethink what it means to be a software engineer, this course will equip you with the skills and perspective to thrive in the era of AI-driven development.
Terms: Aut
| Units: 3
Instructors:
Eric, M. (PI)
;
Lin, F. (TA)
CS 147: Introduction to Human-Computer Interaction Design
Introduces fundamental methods and principles for designing, implementing, and evaluating user interfaces. Topics: user-centered design, rapid prototyping, experimentation, direct manipulation, cognitive principles, visual design, social software, software tools. Learn by doing: work with a team on a quarter-long design project, supported by lectures, readings, and studios. Prerequisite: 106B or X or equivalent programming experience. Recommended that CS Majors have also taken one of 142, 193P, or 193A.Please note: Less than 5 is only allowed for graduate students.
Terms: Aut
| Units: 3-5
Instructors:
Landay, J. (PI)
;
Jacob, S. (TA)
;
Maemoto, A. (TA)
;
Patel, N. (TA)
;
Sabharwal, D. (TA)
;
Tang, C. (TA)
;
Zhu, C. (TA)
CS 147L: Cross-platform Mobile App Development
The 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. Required Prerequisites:
CS106B.
Terms: Aut
| Units: 3
Instructors:
Cheng, A. (PI)
;
Landay, J. (PI)
;
AbuHashem, Y. (TA)
;
Blumencranz, J. (TA)
...
more »
Instructors:
Cheng, A. (PI)
;
Landay, J. (PI)
;
AbuHashem, Y. (TA)
;
Blumencranz, J. (TA)
;
Liu, K. (TA)
;
Peng, E. (TA)
CS 148: Introduction to Computer Graphics and Imaging
This is the introductory prerequisite course in the computer graphics sequence which introduces students to the technical concepts behind creating synthetic computer generated images. The beginning of the course focuses on using Blender to create visual imagery, as well as an understanding of the underlying mathematical concepts including triangles, normals, interpolation, texture mapping, bump mapping, etc. Then we move on to a more fundamental understanding of light and color, as well as how it impacts computer displays and printers. From this we discuss more thoroughly how light interacts with the environment, and we construct engineering models such as the BRDF and discuss various simplifications into more basic lighting and shading models. Finally, we discuss ray tracing technology for creating virtual images, while drawing parallels between ray tracers and real world cameras in order to illustrate various concepts. Anti-aliasing and acceleration structures are also discussed. The
more »
This is the introductory prerequisite course in the computer graphics sequence which introduces students to the technical concepts behind creating synthetic computer generated images. The beginning of the course focuses on using Blender to create visual imagery, as well as an understanding of the underlying mathematical concepts including triangles, normals, interpolation, texture mapping, bump mapping, etc. Then we move on to a more fundamental understanding of light and color, as well as how it impacts computer displays and printers. From this we discuss more thoroughly how light interacts with the environment, and we construct engineering models such as the BRDF and discuss various simplifications into more basic lighting and shading models. Finally, we discuss ray tracing technology for creating virtual images, while drawing parallels between ray tracers and real world cameras in order to illustrate various concepts. Anti-aliasing and acceleration structures are also discussed. The final class project consists of building out a ray tracer to create a visually compelling image. Starter codes and code bits will be provided here and there to aid in development, but this class focuses on what you can do with the code as opposed to what the code itself looks like. Therefore grading is weighted towards in person "demos" of the code in action - creativity and the production of impressive visual imagery are highly encouraged.This is the first course in the computer graphics sequence at Stanford. Topics include: Scanline Rendering; Triangles; Rasterization; Transformations; Shading; Triangle Meshes; Subdivision; Marching Cubes; Textures; Light; Color; Cameras; Displays; Tone Mapping; BRDF; Lighting Equation; Global Illumination; Radiosity; Ray Tracing; Acceleration Structures; Sampling; Antialiasing; Reflection; Transmission; Depth of Field; Motion Blur; Monte Carlo; Bidirectional Ray Tracing; Light Maps.
Terms: Aut, Sum
| Units: 3-4
| UG Reqs: GER:DB-EngrAppSci, WAY-CE
Instructors:
Baker, K. (PI)
;
Fedkiw, R. (PI)
;
Fan, M. (TA)
;
Fergesen, C. (TA)
;
Garcia, N. (TA)
;
Huang, F. (TA)
;
Huh, J. (TA)
;
Jovel, P. (TA)
;
Kim, H. (TA)
;
Koo, B. (TA)
;
Lee, J. (TA)
;
Li, F. (TA)
;
Liu, W. (TA)
;
Lopez, A. (TA)
;
Shu, L. (TA)
;
Ye, K. (TA)
CS 149: Parallel Computing
This course is an introduction to parallelism and parallel programming. Most new computer architectures are parallel; programming these machines requires knowledge of the basic issues of and techniques for writing parallel software. Topics: varieties of parallelism in current hardware (e.g., fast networks, multicore, accelerators such as GPUs, vector instruction sets), importance of locality, implicit vs. explicit parallelism, shared vs. non-shared memory, synchronization mechanisms (locking, atomicity, transactions, barriers), and parallel programming models (threads, data parallel/streaming, MapReduce, Apache Spark, SPMD, message passing, SIMT, transactions, and nested parallelism). Significant parallel programming assignments will be given as homework. The course is open to students who have completed the introductory CS course sequence through 111.
Terms: Aut
| Units: 3-4
| UG Reqs: GER:DB-EngrAppSci
Instructors:
Fatahalian, K. (PI)
;
Olukotun, O. (PI)
;
Chawla, S. (TA)
;
Dharmarajan, K. (TA)
...
more »
Instructors:
Fatahalian, K. (PI)
;
Olukotun, O. (PI)
;
Chawla, S. (TA)
;
Dharmarajan, K. (TA)
;
Patil, A. (TA)
;
Sriram, A. (TA)
;
Wang, W. (TA)
;
Weng, J. (TA)
;
Xie, Z. (TA)
;
Yu, W. (TA)
;
Zhan, A. (TA)
;
Zhang, G. (TA)
CS 151: Logic Programming
Logic Programming is a style of programming based on symbolic logic. In writing a logic program, the programmer describes the application area of the program (as a set of logical sentences) without reference to the internal data structures or operations of the system executing the program. In this regard, a logic program is more of a specification than an implementation; and logic programs are often called runnable specifications. This course introduces basic logic programming theory, current technology, and examples of common applications, notably deductive databases, logical spreadsheets, enterprise management, computational law, and game playing. Work in the course takes the form of readings and exercises, weekly programming assignments, and a term-long project. Prerequisite:
CS 106B or equivalent.
Terms: Spr
| Units: 3
Instructors:
Genesereth, M. (PI)
