Welcome to CS161!
Stanford University, Fall 2025
Course Overview
Instructor: Mary Wootters
When and where? T/Th 9am - 10:20am, Bishop Auditorium.
Course Description: This course will cover the basic approaches and mindsets for analyzing and designing algorithms and data structures. Topics include the following: 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.
Prerequisites: CS 103 or CS 103B; CS 109 or STATS 116; CS106B/X.
What do I need to do? Seven homework assignments and three exams (plus, you know, learning the material). See the Course Policies for details on the grading breakdown.
Do I have to come to class? Lectures will be recorded and videos will be available on Canvas. If you learn better by watching the lecture videos at your own speed and on your own schedule, that's fine. However, there will be two in-class midterms that you must attend in-person.
Announcements: Please check Ed for course announcements.
Get in touch: To get in touch with the teaching team, please post on Ed (privately if appropriate). For personal or sensitive matters (include OAE letters), please email cs161-staff-aut2526@cs.stanford.edu.
High-Resolution Feedback: We will be using High-Resolution Course Feedback (HRCF), an anonymous course feedback tool that helps the teaching team understand their students better on a weekly basis. Each student will receive a request for feedback twice during the quarter, on randomly chosen weeks. Please respond to feedback requests when you receive them, this is how we make the course better!