Welcome to CS161: Design and Analysis of Algorithms!

End-of-Quarter and Lecture Notes

The class is now over --- congrats everyone on a great quarter!
I've collected all the course materials into one PDF that you might find useful as a reference.
Source code for all of the algorithms discussed is available here.


Lecture Notes

The course staff are really excited to meet everyone and get started learning, designing, and analyzing algorithms this summer! We will post a finalized syllabus here soon. In the meantime, here is some general logistics info. Please do email me if you have other questions!

Logistics

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

Prerequisite: 106B or 106X; 103 or 103B; 109 or STATS 116.