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. Prerequisites: 106B or X, or consent of instructor. Students may not earn credit for both
CS 107 and
CS 107E.
Terms: Aut, Win, Spr
| Units: 3-5
| UG Reqs: WAY-FR, GER:DB-EngrAppSci
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:
Alag, S. (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: Aut, Win
| Units: 3-5
| UG Reqs: WAY-FR
CS 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 CS110 that fulfills any requirement satisfied by
CS110. Prerequisite:
CS107.
Terms: Aut, Win
| Units: 3-5
Instructors:
Troccoli, N. (PI)
;
Chauhan, J. (TA)
;
Chen, J. (TA)
;
Escandon, E. (TA)
;
Liang, A. (TA)
;
Mpala, P. (TA)
;
Podosin, K. (TA)
;
Recaldini, E. (TA)
;
Seir, G. (TA)
;
Tariq, U. (TA)
;
Tsai, J. (TA)
;
Verma, S. (TA)
;
Xiao, C. (TA)
CS 124: From Languages to Information (LINGUIST 180, LINGUIST 280)
NLP for extracting meaning from text and social networks on the web, and interacting with people via language. Introducing methods (from regex to large language models, via logistic regression, gradient descent, transformers and other neural networks, social networks, collaborative filtering), applications (chatbots, information retrieval, social computing, recommender systems), and ethical and social issues. Prerequisites:
CS106B, Python (at the level of
CS106A),
CS109 (or equivalent background in probability), and programming maturity and knowledge of UNIX equivalent to
CS107 (or taking CS107 or CS1U concurrently).
Terms: Win
| Units: 3-4
| UG Reqs: WAY-AQR
Instructors:
Jurafsky, D. (PI)
CS 168: The Modern Algorithmic Toolbox
This course will provide a rigorous and hands-on introduction to the central ideas and algorithms that constitute the core of the modern algorithms toolkit. Emphasis will be on understanding the high-level theoretical intuitions and principles underlying the algorithms we discuss, as well as developing a concrete understanding of when and how to implement and apply the algorithms. The course will be structured as a sequence of one-week investigations; each week will introduce one algorithmic idea, and discuss the motivation, theoretical underpinning, and practical applications of that algorithmic idea. Each topic will be accompanied by a mini-project in which students will be guided through a practical application of the ideas of the week. Topics include hashing, dimension reduction and LSH, boosting, linear programming, gradient descent, sampling and estimation, and an introduction to spectral techniques. Prerequisites: CS107 and
CS161, or permission from the instructor.
Terms: Spr
| Units: 3-4
Instructors:
Valiant, G. (PI)
CS 180: Digital Systems Architecture (EE 180)
The design of processor-based digital systems. Instruction sets, addressing modes, data types. Assembly language programming, low-level data structures, introduction to operating systems and compilers. Processor microarchitecture, microprogramming, pipelining. Memory systems and caches. Input/output, interrupts, buses and DMA. System design implementation alternatives, software/hardware tradeoffs. Labs involve the design of processor subsystems and processor-based embedded systems. Formerly
EE 108B. Prerequisite: one of CS107 or
CS 107E (required) and
EE108 (recommended but not required).
| UG Reqs: GER:DB-EngrAppSci, WAY-SMA
CS 193P: iOS Application Development
Build mobile applications using tools and APIs in iOS. Developing applications for the iPhone and iPad requires integration of numerous concepts including functional programming, object-oriented programming, computer-human interfaces, graphics, animation, reactive interfaces, Model-View-Intent (MVI) and Model-View-View-Model (MVVM) design paradigms, object-oriented databases, networking, and interactive performance considerations including multi-threading. This course will require you to learn a new programming language (Swift) as well as the iOS development environment, SwiftUI. Prerequisites: All coursework (homework and final project) involves writing code, so writing a lot of code should not be new to you (coding experience in almost any language is valuable, but object-oriented (e.g.
CS108) and/or functional programming languages (e.g.
CS43) are most highly recommended). CS106A and B (or X) and
CS107 (or equivalent) are hard prerequisites. Any other courses that help to develop your maturity as a programmer are also recommended.
Terms: Spr
| Units: 3
Instructors:
Hegarty, P. (PI)
CS 193U: Video Game Development in C++ and Unreal Engine
Hands-on game development in C++ using Unreal Engine 4, the game engine that triple-A games like Fortnite, PUBG, and Gears of War are all built on. Students will be introduced to the Unreal editor, game frameworks, physics, AI, multiplayer and networking, UI, and profiling and optimization. Project-based course where you build your own games and gain a solid foundation in Unreal's architecture that will apply to any future game projects. Pre-requisites: CS106B or CS106X required. CS107 and CS110 recommended.
Last offered: Autumn 2020
CS 241: Embedded Systems Workshop (EE 285)
Project-centric building hardware and software for embedded computing systems. This year the course projects are on a large interactive light sculpture to be installed in Packard. Syllabus topics will be determined by the needs of the enrolled students and projects. Examples of topics include: interrupts and concurrent programming, mechanical control, state-based programming models, signaling and frequency response, mechanical design, power budgets, software, firmware, and PCB design. Interested students can help lead community workshops to begin building the installation. Prerequisites: one of
CS107,
EE101A,
EE108,
ME80.
Terms: Aut
| Units: 3
| Repeatable
3 times
(up to 9 units total)
Instructors:
Levis, P. (PI)
Filter Results: