斯坦福学科目前分为7个department:Business, Earth, Education, Engineering, Humanities & Sciences, Law, Medicine
Computer Science Department属于Engineering部:
下面为计算机系2021-2022的课程设置。(搬运自官网:斯坦福计算机系2021-2022年课程设置)
(note!!!:无任何盈利目的,方便自己看的同时也给需要的同学!转载请注明!)
(翻译有空再搞吧,最近没时间)
CS 1U: Practical Unix
A practical introduction to using the Unix operating system with a focus on Linux command line skills. Class will consist of video tutorials and weekly hands-on lab sections. Topics include: grep and regular expressions, ZSH, Vim and Emacs, basic and advanced GDB features, permissions, working with the file system, revision control, Unix utilities, environment customization, and using Python for shell scripts. Topics may be added, given sufficient interest. Course website: http://cs1u.stanford.edu
Terms: Aut, Win, Spr | Units: 1
Instructors: Zelenski, J. (PI)
CS 7: Personal Finance for Engineers
Introduction to the fundamentals and analysis specifically needed by engineers to make informed and intelligent financial decisions. Course will focus on actual industry-based financial information from technology companies and realistic financial issues. Topics include: behavioral finance, budgeting, debt, compensation, stock options, investing and real estate. No prior finance or economics experience required.
Terms: Aut | Units: 1
Instructors: Nash, A. (PI)
CS 9: Problem-Solving for the CS Technical Interview
This course will prepare students to interview for software engineering and related internships and full-time positions in industry. Drawing on multiple sources of actual interview questions, students will learn key problem-solving strategies specific to the technical/coding interview. Students will be encouraged to synthesize information they have learned across different courses in the major. Emphasis will be on the oral and combination written-oral modes of communication common in coding interviews, but which are unfamiliar settings for problem solving for many students. Prerequisites: CS 106B or X.
Terms: Aut | Units: 1
Instructors: Benson, A. (PI) ; Tullis, I. (PI)
CS 12SI: Introduction to Mobile Augmented Reality Design and Development
Over the course of 9 weeks, we’ll be covering major components of mobile AR development with Unity and AR Foundations to dig deep into concepts such as Plane Detection, Object Placement, Image and Face Tracking, Graphics, and a lot more! The class will feature student lecturers from Stanford XR leaders who have experience developing XR applications and guest speakers from industry professionals. Throughout the class, you’ll build your very own interactive AR app and share your work with others to showcase what you’ve learned. Prerequisite: CS 106A or equivalent basic coding experience.
Terms: Aut | Units: 1
Instructors: Borenstein, J. (PI)
CS 21SI: AI for Social Good
Students will learn about and apply cutting-edge artificial intelligence techniques to real-world social good spaces (such as healthcare, government, education, and environment). The class will focus on techniques from machine learning and deep learning, including regression, neural networks, convolutional neural networks (CNNs), and recurrent neural networks (RNNs). The course alternates between lectures on machine learning theory and discussions with invited speakers, who will challenge students to apply techniques in their social good domains. Students complete weekly coding assignments reinforcing machine learning concepts and applications. Prerequisites: programming experience at the level of CS107, mathematical fluency at the level of MATH51, comfort with probability at the level of CS109 (or equivalent). Application required for enrollment.
Terms: Spr | Units: 2
Instructors: Piech, C. (PI)
CS 22A: The Social & Economic Impact of Artificial Intelligence (INTLPOL 200)
Recent advances in computing may place us at the threshold of a unique turning point in human history. Soon we are likely to entrust management of our environment, economy, security, infrastructure, food production, healthcare, and to a large degree even our personal activities, to artificially intelligent computer systems. The prospect of “turning over the keys” to increasingly autonomous systems raises many complex and troubling questions. How will society respond as versatile robots and machine-learning systems displace an ever-expanding spectrum of blue- and white-collar workers? Will the benefits of this technological revolution be broadly distributed or accrue to a lucky few? How can we ensure that these systems are free of algorithmic bias and respect human ethical principles? What role will they play in our system of justice and the practice of law? How will they be used or abused in democratic societies and autocratic regimes? Will they alter the geopolitical balance of power, and change the nature of warfare? The goal of CS22a is to equip students with the intellectual tools, ethical foundation, and psychological framework to successfully navigate the coming age of intelligent machines.
Terms: Win | Units: 1
Instructors: Kaplan, J. (PI)
CS 24: Minds and Machines (LINGUIST 35, PHIL 99, PSYCH 35, SYMSYS 1, SYMSYS 200)
(Formerly SYMSYS 100). An overview of the interdisciplinary study of cognition, information, communication, and language, with an emphasis on foundational issues: What are minds? What is computation? What are rationality and intelligence? Can we predict human behavior? Can computers be truly intelligent? How do people and technology interact, and how might they do so in the future? Lectures focus on how the methods of philosophy, mathematics, empirical research, and computational modeling are used to study minds and machines. Students must take this course before being approved to declare Symbolic Systems as a major. All students interested in studying Symbolic Systems are urged to take this course early in their student careers. The course material and presentation will be at an introductory level, without prerequisites. If you have any questions about the course, please email symsys1staff@gmail.com.
Terms: Aut, Win | Units: 4 | UG Reqs: WAY-FR, GER:DB-SocSci
Instructors: Goodman, N. (PI) ; Lassiter, D. (PI) ; Yoon, E. (PI)
CS 25: Transformers United
Since their introduction in 2017, transformers have revolutionized Natural Language Processing (NLP). Now, transformers are finding applications all over Deep Learning, be it computer vision (CV), reinforcement learning (RL), Generative Adversarial Networks (GANs), Speech or even Biology. Among other things, transformers have enabled the creation of powerful language models like GPT 3 and were instrumental in DeepMind’s recent Alphafold2, that tackles protein folding. In this seminar, we examine the details of how transformers work, and dive deep into the different kinds of transformers and how they’re applied in different fields. We do this through a combination of instructor lectures, guest lectures, and classroom discussions. We will invite people at the forefront of transformers research across different domains for guest lectures. Prerequisites: Basic knowledge of Deep Learning (must understand attention) or CS224N/ CS231N/ CS230. To apply, fill out this form: https://forms.gle/TzAtqjZ4vnjhNMSy7
Terms: Aut | Units: 1
Instructors: Manning, C. (PI)
CS 31N: Counterfactuals: The Science of What Ifs?
How might the past have changed if different decisions were made? This question has captured the fascination of people for hundreds of years. By precisely asking, and answering such questions of counterfactual inference, we have the opportunity to both understand the impact of past decisions (has climate change worsened economic inequality?) and inform future choices (can we use historical electronic medical records data about decision made and outcomes, to create better protocols to enhance patient health?). In this course I will introduce some of the most common quantitative approaches to counterfactual reasoning, as well as give a wide sampling of some of the many important problems and questions that can be addressed through the lense of counterfactual reasoning, including in climate change, healthcare and economics. No prior experience with counterfactual or ¿what if¿ reasoning, nor probability, is required.
Terms: Sum | Units: 3
CS 41: Hap.py Code: The Python Programming Language
This course is about the fundamentals and contemporary usage of the Python programming language. The 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, powerful built-ins (e.g. map, filter, zip), and Python libraries. For the last few weeks, students will work with course staff to develop their own significant Python project. Prerequisite: CS106B, CS106X, or equivalent.
Terms: Spr | Units: 2
Instructors: Cain, J. (PI)
CS 44N: Great Ideas in Graphics
A hands-on interactive and fun exploration of great ideas from computer graphics. Motivated by graphics concepts, mathematical foundations and computer algorithms, students will explore an eccentric selection of “great ideas” through short weekly programming projects. Project topics will be selected from a diverse array of computer graphics concepts and historical elements.
Terms: Aut | Units: 3
Instructors: James, D. (PI)
CS 46N: Data-Driven Decisions and Discovery
The use of data to drive decisions and discoveries has increased dramatically over the past two decades, thanks to prevalent data collection, cheaper storage, faster computers, and sophisticated new algorithms. This introductory seminar will have three interwoven components: (1) Hands-on instruction in tools and techniques for working with data, from spreadsheets to data visualization systems to machine learning packages. (2) A suite of case studies where data has been key to decision-making or discovery, drawn from a wide variety of domains. (3) Ethical issues including privacy in data collection and use, the effect of bias in data-driven decision making, and evaluating claims about data-driven results and recommendations. Students will be expected to complete short assignments with data tools, a larger project on a dataset of personal interest, and a short case study presentation. No computer programming experience is required.
Terms: Spr | Units: 3
Instructors: Widom, 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 enabling students to build apps for both iOS and Android using RN. 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. No required prerequisites. Website: web.stanford.edu/class/cs47/. To enroll in the class, please fill the following application: https://forms.gle/nDnuR3R6N9LozXUdA. The application deadline is January 15th at 6:00 pm.
Terms: Win | Units: 2
Instructors: Landay, J. (PI)
CS 49N: Using Bits to Control Atoms
This is a crash course in how to use a stripped-down computer system about the size of a credit card (the rasberry pi computer) to control as many different sensors as we can implement in ten weeks, including LEDs, motion sensors, light controllers, and accelerometers. The ability to fearlessly grab a set of hardware devices, examine the data sheet to see how to use it, and stitch them together using simple code is a secret weapon that software-only people lack, and allows you to build many interesting gadgets. We will start with a "bare metal’’ system — no operating system, no support — and teach you how to read device data sheets describing sensors and write the minimal code needed to control them (including how to debug when things go wrong, as they always do). This course differs from most in that it is deliberately mostly about what and why rather than how — our hope is that the things you are able at the end will inspire you to follow the rest of the CS curriculum to understand better how things you’ve used work. Prerequisites: knowledge of the C programming language. A Linux or Mac laptop that you are comfortable coding on.
Terms: Aut, Sum | Units: 3
Instructors: Engler, D. (PI)
CS 51: CS + Social Good Studio: Designing Social Impact Projects
Get real-world experience researching and developing your own social impact project! Students work in small teams to develop high-impact projects around problem domains provided by partner organizations, under the guidance and support of design/technical coaches from industry and non-profit domain experts. Main class components are workshops, community discussions, guest speakers and mentorship. Studio provides an outlet for students to create social change through CS while engaging in the full product development cycle on real-world projects. The class culminates in a showcase where students share their project ideas and Minimum Viable Product prototypes with stakeholders and the public. Application required; please see cs51.stanford.edu for more information.
Terms: Win | Units: 2
Instructors: Cain, J. (PI)
CS 52: CS + Social Good Studio: Implementing Social Good Projects
Continuation of CS51 (CS + Social Good Studio). Teams enter the quarter having completed and tested a minimal viable product (MVP) with a well-defined target user, and a community partner. Students will learn to apply scalable technical frameworks, methods to measure social impact, tools for deployment, user acquisition techniques and growth/exit strategies. The purpose of the class is to facilitate students to build a sustainable infrastructure around their product idea. CS52 will host mentors, guest speakers and industry experts for various workshops and coaching-sessions. The class culminates in a showcase where students share their projects with stakeholders and the public. Prerequisite: CS 51, or consent of instructor.
Terms: Spr | Units: 2
Instructors: Cain, J. (PI)
CS 56N: Great Discoveries and Inventions in Computing
This seminar will explore some of both the great discoveries that underlie computer science and the inventions that have produced the remarkable advances in computing technology. Key questions we will explore include: What is computable? How can information be securely communicated? How do computers fundamentally work? What makes computers fast? Our exploration will look both at the principles behind the discoveries and inventions, as well as the history and the people involved in those events. Some exposure to programming is required.
Terms: Win | Units: 3
Instructors: Hennessy, J. (PI)
CS 57N: Randomness: Computational and Philosophical Approaches (PHIL 3N)
Is it ever reasonable to make a decision randomly? For example, would you ever let an important choice depend on the flip of a coin? Can randomness help us answer difficult questions more accurately or more efficiently? What is randomness anyway? Can an object be random? Are there genuinely random processes in the world, and if so, how can we tell? In this seminar, we will explore these questions through the lenses of philosophy and computation. By the end of the quarter students should have an appreciation of the many roles that randomness plays in both humanities and sciences, as well as a grasp of some of the key analytical tools used to study the concept. The course will be self-contained, and no prior experience with randomness/probability is necessary.
Terms: Win | Units: 3
Instructors: Icard, T. (PI) ; Wootters, M. (PI)
CS 59SI: Quantum Computing: Open-Source Project Experience
This course focuses on giving quantum software engineering industry experience with open-source projects proposed by frontier quantum computing and quantum device corporate partners.Quantum computing and quantum information industry sponsors submit open-source projects for students or teams of students to build and create solutions throughout the quarter with mentorship from the company. Gain experience with quantum mechanics, quantum computing, and real-worldnnsoftware development. Prerequisites: Computer science basics (106A, 106B), some undergraduate physics and basic understanding of quantum computing (no formal coursework in quantum computing required)
Terms: Spr | Units: 2
Instructors: Bouland, A. (PI)
CS 80Q: Race and Gender in Silicon Valley (AFRICAAM 80Q)
Join us as we go behind the scenes of some of the big headlines about trouble in Silicon Valley. We’ll start with the basic questions like who decides who gets to see themselves as “a computer person,” and how do early childhood and educational experiences shape our perceptions of our relationship to technology? Then we’ll see how those questions are fundamental to a wide variety of recent events from #metoo in tech companies, to the ways the under-representation of women and people of color in tech companies impacts the kinds of products that Silicon Valley brings to market. We’ll see how data and the coming age of AI raise the stakes on these questions of identity and technology. How can we ensure that AI technology will help reduce bias in human decision-making in areas from marketing to criminal justice, rather than amplify it?
Terms: Aut | Units: 3 | UG Reqs: WAY-ED
Instructors: Lee, C. (PI)
CS 83: Playback Theater
Playback combines elements of theater, community work and storytelling. In a playback show, a group of actors and musicians create an improvised performance based on the audience’s personal stories. A playback show brings about a powerful listening and sharing experience. During the course, we will tell, listen, play together, and train in playback techniques. We will write diaries to process our experience in the context of education and research. The course is aimed to strengthen listening abilities, creativity and the collaborative spirit, all integral parts of doing great science. In playback, as in research, we are always moving together, from the known, to the unknown, and back. There is limited enrollment for this class. Application is required.
Terms: Win | Units: 3 | UG Reqs: WAY-CE
Instructors: Reingold, O. (PI)
CS 100A: Problem-solving Lab for CS106A
Additional problem solving practice for the introductory CS course CS 106A. 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 106A required.
Terms: Aut, Win, Spr | Units: 1
Instructors: Parlante, N. (PI) ; Sahami, M. (PI) ; Zeng, B. (TA)
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) …
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 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: Aiken, A. (PI) ; Lee, C. (PI) ; Liu, A. (PI) …
CS 103A: Mathematical Problem-solving Strategies
Problem solving strategies and techniques in discrete mathematics and computer science. Additional problem solving practice for CS103. In-class participation required. Prerequisite: consent of instructor. Co-requisite: CS103.
Terms: Win, Spr | Units: 1
Instructors: Lee, C. (PI)
CS 105: Introduction to Computers
For non-technical majors. What computers are and how they work. Practical experience in development of websites and an introduction to programming. A survey of Internet technology and the basics of computer hardware. Students in technical fields and students looking to acquire programming skills should take 106A or 106X. Students with prior computer science experience at the level of 106 or above require consent of instructor. Prerequisite: minimal math skills.
Terms: Aut, Spr | Units: 3-5 | UG Reqs: GER:DB-EngrAppSci, WAY-FR
Instructors: Young, P. (PI) ; Bravo, M. (TA) ; Wang, N. (TA)
CS 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.
Terms: Aut, Win, Spr, Sum | Units: 3-5 | UG Reqs: WAY-FR, GER:DB-EngrAppSci
Instructors: Parlante, N. (PI) ; Sahami, M. (PI) ; Woodrow, J. (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: Gregg, C. (PI) ; Lee, C. (PI) ; Schwarz, K. (PI) …
CS 106E: Exploration of Computing
This course, designed for the non-computer scientist, will provide students with a solid foundation in the concepts and terminology behind computers, the Internet, and software development. It will give you better understanding and insight when working with technology. It will be particularly useful to future managers and PMs who will work with or who will lead programmers and other tech workers. But it will be useful to anyone who wants a better understanding of tech concepts and terms. We’ll start by covering the foundations of Computer Hardware, the CPU, Operating Systems, Computer Networks, and the Web. We will then use our foundation to explore a variety of tech-related topics including Computer Security (how computers are attacked and defensive measures that can be taken); Cloud Computing, Artificial Intelligence, Software Development, Human-Computer Interaction, and Computer Theory.nnPrerequisites: Some programming experience at the High School level of above will help students get the most out of the class, but the course can be successfully completed with no prerequisites.
Terms: Spr | Units: 3
Instructors: Young, P. (PI)
CS 106L: Standard C++ Programming Laboratory
This class explores features of the C++ programming language beyond what’s covered in CS106B. Topics include core C++ language features (e.g. const-correctness, operator overloading, templates, move semantics, and lambda expressions) and standard libraries (e.g. containers, algorithms, and smart pointers). Pre- or corequisite: CS106B or equivalent. Prerequisite: CS106B or equivalent. CS106L may be taken concurrently with CS106B.
Terms: Aut, Win, Spr | Units: 1
Instructors: Schwarz, K. (PI)
CS 106M: Enrichment Adventures in Programming Abstractions
This enrichment add-on is a companion course to CS106B to explore additional topics and go into further depth. Specific topics to be announced per-quarter; past topics have included search engines, pattern recognition, data compression/encryption, error correction, digital signatures, and numerical recipes. Students must be co-enrolled in CS106B. Refer to cs106m.stanford.edu for more information.
Terms: Aut | Units: 1
Instructors: Chang, M. (PI) ; Zelenski, J. (PI)
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: Aut, Win, Spr | Units: 1
Instructors: Cain, J. (PI)
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.
Terms: Aut, Win, Spr | Units: 3-5 | UG Reqs: WAY-FR, GER:DB-EngrAppSci
Instructors: Gregg, C. (PI) ; Troccoli, N. (PI) ; Benson, A. (TA) …
CS 107A: 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: Gregg, C. (PI) ; Troccoli, N. (PI) ; Benson, A. (TA)
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.
Terms: Aut, Win, Spr | Units: 3-5 | UG Reqs: WAY-FR
Instructors: Gregg, C. (PI) ; Hanrahan, P. (PI) ; Kozyrakis, C. (PI) …
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.
Terms: Win | Units: 3-4 | UG Reqs: GER:DB-EngrAppSci
Instructors: Young, P. (PI)
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. Prerequisites: 103, 106B or X, multivariate calculus at the level of MATH 51 or CME 100 or equivalent.
Terms: Aut, Win, Spr, Sum | Units: 3-5 | UG Reqs: WAY-AQR, WAY-FR, GER:DB-EngrAppSci
Instructors: Arthurs, N. (PI) ; Cain, J. (PI) ; Piech, C. (PI) …
CS 109A: 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: Cain, J. (PI) ; Piech, C. (PI) ; da Silva Sampaio, G. (TA)
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.
Terms: Aut, Win | Units: 3-5 | UG Reqs: GER:DB-EngrAppSci
Instructors: Cain, J. (PI) ; Troccoli, N. (PI) ; DeMichele, P. (TA) …
CS 110A: Problem Solving Lab for CS110
Additional design and implementation problems to complement the material taught in CS110. In-class participation is required. Prerequisite: consent of instructor. Corequisite: CS110.
Terms: Aut, Win | Units: 1
Instructors: Cain, J. (PI) ; Troccoli, N. (PI) ; Kaur, A. (TA)
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
Terms: Aut, Win | Units: 2
Instructors: Rossman, T. (PI)
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: Spr | Units: 3-5
Instructors: Cain, J. (PI) ; Ousterhout, J. (PI)
CS 112: Operating systems kernel implementation project
Students will learn the details of how operating systems work throughnfour implementation projects in the Pintos operating system. Thenprojects center around threads, processes, virtual memory, and filensystems. This class should not be taken by students who have taken ornplan to take CS212 or CS140. Prerequisite: CS111 or permission of theninstructor.
Terms: Win | Units: 3
Instructors: Mazieres, D. (PI)
CS 114: Selected Reading of Computer Science Research
Detailed reading of 5-10 research publications in computer science. For undergraduates, the course is an introduction to advanced foundational concepts within a field as well as an in-depth look at detailed research. For graduate students, the course focuses on historical reading as well as an opportunity to discuss the strengths and weaknesses of the work. Both groups of students discuss historical context, how ideas succeeded or did not and why, and how they manifest in modern technology. The discussion of each piece of work includes a guest lecture by one of its authors.
Terms: Spr | Units: 3
Instructors: Levis, P. (PI)
CS 124: From Languages to Information (LINGUIST 180, LINGUIST 280)
Extracting meaning, information, and structure from human language text, speech, web pages, social networks. Introducing methods (regex, edit distance, naive Bayes, logistic regression, neural embeddings, inverted indices, collaborative filtering, PageRank), applications (chatbots, sentiment analysis, information retrieval, question answering, text classification, social networks, recommender systems), and ethical issues in both. Prerequisites: CS106B
Terms: Aut | Units: 3-4 | UG Reqs: WAY-AQR
Instructors: Jurafsky, D. (PI) ; Cruz, D. (TA) ; Kim, M. (TA) …
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: Spr | Units: 3-4
Instructors: Ng, A. (PI)
CS 131: Computer Vision: Foundations and Applications
Computer Vision technologies are transforming automotive, healthcare, manufacturing, agriculture and many other sections. Today, household robots can navigate spaces and perform duties, search engines can index billions of images and video