Algorithmic Thinking 2nd Edition Cover

Algorithmic Thinking, 2nd Edition

A Problem-Based Introduction
by Daniel Zingaro
December 2023, 440 pp.
Use coupon code PREORDER to get 25% off!

Knowing how to design algorithms will take you from being a good programmer to a great programmer. This completely revised second edition teaches you how to design your own rocket-fast, right-for-the-task algorithms—minus the proofs and complex math. Forget the useless pseudocode and played-out examples you’ve seen in other books. Author and award-winning educator Dan Zingaro draws problems straight from online programming competitions to rigorously teach you all of the heavyweights you need to know, like hash tables, recursion, trees, graphs, and heaps. As he guides you to the perfect algorithmic solution for each unique programming puzzle, you’ll build up a toolkit of go-to algorithms for quickly and correctly solving any problem you come across.

The second edition features several entirely new chapters on dynamic programming and randomized algorithms, as well as more effective problems and enhanced explanations. Code examples are provided using the C language.

Learn how to:

  • Classify problems, choose data structures, and identify appropriate algorithms
  • Choose between data structures like hash tables, heaps, or trees, based on how they affect runtime and speed
  • Adopt powerful strategies like recursion, dynamic programming, and binary search to solve challenging problems
  • Apply the breadth-first search algorithm to find the optimal way to play a board game, Dijkstra’s algorithm to determine the fastest routes between two locations, and many more
Author Bio 

Dr. Daniel Zingaro is an award-winning Assistant Professor of Mathematical and Computational Sciences at the University of Toronto Mississauga, where he is well known for his uniquely interactive approach to teaching, and internationally recognized for his expertise in Active Learning. He is also the author of Learn to Code by Solving Problems (No Starch Press, 2021).

Table of contents 

Chapter 1: Hash Tables
Chapter 2: Trees and Recursion
Chapter 3: Memoization and Dynamic Programming
Chapter 4: Advanced Memoization and Dynamic Programming
Chapter 5: Graphs and Breadth-First Search
Chapter 6: Shortest Paths in Weighted Graphs
Chapter 7: Binary Search
Chapter 8: Heaps and Segment Trees
Chapter 9: Union-Find
Chapter 10: Randomization
Appendix A: Algorithm Runtime
Appendix B: Because I Can’t Resist
Appendix C: Problem Credits

The chapters in red are included in this Early Access PDF.


Reviews for the 1st edition:

"A good choice for anyone who needs to understand and implement algorithms."

“With Zingaro as a tutor by your side, you'll learn, through practice on challenging competition problems, a repeatable process for figuring out and deftly applying the most appropriate algorithmic tools for the job. You'll learn it all from a book that exudes clarity, humor, and just the right dose of Canadian pride. Happy problem-solving!”
Dr. Tim Roughgarden, Professor of Computer Science at Columbia University

"A clear and engaging text . . . By presenting problems first and their algorithm/data structure solutions later, it shows us exactly why those solutions are useful and how they fit into the big picture. . . . Far too many textbooks present solutions fully-formed with no mention of the dead ends and too-complicated solutions you’d hit along the way. But Algorithmic Thinking takes you from the initial idea to the final breakthrough, setbacks and all. Problem solving is a raw, real journey, and this book captures its spirit perfectly. I highly recommend it."
—Ava Pun, medal winner in the International Olympiad in Informatics Programming Competition

"A good introduction to some important competitive programming techniques."
Antti LAAKSONEN, Olympiads in Informatics

Extra Stuff 

View the supplementary resources for the book, including downloadable code and additional exercises available.