Problem Solving with Algorithms and Data Structures

It is foolish to answer a question that you do not understand. It is sad to work for an end that you do not desire.
— George Polya

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. Introduction to technical problem solving and analysis
  2. Stacks, queues, deques and linked lists
  3. Sorting, searching and hashing
  4. Trees, tree traversal and priority queues
  5. Graphs and graph search algorithms
  6. Graph substructures
  7. Recursion, dynamic programming and backtracking
  8. Rapid fire problem solving

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.

Schedule and price

This course will next run on Wednesdays 6pm-9pm and Saturdays 10am-1pm for four weeks starting Wednesday, 31 May 2017. The total price is $1,800.

Apply now Still have questions? Contact us.
1141 Howard St
San Francisco, California
© 2016 Bradfield School of Computer Science