Members don't see the ad below. Register now!

Design and Analysis of Algorithms I

Back to course list | Guidelines For Editing


Table of contents
Introduction
Prerequisites
Reading list
Video materials
Lecture notes
Software
Further studies

Information

Design and Analysis of Algorithms I is going to be offered for the first time in (was January 2012) now February 2012.

In this course you will learn several fundamental principles of algorithm design.

Topics include:

  1. How do data structures like heaps, hash tables, bloom filters, and balanced search trees actually work, anyway?
  2. How come QuickSort runs so fast?
  3. What can graph algorithms tell us about the structure of the Web and social networks?
  4. Did my 3rd-grade teacher explain only a suboptimal algorithm for multiplying two numbers?

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.

Prerequisites

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.

Recommended reading

Video materials

Lecture notes

Software

Further studies

powered by OSQA