Data Structures and Algorithms

Next running

Not currently scheduled for a next session. Please email us to express your interest.

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 topics that may be covered include:

  • Core data structures for storage and retrieval (B-trees, log-structured merge trees)
  • Efficient probabilistic approaches from high-scale systems (Bloom filters, HyperLogLog)
  • Engineering principles behind robust standard library functions (sorting, string matching)
  • Key algorithms in Unix utilities (diff, grep)

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.