01 / Classic Textbook Recommendation
Classic Textbook Recommendation
Who this book is for
Students starting a data structures course who find formal textbooks hard going, self-taught programmers and bootcamp graduates who want the foundations a degree course would give them, and anyone preparing to read a standard textbook. It assumes readers can already write small programs and want to understand why some code is fast and other code is slow.
Prerequisites
Basic programming in any common language, including loops, functions and arrays; no mathematics beyond arithmetic is required.
What it covers
Measuring efficiency by counting steps; Big O notation for time and space; arrays, sets and ordered arrays with binary search; simple sorting algorithms and their analysis; hash tables; stacks and queues; recursion and recursive thinking; dynamic programming and memoization; quicksort and quickselect; linked lists; binary search trees; heaps and priority queues; tries; graphs with breadth-first and depth-first search and Dijkstra's algorithm; and practical techniques for optimizing code.
How to use it
Bhargava's Grokking Algorithms teaches mainly through illustrations and a selection of key algorithms; this book is a longer, code-centred tour that works through the core data structures one by one with exercises. Choose it when you want steady practice analysing real code. Read a chapter, then run and modify the examples in your own language.
Edition and sources
Second edition, published by The Pragmatic Bookshelf in August 2020 (ISBN 9781680507225); it adds chapters on recursion, dynamic programming and everyday use of Big O, and exercises throughout. Bibliographic data for this record comes from The Pragmatic Bookshelf.