Skip to content
Skip to navigation
# Engineering & Computer Science

Go to Course## PREREQUISITES

## INTENDED AUDIENCE

### Do I need to buy the textbook?

### Do we need to purchase a Matlab license to take this course?

### Do I get a credit or a certificate?

### How hard is this class?

Go to Course## PREREQUISITES

Go to Course
Go to Course
Go to Course## About the Course

## Course Syllabus

## Recommended Background

## Suggested Readings

## Course Format

## FAQ

**Will I get a Statement of Accomplishment after completing this class?**
Go to Course## About the Course

In the first week we consider the problem of aggregating different agents' preferences, discussing voting rules and the challenges faced in collective decision making. We present some of the most important theoretical results in the area: notably, Arrow's Theorem, which proves that there is no "perfect" voting system, and also the Gibbard-Satterthwaite and Muller-Satterthwaite Theorems. We move on to consider the problem of making collective decisions when agents are self interested and can strategically misreport their preferences. We explain "mechanism design" -- a broad framework for designing interactions between self-interested agents -- and give some key theoretical results. Our third week focuses on the problem of designing mechanisms to maximize aggregate happiness across agents, and presents the powerful family of Vickrey-Clarke-Groves mechanisms. The course wraps up with a fourth week that considers the problem of allocating scarce resources among self-interested agents, and that provides an introduction to auction theory. ## Course Syllabus

## Recommended Background

## Suggested Readings

## Course Format

## FAQ

Go to Course
Go to Course## LIMITED ENROLLMENT

## PREREQUISITES

Go to Course## Why Study Automata Theory?

## Recommended Background

## Suggested Readings

## FAQ

## Pages

Topic Image:

Go to Course## RECOMMENDED BACKGROUND

## COURSE FORMAT

Course topic:

*Coming Soon*.

Cryptography is an indispensable tool for protecting information in computer systems. This course is a continuation of Crypto I and explains the inner workings of public-key systems and cryptographic protocols. Students will learn how to reason about the security of cryptographic constructions and how to apply this knowledge to real-world applications. The course begins with constructions for digital signatures and their applications. We will then discuss protocols for user authentication and zero-knowledge protocols. Next we will turn to privacy applications of cryptography supporting anonymous credentials and private database lookup. We will conclude with more advanced topics including multi-party computation and elliptic curve cryptography. Throughout the course students will be exposed to many exciting open problems in the field. The course will include written homeworks and optional programming labs. The material is self-contained, but the course assumes knowledge of the topics covered in Crypto I as well as a basic understanding of discrete probability theory.

The class will consist of lecture videos, which are between 8 and 20 minutes in length. These contain 1-2 integrated quiz questions per video. There will also be standalone homeworks that are not part of video lectures, optional programming assignments, and a (not optional) final exam.

FAQ:

**Will I get a certificate after completing this class?**Statement of accomplishment will be given to students who obtain more than 70% of the maximum score on the problem sets and final exam. Students who also complete the programming assignments will receive a statement of accomplishment saying that they also completed the programming part of the course.

**What is the format of the class?**The class will consist of lecture videos, which are broken into small chunks, usually between eight and twelve minutes each. Some of these may contain integrated quiz questions. There will also be standalone quizzes that are not part of video lectures, and programming assignments. There will be approximately two hours worth of video content per week.

**How much programming background is needed for the course?**The course includes optional programming assignments and some programming background will be helpful. We will also point to online resources that can help students find the necessary background.

**What math background is needed for the course?**The course is mostly self contained, however some knowledge of discrete probability will be helpful. The wikibooks article on discrete probability should give sufficient background.

Instructor(s):

Dan Boneh

Date:

Tuesday, January 21, 2014

Course topic:

This course concentrates on recognizing and solving convex optimization problems that arise in applications. The syllabus includes: convex sets, functions, and optimization problems; basics of convex analysis; least-squares, linear and quadratic programs, semidefinite programming, minimax, extremal volume, and other problems; optimality conditions, duality theory, theorems of alternative, and applications; interior-point methods; applications to signal processing, statistics and machine learning, control and mechanical engineering, digital and analog circuit design, and finance.

You should have good knowledge of linear algebra and exposure to probability. Exposure to numerical computing, optimization, and application fields is helpful but not required; the applications will be kept basic and simple. You will use matlab and CVX to write simple scripts, so some basic familiarity with matlab is helpful. We will provide some basic Matlab tutorials.

This course should benefit anyone who uses or will use scientific computing or optimization in engineering or related work (e.g., machine learning, finance). More specifically, people from the following fields: Electrical Engineering (especially areas like signal and image processing, communications, control, EDA & CAD); Aero & Astro (control, navigation, design), Mechanical & Civil Engineering (especially robotics, control, structural analysis, optimization, design); Computer Science (especially machine learning, robotics, computer graphics, algorithms & complexity, computational geometry); Operations Research; Scientific Computing and Computational Mathematics. The course may be useful to students and researchers in several other fields as well: Mathematics, Statistics, Finance, Economics.

FAQ:

No, the textbook is available online at http://www.stanford.edu/~boyd/cvxbook/.

You will be able to use Matlab under a special license provided to you as a course participant to use for the CVX101 course. This is a limited license for the duration of the course and is intended to be used only for course work and not for commercial purposes. Alternatively, you may choose to access Matlab via a web interface if you prefer not to install Matlab on your computer.

No, you will receive an informal Statement of Accomplishment from the instructor.

The difficulty level of this class is equivalent to Stanford's EE364a, which is a graduate level class in electrical engineering.

Date:

Tuesday, January 21, 2014

Course topic:

This is an introductory course on computer networking, specifically the Internet. It focuses on explaining how the Internet works, ranging from how bits are modulated on wires and in wireless to application-level protocols like BitTorrent and HTTP. It also explains the principles of how to design networks and network protocols. Students gain experience reading and understanding RFCs (Internet protocol specifications) as statements of what a system should do. The course grounds many of the concepts in current practice and recent developments, such as net neutrality and DNS security.

Students need an introductory course in probability, a strong understanding of bits and bytes, and knowledge of how computers lay out data in memory.

Instructor(s):

Nick McKeown

Philip Levis

Date:

Monday, January 6, 2014

Course topic:

Cryptography is an indispensable tool for protecting information in computer systems. This course explains the inner workings of cryptographic primitives and how to correctly use them. Students will learn how to reason about the security of cryptographic constructions and how to apply this knowledge to real-world applications. The course begins with a detailed discussion of how two parties who have a shared secret key can communicate securely when a powerful adversary eavesdrops and tampers with traffic. We will examine many deployed protocols and analyze mistakes in existing systems. The second half of the course discusses public-key techniques that let two or more parties generate a shared secret key. We will cover the relevant number theory and discuss public-key encryption, digital signatures, and authentication protocols. Towards the end of the course we will cover more advanced topics such as zero-knowledge, distributed protocols such as secure auctions, and a number of privacy mechanisms. Throughout the course students will be exposed to many exciting open problems in the field.

The course will include written homeworks and programming labs. The course is self-contained, however it will be helpful to have a basic understanding of discrete probability theory.

FAQ:

**Will I get a statement of accomplishment after completing this class?**Yes. Students who successfully complete the class will receive a statement of accomplishment signed by the instructor.

**What is the format of the class?**The class will consist of lecture videos, which are broken into small chunks, usually between eight and twelve minutes each. Some of these may contain integrated quiz questions. There will also be standalone quizzes that are not part of video lectures, and programming assignments. There will be approximately two hours worth of video content per week.

**How much programming background is needed for the course?**The course includes programming assignments and some programming background will be helpful. However, we will hand out lots of starter code that will help students complete the assignments. We will also point to online resources that can help students find the necessary background.

**What math background is needed for the course?**The course is mostly self contained, however some knowledge of discrete probability will be helpful. The wikibooks article on discrete probability should give sufficient background.

Instructor(s):

Dan Boneh

Date:

Tuesday, January 21, 2014

This is an introductory-level course in supervised learning, with a focus on regression and classification methods. The syllabus includes: linear and polynomial regression, logistic regression and linear discriminant analysis; cross-validation and the bootstrap, model selection and regularization methods (ridge and lasso); nonlinear models, splines and generalized additive models; tree-based methods, random forests and boosting; support-vector machines. Some unsupervised learning methods are discussed: principal components and clustering (k-means and hierarchical).

This is not a math-heavy class, so we try and describe the methods without heavy reliance on formulas and complex mathematics. We focus on what we consider to be the important elements of modern data analysis. Computing is done in R. There are lectures devoted to R, giving tutorials from the ground up, and progressing with more detailed sessions that implement the techniques in each chapter.

The lectures cover all the material in An Introduction to Statistical Learning, with Applications in R by James, Witten, Hastie and Tibshirani (Springer, 2013). As of January 5, 2014, the pdf for this book will be available for free, with the consent of the publisher, on the book website.

Instructor(s):

Trevor Hastie

Rob Tibshirani

Date:

Monday, January 6, 2014

Social networks pervade our social and economic lives. They play a central role in the transmission of information about job opportunities and are critical to the trade of many goods and services. They are important in determining which products we buy, which languages we speak, how we vote, as well as whether or not we decide to become criminals, how much education we obtain, and our likelihood of succeeding professionally. The countless ways in which network structures affect our well-being make it critical to understand how social network structures impact behavior, which network structures are likely to emerge in a society, and why we organize ourselves as we do. This course provides an overview and synthesis of research on social and economic networks, drawing on studies by sociologists, economists, computer scientists, physicists, and mathematicians.

The course begins with some empirical background on social and economic networks, and an overview of concepts used to describe and measure networks. Next, we will cover a set of models of how networks form, including random network models as well as strategic formation models, and some hybrids. We will then discuss a series of models of how networks impact behavior, including contagion, diffusion, learning, and peer influences.

- Week 1: Introduction, Empirical Background and Definitions

- Week 2: Background, Definitions, and Measures Continued

- Week 3: Random Networks

- Week 4: Strategic Network Formation

Game Theoretic Modeling of Network Formation, The Connections Model, The Conflict between Incentives and Efficiency, Dynamics, Directed Networks, Hybrid Models of Choice and Chance

- Week 5: Diffusion on Networks.

- Week 6: Learning on Networks.

- Week 7: Games on Networks.

Network Games, Peer Influences: Strategic Complements and Substitutes, the Relation between Network Structure and Behavior, A Linear Quadratic Game, Repeated Interactions and Network Structures.

The course has some basic prerequisites in mathematics and statistics. For example, it will be assumed that students are comfortable with basic concepts from linear algebra (e.g., matrix multiplication), probability theory (e.g., probability distributions, expected values, Bayes' rule), and statistics (e.g., hypothesis testing), and some light calculus (e.g., differentiation and integration). Beyond those concepts, the course will be self-contained.

The course is self-contained, so that all the definitions and concepts you need to solve the problem sets and final are contained in the video lectures. Much of the material for the course is covered in a text: Matthew O. Jackson Social and Economic Networks, Princeton University Press (Here are Princeton University Pressand Amazon pages for the book). The text is *optional* and not required for the course. Additional background readings, including research articles and several surveys on some of the topics covered in the course can be found on my web page.

The course will run for seven weeks, plus two for the final exam. Each week there will be video lectures available, as well as a standalone problem set and some occasional data exercises, and there will be a final exam at the end of the course for those who wish to earn a course certificate.

Yes. Students who successfully complete the class (above 70 percent correct on the problem sets and final exam) will receive a Statement of Accomplishment signed by the instructor - and those earning above 90 percent credit on the problem sets and final will earn one with distinction.

Date:

Monday, January 13, 2014

Course topic:

Popularized by movies such as "A Beautiful Mind", game theory is the mathematical modeling of strategic interaction among rational (and irrational) agents. Over four weeks of lectures, this advanced course considers how to design interactions between agents in order to achieve good social outcomes. Three main topics are covered: social choice theory (i.e., collective decision making), mechanism design, and auctions.

There will be four weeks of materials consisting of online videos and problem sets. We recommend that you complete the problem set for each week within that week, although the hard deadline is two weeks from the release date. On the fifth week, we will have a final exam.

Week 1. Social Choice

Week 2. Mechanism Design

Week 3. Efficient Mechanisms

Week 4. Auctions

Week 5-6. Final exam and final problem set.

You must be comfortable with mathematical thinking and rigorous arguments. Relatively little specific math is required; the course involves lightweight probability theory (for example, you should know what a conditional probability is) and very lightweight calculus (for instance, taking a derivative).

The following background readings provide more detailed coverage of the course material:

Multiagent Systems: Algorithmic, Game-Theoretic, and Logical Foundations, by Yoav Shoham and Kevin Leyton-Brown; Cambridge University Press, 2009. This book has the same structure as the course, and covers most of the same material. It is available as a free PDF download from the link above or for sale as a physical book from (e.g.) amazon.com.

A Brief Introduction to the Basics of Game Theory, by Matthew O. Jackson. These notes offer a quick introduction to the basics of game theory; they are available as a free PDF download.

Videos. The lectures are delivered via videos, which are broken into small chunks, usually between five and fifteen minutes each. There will be approximately one and a half hours of video content per week. You may watch the lecture videos at your convenience. Lower-resolution videos are also available for those with slow Internet connections.

- Slides. We have made available pdf files of all the lecture slides.
- Quizzes. There will be non-graded short "quiz" questions that will follow some of the videos to help you gauge your understanding.
- Online Lab Exercises. After some of the videos, we will ask you to go online to play some games. These are entirely optional, and are designed to illustrate some of the concepts from the course.
- Problem Sets. There will also be graded weekly problem sets that you will also answer online, but may work through offline; those must be completed within two weeks of the time that they are posted in order to be graded for full credit. If you miss a problem set deadline, you may complete it before the end of the course for half credit. You may discuss problems from the problem sets with other students in an online forum, without providing explicit answers.
- Final Exam. There will be an online final exam that you will have to complete within two weeks of its posting. Once you begin the exam, you will have four hours to complete it.
- Screen-side Chats. We will hold occasional online chats where we answer questions and discuss topics relevant to the course.

**Will I get a statement of accomplishment after completing this class?**Yes. Students who successfully complete the class will receive a statement of accomplishment signed by the instructors.

Instructor(s):

Kevin Leyton-Brown

Date:

Monday, November 18, 2013 to Monday, January 6, 2014

Course topic:

This is the second half of a course that introduces the fundamentals of technology entrepreneurship, pioneered in Silicon Valley and now spreading across the world. Last time, nearly 40,000 students from around the world participated and worked in teams together. The top teams were matched with Silicon Valley mentors, and the best teams at the end of the class pitched their ideas to investors. Many of the alumni of the last class are continuing to build their startups and will be mentoring teams this time.

By the conclusion of the course, it is our hope that you understand how to:

- Articulate a process for taking a technology idea and finding a high-potential commercial opportunity (high performing students will be able to discuss the pros and cons of alternative theoretical models).
- Create and verify a plan for gathering resources such as talent and capital.
- Create and verify a business model for how to sell and market an entrepreneurial idea.
- Generalize this process to an entrepreneurial mindset of turning problems into opportunities that can be used in larger companies and other settings.

Instructor(s):

Chuck Eesley

Date:

Monday, November 4, 2013 to Tuesday, December 17, 2013

Course topic:

Students in this class will learn how to build, program, and control haptic devices, which are mechatronic devices that allow users to feel virtual or remote environments. In the process, students will gain an appreciation for the capabilities and limitations of human touch, develop an intuitive connection between equations that describe physical interactions and how they feel, and gain practical interdisciplinary engineering skills related to robotics, mechanical engineering, electrical engineering, bioengineering, and computer science. We will send each student a free Hapkit to be assembled, tested, and programmed at home. Laboratory assignments using Hapkit will give students hands-on experience in assembling mechanical systems, making circuits, programming Arduino-based micro-controllers, and testing their haptic creations. After the class, we hope that you will continue to use and modify your Hapkit, and let us know about your haptic creations.

**Enrollment is limited to 100 students** physically located in the US for this first offering, and an application (due Oct. 28 at 11:00 pm PDT) is required. If you click the "Register for Haptics" button above, you will receive a message that enrollment is closed. You must first complete the application to be considered for this offering. If your application is accepted, you will receive an email invitation to join the course.

The required background for this course is high-school physics (non-calculus is fine) and pre-calculus. Programming is experience is helpful, but not required. Haptic device design, robotics, and mechatronics experience are not required -- this is designed as a gateway course for these topics.

Date:

Monday, November 4, 2013

Course topic:

Automata Theory is a course based on the material has been taught periodically at Stanford in the course CS154. Students have access to screencast lecture videos, are given quiz questions, assignments and exams, receive regular feedback on progress, and can participate in a discussion forum. Those who successfully complete the course will receive a statement of accomplishment. You will need a decent Internet connection for accessing course materials, but should be able to watch the videos on your smartphone.

The course covers four broad areas: (1) Finite automata and regular expressions, (2) Context-free grammars, (3) Turing machines and decidability, and (4) the theory of intractability, or NP-complete problems.

This subject is not just for those planning to enter the field of complexity theory, although it is a good place to start if that is your goal. Rather, the course will emphasize those aspects of the theory that people really use in practice. Finite automata, regular expressions, and context-free grammars are ideas that have stood the test of time. They are essential tools for compilers. But more importantly, they are used in many systems that require input that is less general than a full programming language yet more complex than "push this button."

The concepts of undecidable problems and intractable problems serve a different purpose. Undecidable problems are those for which no computer solution can ever exist, while intractable problems are those for which there is strong evidence that, although they can be solved by a computer, they cannot be solved sufficiently fast that the solution is truly useful in practice. Understanding this theory, and in particular being able to prove that a problem you are facing belongs to one of these classes, allows you to justify taking another approach — simplifying the problem or writing code to approximate the solution, for example.

During the course, I'm going to prove a number of things. The purpose of these proofs is not to torture you or confuse you. Neither are the proofs there because I doubt you would believe me were I merely to state some well-known fact. Rather, understanding how these proofs, especially inductive proofs, work, lets you think more clearly about your own work. I do not advocate proofs that programs are correct, but whenever you attempt something a bit complex, it is good to have in mind the inductive proofs that would be needed to guarantee that what you are doing really works in all cases.

You should have had a second course in Computer Science — one that covers basic data structures (e.g., lists, trees, hashing), and basic algorithms (e.g., tree traversals, recursive programming, big-oh running time). In addition, a course in discrete mathematics covering propositional logic, graphs, and inductive proofs is valuable background.

If you need to review or learn some of these topics, there is a free on-line textbook Foundations of Computer Science, written by Al Aho and me, available at http://i.stanford.edu/~ullman/focs.html. Recommended chapters include 2 (Recursion and Induction), 3 (Running Time of Programs), 5 (Trees), 6 (Lists), 7 (Sets), 9 (Graphs), and 12 (Propositional Logic). You will also find introductions to finite automata, regular expressions, and context-free grammars in Chapters 10 and 11. Reading Chapter 10 would be good preparation for the first week of the course.

The course includes two programming exercises for which a knowledge of Java is required. However, these exercises are optional. You will receive automated feedback, but the results will not be recorded or used to grade the course. So if you are not familiar with Java, you can still take the course without concern for prerequisites.

The course is built around the material in Automata Theory, Languages, and Computation 3rd edition (2007), by John Hopcroft, Rajeev Motwani, and Jeffrey Ullman, Addison-Wesley. However, you do not have to buy a copy of this book. The course is self-contained, and all homeworks and exams are based solely on concepts taught in the video lectures.

**Will I get a statement of accomplishment after completing this class?**Yes. Students who successfully complete the class will receive a statement of accomplishment signed by the instructor.

**What is the format of the class?**The class will consist of lecture videos, which are between 15 and 45 minutes in length. These contain integrated quiz questions. There will also be standalone homeworks that are not part of video lectures, optional programming assignments, and a (not optional) final exam.

**How much work will I be expected to do in this class?**You need to work about 5-10 hours per week to complete the course. About 2 hours of video segments each week, containing inline ungraded quiz questions. A weekly, graded multiple choice homework.

Instructor(s):

Jeff Ullman