The first TAOCP book is the most foundational, as the title suggests, and if you only have it in your budget to buy one of these books, it's the one I'd recommend. The first hundred-or-so pages give a crash course on the mathematical concepts and tools that Knuth employs most. The next hundred pages are a description of the imaginary computer that Knuth uses in all his code examples, as well as some basic programming techniques. This brings us to one of the biggest complaints about this series of textbooks: all of the code examples are written in assembly! But I had a lot of fun learning how Knuth's strange imaginary computer worked and writing a bunch of programs in MIX assembly. The highlight of this section is a MIX simulator, written in MIX itself! The fact that this simulator only requires about 300 lines of assembly really demonstrates how bare-bones this computer is. But of course, the goal of these books isn't to teach the reader how to program in assembly. The hope is that seeing the algorithms implemented at such a low-level will make programming them in any higher-level language a breeze. And of course, every program is accompanied by a detailed description of the algorithm in the highest-level programming language of all: plain old English! This is the format of the second half of the book, which introduces linked lists, trees, and uses this concept to describe methods for automatic garbage collection and dynamic storage allocation in a low-level computer.