Design and Analysis of Algorithms

Course Description

Worst and average case analysis. Recurrences and asymptotics. Efficient algorithms for sorting, searching, and selection. Data structures: binary search trees, heaps, hash tables. Algorithm design techniques: divide-and-conquer, dynamic programming, greedy algorithms, amortized analysis, randomization. Algorithms for fundamental graph problems: minimum-cost spanning tree, connected components, topological sort, and shortest paths. Possible additional topics: network flow, string searching. 

Course Details

  • Intensive Study: Computer Science
  • Enrollment requirements: This is a 5 unit course. Only matriculated Stanford graduate students are allowed to enroll in it for 3, 4 or 5 units but must still do the standard 5 units of coursework. Visiting students must enroll in 5 units.
  • Online Format: Both Synchronous & Asynchronous - This course is taught through a combination of synchronous and asynchronous opportunities. Students should check the Stanford Explore Courses website for information on the scheduling options.


CS 103; CS 109 or STATS 116, or equivalents.

Group 3GroupGroup 2