Skip to content
Skip to navigation
# Engineering & Computer Science

Go to Course## About This Course

## Requirements

## Course Staff

### Jeffrey D. Ullman

## Frequently Asked Questions

### Do I need to buy a textbook?

### What should I do if I don't have the prerequisites?

### How much work is expected?

### Will statements of accomplishment be offered?

Go to Course## About This Course

## Requirements

## Course Staff

### Jure Leskovec

### Anand Rajaraman

### Jeffrey D. Ullman

## Frequently Asked Questions

### Do I need to buy a textbook?

### How much work is expected?

### Will statements of accomplishment be offered?

Go to Course## About This Course

## Course syllabus

**Quantum mechanics in crystals**

**Methods for one-dimensional problems**

**Spin and identical particles**

**Quantum mechanics of light**

**Interaction of different kinds of particles**

**Mixed states and the density matrix**

**Quantum measurement and quantum information**

**Interpretation of quantum mechanics**

## Prerequisites

## Course Staff

### David Miller

## Frequently Asked Questions

### Do I need to buy a textbook?

### How much of a time commitment will this course be?

### Does this course carry any kind of Stanford University credit?

### Will I get a Statement of Accomplishment?

Go to Course## ABOUT THIS COURSE

## COURSE SYLLABUS

### Introduction to quantum mechanics

### Schroedinger’s wave equation

### Getting "quantum" behavior

### Quantum mechanics of systems that change in time

### Measurement in quantum mechanics

### Writing down quantum mechanics simply

### The hydrogen atom

### How to solve real problems

## PREREQUISITES

## COURSE STAFF

### David Miller

## FREQUENTLY ASKED QUESTIONS

### Required text

Go to Course
## Course Description

## Schedule

## Instructor

**Chris Chafe**, Professor of Music and Director of CCRMA## Requirements

Go to Course
## ABOUT THIS COURSE

## REQUIREMENTS

## COURSE STAFF

### Jeffrey D. Ullman

## Pages

Topic Image:

Go to Course## About This Course

## Frequently Asked Questions

### Can I earn a Statement of Accomplishment

Course topic:

Welcome to the self paced course, *Algorithms: Design and Analysis*! Algorithms are the heart of computer science, and the subject has countless practical applications as well as intellectual depth. This specialization is an introduction to algorithms for learners with at least a little programming experience. The specialization is rigorous but emphasizes the big picture and conceptual understanding over low-level implementation and mathematical details. After completing this specialization, you will be well-positioned to ace your technical interviews and speak fluently about algorithms with other programmers and computer scientists. Specific topics in the course include: "Big-oh" notation, sorting and searching, divide and conquer (master method, integer and matrix multiplication, closest pair), randomized algorithms (QuickSort, contraction algorithm for min cuts), data structures (heaps, balanced search trees, hash tables, bloom filters), graph primitives (applications of BFS and DFS, connectivity, shortest paths).

Learners will practice and master the fundamentals of algorithms through several types of assessments. There are 6 multiple choice quizzes to test your understanding of the most important concepts. There are also 6 programming assignments, where you implement one of the algorithms covered in lecture in a programming language of your choosing. The course concludes with a multiple-choice final. There are no assignment due dates and you can work through the course materials and assignments at your own pace.

Yes. If you successfully complete at least 70% of the graded assignments in the course, you can receive a Statement of Accomplishment.

Instructor(s):

Tim Roughgarden

Date:

Tuesday, January 31, 2017

Course topic:

Welcome to the self-paced version of Automata Theory!

We begin with a study of finite automata and the languages they can define (the so-called "regular languages." Topics include deterministic and nondeterministic automata, regular expressions, and the equivalence of these language-defining mechanisms. We also look at closure properties of the regular languages, e.g., the fact that the union of two regular languages is also a regular language. We consider decision properties of regular languages, e.g., the fact that there is an algorithm to tell whether or not the language defined by two finite automata are the same language. Finally, we see the pumping lemma for regular languages -- a way of proving that certain languages are not regular languages.

Our second topic is context-free grammars and their languages. We learn about parse trees and follow a pattern similar to that for finite automata: closure properties, decision properties, and a pumping lemma for context-free languages. We also introduce the pushdown automaton, whose nondeterministic version is equivalent in language-defining power to context-free grammars.

Next, we introduce the Turing machine, a kind of automaton that can define all the languages that can reasonably be said to be definable by any sort of computing device (the so-called "recursively enumerable languages"). We shall learn how "problems" (mathematical questions) can be expressed as languages. That lets us define problems to be "decidable" if their language can be defined by a Turing machine and "undecidable" if not. We shall see some basic undecidable problems, for example, it is undecidable whether the intersection of two context-free languages is empty.

Last, we look at the theory of intractable problems. These are problems that, while they are decidable, have almost certainly no algorithm that runs in time less than some exponential function of the size of their input. We meet the NP-complete problems, a large class of intractable problems. This class includes many of the hard combinatorial problems that have been assumed for decades or even centuries to require exponential time, and we learn that either none or all of these problems have polynomial-time algorithms. A common example of an NP-complete problem is SAT, the question of whether a Boolean expression has a truth-assignment to its variables that makes the expression itself true.

The primary prerequisite for this course is reasonable "mathematical sophistication." That is, you should feel comfortable with mathematics and proofs. Specific topics that are useful include a knowledge of graphs, trees, and logic, as well as basic data structures and algorithms.

Jeff Ullman is a retired professor of Computer Science at Stanford. His Home Page offers additional information about the instructor.

The class is self-contained, and you are not expected to purchase or steal a textbook. However, should you wish to do so, the textbook that matches the course most closely is *Automata Theory, Languages, and Computation* by Hopcroft, Motwani, and Ullman, Addison-Wesley, 2007./p>

For this purpose, there is a free textbook *Foundations of Computer Science*.

The amount of work will vary, depending on your background and the ease with which you follow mathematical ideas. However, 10 hours per week is a good guess.

Yes. You need to get 50% of the marks (roughly half for homework, half for the final). An SoA with Distinction requires 85% of the marks.

FAQ:

**Do I need to buy a textbook?**

The class is self-contained, and you are not expected to purchase or steal a textbook. However, should you wish to do so, the textbook that matches the course most closely is *Automata Theory, Languages, and Computation* by Hopcroft, Motwani, and Ullman, Addison-Wesley, 2007.

**What should I do if I don't have the prerequisites?**

For this purpose, there is a free textbook ** Foundations of Computer Science**.

**How much work is expected?**

The amount of work will vary, depending on your background and the ease with which you follow mathematical ideas. However, 10 hours per week is a good guess.

**Will statements of accomplishment be offered?**

Yes. You need to get 50% of the marks (roughly half for homework, half for the final). An SoA with Distinction requires 85% of the marks.

Date:

Tuesday, January 31, 2017

Course topic:

Welcome to the self-paced version of Mining of Massive Datasets!

The course is based on the text *Mining of Massive Datasets* by Jure Leskovec, Anand Rajaraman, and Jeff Ullman, who by coincidence are also the instructors for the course. The book is published by Cambridge Univ. Press, but by arrangement with the publisher, you can download a free copy Here. The material in this on-ine course closely matches the content of the Stanford course CS246.

The major topics covered include: MapReduce systems and algorithms, Locality-sensitive hashing, Algorithms for data streams, PageRank and Web-link analysis, Frequent itemset analysis, Clustering, Computational advertising, Recommendation systems, Social-network graphs, Dimensionality reduction, and Machine-learning algorithms.

The course is intended for graduate students and advanced undergraduates in Computer Science. At a minimum, you should have had courses in Data structures, Algorithms, Database systems, Linear algebra, Multivariable calculus, and Statistics.

Jure is an associate professor of computer science at Stanford. His research area is mining of large social and information networks. He is the author of the Stanford Network Analysis Platform, a general-purpose network analysis and graph mining library. For more information, see his Home Page.

Anand is a serial entrepreneur, venture capitalist, and academic, based in Silicon Valley. He founded two successful startups, Junglee (acquired by Amazon) and Kosmix (acquired by Walmart). At Amazon, he was co-inventor of Mechanical Turk. Currently, he is a founding partner of Milliways Labs, an early-stage venture-capital firm. For more information, see his Blog, called "Datawocky".

Jeff Ullman is a retired professor of Computer Science at Stanford. His Home Page offers additional information about the instructor.

No. The course follows the text *Mining of Massive Datasets* by Jure Leskovec, Anand Rajaraman, and Jeff Ullman. It is published by Cambridge University Press, but by permission of the publishers, you can download a free copy Here.

The amount of work will vary, depending on your background and the ease with which you follow mathematical and algorithmic ideas. However, 10 hours per week is a good guess.

Yes. You need to get 50% of the marks (half for homework, half for the final). An SoA with Distinction requires 80% of the marks.

Date:

Tuesday, January 17, 2017 to Friday, March 31, 2017

Course topic:

This course covers key topics in the use of quantum mechanics in many modern applications in science and technology, introduces core advanced concepts such as spin, identical particles, the quantum mechanics of light, the basics of quantum information, and the interpretation of quantum mechanics, and covers the major ways in which quantum mechanics is written and used in modern practice. It follows on directly from the QMSE-01 "Quantum Mechanics for Scientists and Engineers" course and is also accessible to others who have studied some quantum mechanics at the equivalent of a first junior or senior college-level physics quantum mechanics course. All of the material for the QMSE-01 course is also provided as a resource. The course should prepare participants well to understand quantum mechanics as it is used in a wide range of current applications and areas and provide a solid grounding for deeper studies of specific more advanced areas.

Crystal structures, the Bloch theorem that simplifies quantum mechanics in crystals, and other useful concepts for understanding semiconductor devices, such as density of states, effective mass, quantum confinement in nanostructures, and important example problems like optical absorption in semiconductors, a key process behind all optoelectronics.

How to understand and calculate tunneling current. The transfer matrix technique, a very simple and effective technique for calculating quantum mechanical waves and states.

The purely quantum mechanical idea of spin, and how to represent and visualize it. The general ideas of identical particles in quantum mechanics, including fermions and bosons, their properties and the states of multiple identical particles.

Representing light quantum mechanically, including the concept of photons, and introducing the ideas of annihilation and creation operators.

Describing interactions and processes using annihilation and creation operators for fermions and bosons, including the important examples of stimulated and spontaneous emission that correctly explain all light emitters, from lasers to light bulbs.

Introducing the idea of mixed states to describe how quantum mechanical systems interact with the rest of the complex world around us, and the notation and use of the density matrix to describe and manipulate these.

Introducing the no-cloning theorem, quantum cryptography, quantum entanglement and the basic ideas of quantum computing and teleportation, and returning to the idea of measurement in quantum mechanics, including the surprising results of Bell’s inequalities.

A brief introduction to some of the different approaches to the difficult problem of understanding what quantum mechanics really means!

The course is designed to build on a first course on quantum mechanics at the junior or senior college level, so students should have at least that background. The material here is specifically matched to follow on from the Stanford Online QMSE-01 "Quantum Mechanics for Scientists and Engineers" class, and all the material from that class is provided as background in the online course materials here. No additional background beyond that class is presumed here.

David Miller is the W. M. Keck Foundation Professor of Electrical Engineering and, by Courtesy, Professor of Applied Physics, both at Stanford University. He received his B. Sc. and Ph. D. degrees in Physics in Scotland, UK from St. Andrews University and Heriot-Watt University, respectively. Before moving to Stanford in 1996, he worked at AT&T Bell Laboratories for 15 years. His research interests have included physics and applications of quantum nanostructures, including invention of optical modulator devices now widely used in optical fiber communications, and fundamentals and applications of optics and nanophotonics. He has received several awards and honorary degrees for his work, holds over 70 US Patents, is a Fellow of many major professional societies in science and engineering, including IEEE, APS, OSA, the Royal Society of London, and the Royal Society of Edinburgh, and is a member of both the National Academy of Sciences and the National Academy of Engineering in the US. He has taught quantum mechanics at Stanford for more than 10 years to a broad range of students ranging from physics and engineering undergraduates to graduate engineers and scientists in many disciplines.

You do not need to buy a textbook; the course is self-contained. My book “Quantum Mechanics for Scientists and Engineers” (Cambridge, 2008) is an optional additional resource for the course. It follows essentially the same syllabus, has additional problems and exercises, allows you to go into greater depth on some ideas, and also contains many additional topics for further study.

You should expect this course to require 7 – 10 hours of work per week.

No.

Yes, students who score at least 70% will pass the course and receive a Statement of Accomplishment. Students who score at least 90% will receive a Statement of Accomplishment with distinction.

We recommend taking this course on a standard computer using Google Chrome as your internet browser. We are not yet optimized for mobile devices.

Date:

Tuesday, October 4, 2016 to Friday, December 16, 2016

Course topic:

This 9 week course aims to teach quantum mechanics to anyone with a reasonable college-level understanding of physical science or engineering. Quantum mechanics was once mostly of interest to physicists, chemists and other basic scientists. Now the concepts and techniques of quantum mechanics are essential in many areas of engineering and science such as materials science, nanotechnology, electronic devices, and photonics. This course is a substantial introduction to quantum mechanics and how to use it. It is specifically designed to be accessible not only to physicists but also to students and technical professionals over a wide range of science and engineering backgrounds.

How quantum mechanics is important in the everyday world, the bizarre aspects and continuing evolution of quantum mechanics, and how we need it for engineering much of modern technology.

Getting to Schroedinger’s wave equation. Key ideas in using quantum mechanical waves — probability densities, linearity. The "two slit" experiment and its paradoxes.

The "particle in a box", eigenvalues and eigenfunctions. Mathematics of quantum mechanical waves.

Time variation by superposition of wave functions. The harmonic oscillator. Movement in quantum mechanics — wave packets, group velocity and particle current.

Operators in quantum mechanics — the quantum-mechanical Hamiltonian. Measurement and its paradoxes — the Stern-Gerlach experiment.

A simple general way of looking at the mathematics of quantum mechanics — functions, operators, matrices and Dirac notation. Operators and measurable quantities. The uncertainty principle.

Angular momentum in quantum mechanics — atomic orbitals. Quantum mechanics with more than one particle. Solving for the the hydrogen atom. Nature of the states of atoms.

Approximation methods in quantum mechanics.

The course is approximately at the level of a first quantum mechanics class in physics at a third-year college level or above, but it is specifically designed to be suitable and useful also for those from other science and engineering disciplines.

The course emphasizes conceptual understanding rather than a heavily mathematical approach, but some amount of mathematics is essential for understanding and using quantum mechanics. The course presumes a mathematics background that includes basic algebra and trigonometry, functions, vectors, matrices, complex numbers, ordinary differential and integral calculus, and ordinary and partial differential equations.

In physics, students should understand elementary classical mechanics (Newton’s Laws) and basic ideas in electricity and magnetism at a level typical of first-year college physics. (The course explicitly does not require knowledge of more advanced concepts in classical mechanics, such as Hamiltonian or Lagrangian approaches, or in electromagnetism, such as Maxwell’s equations.) Some introductory exposure to modern physics, such as the ideas of electrons, photons, and atoms, is helpful but not required.

The course includes an optional and ungraded “refresher” background mathematics section that reviews and gives students a chance to practice all the necessary math background background. Introductory background material on key physics concepts is also presented at the beginning of the course.

David Miller is the W. M. Keck Foundation Professor of Electrical Engineering and, by Courtesy, Professor of Applied Physics, both at Stanford University. He received his B. Sc. and Ph. D. degrees in Physics in Scotland, UK from St. Andrews University and Heriot-Watt University, respectively. Before moving to Stanford in 1996, he worked at AT&T Bell Laboratories for 15 years. His research interests have included physics and applications of quantum nanostructures, including invention of optical modulator devices now widely used in optical fiber communications, and fundamentals and applications of optics and nanophotonics. He has received several awards and honorary degrees for his work, is a Fellow of many major professional societies in science and engineering, including the Royal Society of London, and is a member of both the National Academy of Sciences and the National Academy of Engineering in the US. He has taught quantum mechanics at Stanford for more than 10 years to a broad range of students ranging from physics and engineering undergraduates to graduate engineers and scientists in many disciplines.

The text “Quantum Mechanics for Scientists and Engineers” (Cambridge, 2008) is recommended for the course, though it is not required. It follows essentially the same syllabus, has additional problems and exercises, allows you to go into greater depth on some ideas, and also contains many additional topics for further study.

Date:

Tuesday, October 4, 2016

Course topic:

Today's vast amount of streaming and video conferencing on the Internet lacks one aspect of musical fun and that's what this course is about: high-quality, near-synchronous musical collaboration. Under the right conditions, the Internet can be used for ultra-low-latency, uncompressed sound transmission. The course teaches open-source (free) techniques for setting up city-to-city studio-to-studio audio links. Distributed rehearsing, production and split ensemble concerts are the goal. Setting up such links and debugging them requires knowledge of network protocols, network audio issues and some ear training.

**Course runs October 4, 2016 - February 7, 2017**

Session 1: Overview

Overview of Online Jamming and Concert Technology

Session 2: Basics And Setup

Basics: Network protocols, audio signals + soundcards and network audio.

Session 3: Jacktrip Application + Connection

Things that go wrong with Jacktrip: Network & Audio. P2P Sessions and Multi-site setups.

Session 4: Debugging

Debug examples of typical problems.

Session 5: Polish And Practice

Polish techniques and spawn more practice sessions.

Session 6: Future

Future of the art and practice of network audio, alternative platforms for network audio.

Chris Chafe is a composer, improviser, and cellist, developing much of his music alongside computer-based research. He is Director of Stanford University's Center for Computer Research in Music and Acoustics (CCRMA). At IRCAM (Paris) and The Banff Centre (Alberta), he pursued methods for digital synthesis, music performance, and real-time internet collaboration. CCRMA's SoundWIRE project involves live concertizing with musicians the world over. Online collaboration software including jacktrip and research into latency factors continue to evolve. An active performer either on the net or physically present, his music reaches audiences in dozens of countries and sometimes at novel venues. A simultaneous five-country concert was hosted at the United Nations in 2009. Chafe's works are available from Centaur Records and various online media. Gallery and museum music installations are into their second decade with "musifications" resulting from collaborations with artists, scientists and MD's. Recent work includes the Brain Stethoscope project, PolarTide for the 2013 Venice Biennale, Tomato Quintet for the transLife:media Festival at the National Art Museum of China and Sun Shot played by the horns of large ships in the port of St. Johns, Newfoundland.

**Equipment:** Computer (running Linux, OS X, or Windows) with installation privileges**Software:** JackTrip (plus Jack) and Audacity**Wired Internet:** at least 5Mbps download and upload

Date:

Tuesday, October 11, 2016

Course topic:

We begin with a study of finite automata and the languages they can define (the so-called "regular languages." Topics include deterministic and nondeterministic automata, regular expressions, and the equivalence of these language-defining mechanisms. We also look at closure properties of the regular languages, e.g., the fact that the union of two regular languages is also a regular language. We conssider decision properties of regular languages, e.g., the fact that there is an algorithm to tell whether or not the language defined by two finite automata are the same language. Finally, we see the pumping lemma for regular languages — a way of proving that certain languages are not regular languages.

Our second topic is context-free grammars and their languages. We learn about parse trees and follow a pattern similar to that for finite automata: closure properties, decision properties, and a pumping lemma for context-free languages. We also introduce the pushdown automaton, whose nondeterministic version is equivalent in language-defining power to context-free grammars.

Next, we introduce the Turing machine, a kind of automaton that can define all the languages that can reasonably be said to be definable by any sort of computing device (the so-called "recursively enumerable languages"). We shall learn how "problems" (mathematical questions) can be expressed as languages. That lets us define problems to be "decidable" if their language can be defined by a Turing machine and "undecidable" if not. We shall see some basic undecidable problems, for example, it is undecidable whether the intersection of two context-free languages is empty.

Last, we look at the theory of intractable problems. These are problems that, while they are decidable, have almost certainly no algorithm that runs in time less than some exponential function of the size of their input. We meet the NP-complete problems, a large class of intractable problems. This class includes many of the hard combinatorial problems that have been assumed for decades or even centuries to require exponential time, and we learn that either none or all of these problems have polynomial-time algorithms. A common example of an NP-complete problem is SAT, the question of whether a Boolean expression has a truth-assignment to its variables that makes the expression itself true.

The primary prerequisite for this course is reasonable "mathematical sophistication." That is, you should feel comfortable with mathematics and proofs. Specific topics that are useful include a knowledge of graphs, trees, and logic, as well as basic data structures and algorithms.

Jeff Ullman is a retired professor of Computer Science at Stanford. His home page offers additional information about the instructor.

FAQ:

**Do I need to buy a textbook?**

The class is self-contained, and you are not expected to purchase or steal a textbook. However, should you wish to do so, the textbook that matches the course most closely is *Automata Theory, Languages, and Computation* by Hopcroft, Motwani, and Ullman, Addison-Wesley, 2007.

**What should I do if I don't have the prerequisites?**

For this purpose, there is a free textbook ** Foundations of Computer Science**.

**How much work is expected?**

The amount of work will vary, depending on your background and the ease with which you follow mathematical ideas. However, 10 hours per week is a good guess.

**Will statements of accomplishment be offered?**

Yes. You need to get 50% of the marks (roughly half for homework, half for the final). An SoA with Distinction requires 85% of the marks.

Go to Course## ABOUT THIS COURSE

## PREREQUISITES

## COURSE STAFF

### Michael Genesereth

## FREQUENTLY ASKED QUESTIONS

### Do I need to buy a textbook?

### Is it possible to earn a Statement of Accomplishment for this class?

Course topic:

This course is an introduction to Logic from a computational perspective. It shows how to encode information in the form of logical sentences; it shows how to reason with information in this form; and it provides an overview of logic technology and its applications - in mathematics, science, engineering, business, law, and so forth.

The course was originally designed for use at the college level. However, experience has shown that it works for secondary school students as well, and it can be used at the start of graduate school for those who have not yet seen the material.

There are just two prerequisites. The course presumes that the student understands sets and set operations, such as union, intersection, and so forth. It also presumes that the student is comfortable with symbolic manipulation, as used, for example, in solving high-school algebra problems. Nothing else is required.

Michael Genesereth is an associate professor in the Computer Science Department at Stanford University. He received his Sc.B. in Physics from M.I.T. and his Ph.D. in Applied Mathematics from Harvard University. Prof. Genesereth is most known for his work on computational logic and applications of that work in enterprise computing, computational law, and general game playing. He has taught logic for many years at Stanford and offers an annual massive online course on logic that has reached over 500,000 students. He is the current director of the Logic Group at Stanford and founder and research director of CodeX (The Stanford Center for Legal Informatics).

No, the text Introduction to Logic is provided in the online material. However, you can purchase a printed version (published by Morgan-Claypool) if you’d like.

No. The Coursera Version of this course does not offer an S.O.A

Go to Course## Overview

## Topics Include

## Instructors

## Units

## Prerequisites

Course topic:

*Application and fee apply.*

Integrating computation, visualization and programming with MATLAB is a powerful approach to model and control systems. This course builds on the fundamentals of calculus to explore vector analysis techniques that are essential for engineers. Using examples drawn from various engineering fields, it introduces differential and integral vector calculus and linear algebra to analyze the effects of changing conditions on a system.

- Analytic geometry in space
- Green's, divergence and Stokes' theorems
- Integrals in Cartesian, cylindrical and spherical coordinates
- Lagrange multipliers
- Matrix operations
- Partial derivatives
- Unconstrained maxima and minima

- Hung Le
*Lecturer*,*Institute for Computational & Mathematical Eng.*

5.0

10 units of AP credit (Calc BC with 4 or 5, or Calc AB with 5), or Math41 and 42.

Go to Course## About this course

## Who is this class for

## Instructors

### Matthew O. Jackson

### Kevin Leyton-Brown

### Yoav Shoham

Course topic:

Popularized by movies such as "A Beautiful Mind," game theory is the mathematical modeling of strategic interaction among rational (and irrational) agents. Beyond what we call `games' in common language, such as chess, poker, soccer, etc., it includes the modeling of conflict among nations, political campaigns, competition among firms, and trading behavior in markets such as the NYSE. How could you begin to model keyword auctions, and peer to peer file-sharing networks, without accounting for the incentives of the people using them? The course will provide the basics: representing games and strategies, the extensive form (which computer scientists call game trees), Bayesian games (modeling things like auctions), repeated and stochastic games, and more. We'll include a variety of examples including classic games and a few applications.

You can find a full syllabus and description of the course here: http://web.stanford.edu/~jacksonm/GTOC-Syllabus.html

There is also an advanced follow-up course to this one, for people already familiar with game theory: https://www.coursera.org/learn/gametheory2/

This course starts every five weeks.

This course is aimed at students, researchers, and practitioners who wish to understand more about strategic interactions. You must be comfortable with mathematical thinking and rigorous arguments. Relatively little specific math is required; but you should be familiar with basic probability theory (for example, you should know what a conditional probability is), and some very light calculus would be helpful.

Created by: Stanford University, The University of British Columbia

Professor, Economics

Professor, Computer Science

Professor, Computer Science