Skip to content
Skip to navigation
# Engineering & Computer Science

Go to Course
Go to Course
Go to Course
Go to Course
Go to Course## Recommended Background

## Course Format

## FAQ

Go to Course## FAQ

Go to Course
## Pages

Topic Image:

Date:

Monday, October 1, 2012

Course topic:

This course will discuss the major ideas used today in the implementation of programming language compilers. You will learn how a program written in a high-level language designed for humans is systematically translated into a program written in low-level assembly more suited to machines!

Instructor(s):

Alex Aiken

Date:

Wednesday, June 13, 2012

Course topic:

I am pleased to be able to offer free over the Internet a course on Automata Theory, based on the material I have 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.

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 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

Date:

Monday, July 1, 2013

Course topic:

In this course you will learn several fundamental principles of algorithm design. You'll learn the divide-and-conquer design paradigm, with applications to fast sorting, searching, and multiplication. You'll learn several blazingly fast primitives for computing on graphs, such as how to compute connectivity information and shortest paths. Finally, we'll study how allowing the computer to "flip coins" can lead to elegant and practical algorithms and data structures. Learn the answers to questions such as: How do data structures like heaps, hash tables, bloom filters, and balanced search trees actually work, anyway? How come QuickSort runs so fast? What can graph algorithms tell us about the structure of the Web and social networks? Did my 3rd-grade teacher explain only a suboptimal algorithm for multiplying two numbers?

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 consists 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. There will be approximately two hours worth of video content per week.

**What should I know to take this class?**

How to program in at least one programming language (like C, Java, or Python); familiarity with proofs, including proofs by induction and by contradiction; and some discrete probability, like how to compute the probability that a poker hand is a full house. At Stanford, a version of this course is taken by sophomore, junior, and senior-level computer science majors.

Instructor(s):

Tim Roughgarden

Date:

Tuesday, June 19, 2012 to Thursday, July 26, 2012

Course topic:

If you've been meaning to learn iOS development, there may never be a better time. Stanford's most popular iTunes U course now includes peer collaboration on Piazza, so you can learn alongside fellow mobile developers from around the world. If you've tried it alone and gotten stuck, now there will be people to help. If you've taken it before and aced it, now you can sharpen your knowledge by helping others. Covers iOS 5. Tools and APIs required to build applications for the iPhone and iPad platform using the iOS SDK. User interface designs for mobile devices and unique user interactions using multi-touch technologies. Object-oriented design using model-view-controller paradigm, memory management, Objective-C programming language. Other topics include: object-oriented database API, animation, multi-threading and performance considerations.

Instructor(s):

Paul Hegarty

Date:

Monday, September 2, 2013

Course topic:

In this course you will learn several fundamental principles of advanced algorithm design. You'll learn the greedy algorithm design paradigm, with applications to computing good network backbones (i.e., spanning trees) and good codes for data compression. You'll learn the tricky yet widely applicable dynamic programming algorithm design paradigm, with applications to routing in the Internet and sequencing genome fragments. You’ll learn what NP-completeness and the famous “P vs. NP” problem means for the algorithm designer. Finally, we’ll study several strategies for dealing with hard (i.e., NP-complete problems), including the design and analysis of heuristics. Learn how shortest-path algorithms from the 1950s (i.e., pre-ARPANET!) govern the way that your Internet traffic gets routed today; why efficient algorithms are fundamental to modern genomics; and how to make a million bucks in prize money by “just” solving a math problem!

This course builds off Algo 1.

How to program in at least one programming language (like C, Java, or Python); and familiarity with proofs, including proofs by induction and by contradiction. At Stanford, a version of this course is taken by sophomore, junior, and senior-level computer science majors. The course assumes familiarity with the topics from Part I --- especially asymptotic analysis, basic data structures, and basic graph algorithms.

How to program in at least one programming language (like C, Java, or Python); and familiarity with proofs, including proofs by induction and by contradiction. At Stanford, a version of this course is taken by sophomore, junior, and senior-level computer science majors. The course assumes familiarity with the topics from Part I --- especially asymptotic analysis, basic data structures, and basic graph algorithms.

The class will consist of lecture videos, generally between 10 and 15 minutes in length. These usually contain 1-3 integrated quiz questions per video. There will also be standalone homeworks and programming assignments that are not part of video lectures, and a final exam.

**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.

Instructor(s):

Tim Roughgarden

Date:

Monday, September 9, 2013

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.

**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:

Friday, October 12, 2012

Course topic:

( Note: This course is completed. )

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.

Instructor(s):

Nick McKeown

Philip Levis

Date:

Monday, April 22, 2013

Course topic:

Machine learning is the science of getting computers to act without being explicitly programmed. In the past decade, machine learning has given us self-driving cars, practical speech recognition, effective web search, and a vastly improved understanding of the human genome. Machine learning is so pervasive today that you probably use it dozens of times a day without knowing it. Many researchers also think it is the best way to make progress towards human-level AI. In this class, you will learn about the most effective machine learning techniques, and gain practice implementing them and getting them to work for yourself. More importantly, you'll learn about not only the theoretical underpinnings of learning, but also gain the practical know-how needed to quickly and powerfully apply these techniques to new problems. Finally, you'll learn about some of Silicon Valley's best practices in innovation as it pertains to machine learning and AI.

This course provides a broad introduction to machine learning, datamining, and statistical pattern recognition. Topics include: (i) Supervised learning (parametric/non-parametric algorithms, support vector machines, kernels, neural networks). (ii) Unsupervised learning (clustering, dimensionality reduction, recommender systems, deep learning). (iii) Best practices in machine learning (bias/variance theory; innovation process in machine learning and AI). The course will also draw from numerous case studies and applications, so that you'll also learn how to apply learning algorithms to building smart robots (perception, control), text understanding (web search, anti-spam), computer vision, medical informatics, audio, database mining, and other areas.

FAQ:

**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.

**How much programming background is needed for the course?**The course includes programming assignments and some programming background will be helpful.

**Do I need to buy a textbook for the course?**No, it is self-contained.

**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.

Instructor(s):

Andrew Ng