front matter
foreword
Programmers today can work at higher levels of productivity than ever before, relying on higher-level programming languages, higher-level libraries and tools, and generative AI. And you know what? I love that. It’s important that we branch out as a community and make the affordances of programming available to more people. If some super-sophisticated deep-learning Python library can help people who otherwise couldn’t use AI responsibly, then I’m all in.
At the same time, though, I still think many people need to know the fundamental data structures and algorithms that have underpinned computing for the past 60 years and will continue to do so for many more. It seemingly doesn’t matter what task I’m doing: fundamental questions about how to organize my data for efficiency always seem to crop up. Why is my code so slow here? Should I be using a linked list here instead of an array? Hash tables are supposed to be fast—what the heck’s going wrong with mine right now?
The best part is that you can learn this stuff just once (it’s not changing any time soon) and then apply it to all your future programming projects or programming interviews.