CS 349M: Machine Learning for Software Engineering
In recent years, tools based on machine learning have become increasingly prevalent in the software engineering field. The ubiquity of machine learning is an important factor, but just as important is the availability of software engineering data: there are billions of lines of code available in public repositories (e.g. on GitHub), there is the change history of that code, there are discussion fora (e.g. Stack Overflow) that contain a wealth of information for developers, companies have access to telemetry on their apps from millions of users, and so on. The scale of software engineering data has permitted machine learning and statistical approaches to imagine tools that are beyond the capabilities of traditional, semantics-based approaches. In this graduate seminar, students will learn the various ways in which code and related artifacts can be treated as data, and how various developer tools can be built by applying machine learning over this data. The course will consist of discussion of a selection of research papers, as well as a hands-on project that can be done in small groups. Prerequisites: Familiarity with basic machine learning, and either CS143 or
CS295.
Last offered: Spring 2022
| Units: 3-4
CS 350: Secure Compilation
This course explores the field of secure compilation, which sits at the intersection between security and programming languages. The course covers the following topics: threat models for secure compilers, formal criteria for secure compilers to adhere to, security relevance of secure compilation criteria, security architectures employed to achieve secure compilation, proof techniques for secure compilation with a focus on backtranslation.
Last offered: Spring 2021
| Units: 3
CS 350S: Privacy-Preserving Systems
CS 350S explores systems that use cryptography to provide strong privacy guarantees. Students will learn about both modern cryptographic tools and systems techniques, and they will examine how these are used together in existing cryptographic systems to minimize overheads. The class will consist of faculty lectures, student presentations, and guest lectures to offer a real-world perspective. Topics will include transparency logs, oblivious RAM, private information retrieval, and multi-party computation. Over the course of the class, students will build a privacy-preserving system. Prerequisites: Students should have taken CS155 or equivalent.
Terms: Aut
| Units: 3
Instructors:
Dauterman, E. (PI)
;
Zhang, T. (TA)
CS 351: Open Problems in Coding Theory
Coding theory is the study of how to encode data to protect it from noise. Coding theory touches CS, EE, math, and many other areas, and there are exciting open problems at all of these frontiers. In this class, we will explore these open problems by reading recent research papers and thinking about some open problems together. Required work will involve reading and presenting research papers, as well as working in small groups at these open problems and presenting progress. (Solving an open problem is not required!) Topics will depend on student interest and may include locality, coded computation, index coding, interactive communication, and group testing. Prerequisites:
CS250 / EE387 or
EE388; or linear algebra and permission of the instructor.
Last offered: Spring 2021
| Units: 3
CS 352B: Blockchain Governance
This course offers an overview of blockchain governance and Decentralized Autonomous Organizations (DAOs), with topics including DAO tooling, on-chain and off-chain voting, delegation, constitutional design, alternative governance mechanisms, identity, and privacy. We will cover these topics and others from technical, social science, and legal perspectives, and we will include a range of guests from the web3 space as well as several speakers who are on the frontiers of DAO research. The course presumes some basic familiarity with blockchain and cryptocurrencies, but deep technical facility is not required, i.e., successful completion of
CS 251 or
LAW 1043 is more than enough. Elements used in grading: Homework and papers. There are no examinations. Grading elements and the course itself are designed so that students with diverse expertise and backgrounds (law, technical, business, etc.) have an equal opportunity to do well and have a powerful learning experience. Cross-listed with
L
more »
This course offers an overview of blockchain governance and Decentralized Autonomous Organizations (DAOs), with topics including DAO tooling, on-chain and off-chain voting, delegation, constitutional design, alternative governance mechanisms, identity, and privacy. We will cover these topics and others from technical, social science, and legal perspectives, and we will include a range of guests from the web3 space as well as several speakers who are on the frontiers of DAO research. The course presumes some basic familiarity with blockchain and cryptocurrencies, but deep technical facility is not required, i.e., successful completion of
CS 251 or
LAW 1043 is more than enough. Elements used in grading: Homework and papers. There are no examinations. Grading elements and the course itself are designed so that students with diverse expertise and backgrounds (law, technical, business, etc.) have an equal opportunity to do well and have a powerful learning experience. Cross-listed with
LAW 1078. The course will be taught in law school classrooms. In addition to the listed Stanford faculty instructors and the various guest speakers, Silke Noa Elrifai, a crypto lawyer and mathematician with a deep background in actual DAO projects and currently a Visiting Scholar at Stanford, will be the primary instructor for several classes and will play an integral role in the course.
Last offered: Spring 2024
| Units: 3
CS 353: Seminar on Logic & Formal Philosophy (PHIL 391)
Contemporary work. May be repeated a total of three times for credit.
Last offered: Winter 2024
| Units: 2-4
| Repeatable
3 times
(up to 12 units total)
CS 354: Topics in Intractability: Unfulfilled Algorithmic Fantasies
Over the past 45 years, understanding NP-hardness has been an amazingly useful tool for algorithm designers. This course will expose students to additional ways to reason about obstacles for designing efficient algorithms. Topics will include unconditional lower bounds (query- and communication-complexity), total problems, Unique Games, average-case complexity, and fine-grained complexity. Prerequisites:
CS 161 or equivalent.
CS 254 recommended but not required.
Last offered: Winter 2022
| Units: 3
CS 355: Advanced Topics in Cryptography
Topics: Pseudo randomness, multiparty computation, pairing-based and lattice-based cryptography, zero knowledge protocols, and new encryption and integrity paradigms. May be repeated for credit. Prerequisite:
CS255.
Terms: Spr
| Units: 3
| Repeatable
for credit
CS 356: Topics in Computer and Network Security
Research seminar covering foundational work and current topics in computer and network security. Students will read and discuss published research papers as well as complete an original research project in small groups. Open to Ph.D. and masters students as well as advanced undergraduate students. Prerequisites: While the course has no official prerequisites, students need a mature understanding of software systems and networks to be successful. We strongly encourage students to first take
CS155: Computer and Network Security.
Terms: Aut
| Units: 3
Instructors:
Durumeric, Z. (PI)
;
Ruth, K. (TA)
CS 357S: Formal Methods for Computer Systems
The complexity of modern computer systems requires rigorous and systematic verification/validation techniques to evaluate their ability to correctly and securely support application programs. To this end, a growing body of work in both industry and academia leverages formal methods techniques to solve computer systems challenges. This course is a research seminar that will cover foundational work and current topics in the application of formal methods-style techniques (some possible examples include SAT/SMT, model checking, symbolic execution, theorem proving, program synthesis, fuzzing) to reliable and secure computer systems design. The course can be thought of as an applied formal methods course where the application is reliable and secure architecture, microarchitecture, and distributed systems design. Prior formal methods experience is not necessary. Students will read and discuss published research papers and complete an original research project. Open to PhD and masters students as well as advanced undergraduate students. Prerequisites: EE180 Digital Systems Architecture or comparable course, or consent of instructor.
Terms: Win
| Units: 3
Instructors:
Mosier, N. (PI)
;
Trippel, C. (PI)
