Data Structures and Algorithms

Next running

21 Jan - 28 Feb 2020
7:00pm-8:30pm Tue/Fri
San Francisco

(and one subsequent session)



Apply for this course

Bradfield's Data Structures and Algorithms course is designed for software engineers looking to go beyond a "textbook" understanding of the topic and confront the challenges and opportunities at the intersection of computer science theory and software engineering.

We agree with decades of conventional wisdom that familiarity with algorithms and data structures is one of the most empowering aspects of a computer science education. For a software engineer, such familiarity becomes dramatically more useful when attained and applied in the context of real-world systems. For this reason, we've structured the course around an exploration of data structure and algorithms that appear in industry applications

Examples of the topics that may be covered include:

  • Fast regular expressions in grep
  • Dynamic programming in diff
  • Robust sorting in Go's standard library
  • String matching in the Linux kernel
  • Optimizing read-heavy workloads in PostgreSQL
  • Securing the Bitcoin network with Merkle hash trees

Projects and exercises

This class is oriented around hands-on exploration. While your instructor will spend some time helping you better understand certain concepts, you will mostly be translating key ideas into code and then comparing your results to open-source implementations, to build a strong intuition for the subject matter.

Assumed knowledge

This course assumes general familiarity with algorithms and data structures (e.g. asymptotic analysis, sorting, graphs, recursion, dynamic programming) as would be covered in a typical introductory algorithms course or MOOC. You should also be a confident programmer in any language.

Available sessions

21 Jan - 28 Feb 2020
7:00pm-8:30pm Tue/Fri
San Francisco
31 Mar - 8 May 2020
5:00pm-6:30pm PT Tue/Fri
Live online

This course will next be taught by

Elliott Jin

Elliott is a tech lead at Triplebyte. Previously he was an engineer at Dropbox, where he worked on a distributed search engine. 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.