Problem Solving with Algorithms and Data Structures

Next running

4 Sep - 12 Oct
7:00pm-8:30pm Wed and 10:00am-11:30am Sat


San Francisco



Apply for this course

We agree with decades of conventional wisdom that familiarity with common algorithms and data structures is one of the most empowering aspects of a computer science education. This is also a great place to train one’s general problem solving abilities, which pays off in every other area of technical study.

In this course you will learn a number of important ways to model data (data structures) and answer interesting questions about them (algorithms). We are sure these will prove useful throughout your career. More importantly however, you will develop a stronger ability to understand, break down and solve novel problems, whether inventing your own techniques or repurposing those which we teach you.


  1. Asymptotic Analysis
  2. Divide and Conquer
  3. Graph Search: DFS and BFS
  4. Graph Search: Weighted Graphs
  5. Dynamic Programming
  6. Methodical Problem Solving
  7. Stacks, Queues and Deques
  8. Priority Queues, Sets and Maps
  9. Recursion
  10. Binary Search
  11. Dynamic Programming: Advanced Techniques
  12. Problem Solving Practice

Projects and exercises

This class is oriented around hands-on problem solving. While your instructor will spend some time helping you better understand certain concepts, you will mostly be solving small problems on the whiteboard and by writing code in your language of choice, to build a better intuition for the subject matter. You will also be given practice problems to work on between classes.

Assumed knowledge

This course assumes confident programming ability in any language.

Available sessions

4 Sep - 12 Oct
7:00pm-8:30pm Wed and 10:00am-11:30am Sat
San Francisco

This course will next be taught by

Elliott Jin

Elliott was most recently an engineer on the search team at Dropbox, where he worked on a distributed text retrieval system. Previously he worked at Palantir and Apptimize. In addition, Elliott has been a mentor for the Google Summer of Code, a section leader in Stanford's intro CS course, and a tutor at Stanford's Center for Teaching and Learning.