
Algorithmic Thinking
A Problem-Based Introduction
Daniel Zingaro(Author)
No Starch Press
Published on 15. December 2020
Book
Paperback/Softback
408 pages
978-1-7185-0080-8 (ISBN)
Article exhausted; check for reprint
Description
Readers tackle challenging topics like recursion, dynamic programming, graphs, greedy algorithms, heaps, hash tables, segment trees, and other data structures for efficiently handling data. The book contains no pseudocode: all code is written in C and is thoroughly explained in the text (C is a de facto programming language for programming competitions). Zingaro also shows how several problems can be reduced to algorithms on graphs.
Reviews / Votes
"A good choice for anyone who needs to understand and implement algorithms."-RedGreenCode
"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
"The strength of the book is that the process of discovering and improving algorithms is described in detail and various different approaches are analyzed. Compared to traditional textbooks, there are also interesting topics that are not usually covered . . . Overall, the book is clearly written, the topics are well-chosen, and the book is a good introduction to some important competitive programming techniques."
-Antti Laaksonen, Olympiads in Informatics
More details
Language
English
Place of publication
San Francisco
United States
Dimensions
Height: 234 mm
Width: 177 mm
ISBN-13
978-1-7185-0080-8 (9781718500808)
Copyright in bibliographic data and cover images is held by Nielsen Book Services Limited or by the publishers or by their respective licensors: all rights reserved.
Schweitzer Classification
Other editions
New editions

Book
01/2024
2nd Edition
No Starch Press
€47.00
Available immediately
Person
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.
Content
Foreword
Introduction
Chapter 1: Hash Tables
Chapter 2: Trees and Recursion
Chapter 3: Memoization and Dynamic Programming
Chapter 4: Graphs and Breadth-First Search
Chapter 5: Shortest Paths in Weighted Graphs
Chapter 6: Binary Search
Chapter 7: Heaps and Segment Trees
Chapter 8: Union-Find
Chapter 9: Afterword
Appendix A: Algorithm Runtime
Appendix B: Because I Can't Resist
Appendix C: Problem Credits
Index
Introduction
Chapter 1: Hash Tables
Chapter 2: Trees and Recursion
Chapter 3: Memoization and Dynamic Programming
Chapter 4: Graphs and Breadth-First Search
Chapter 5: Shortest Paths in Weighted Graphs
Chapter 6: Binary Search
Chapter 7: Heaps and Segment Trees
Chapter 8: Union-Find
Chapter 9: Afterword
Appendix A: Algorithm Runtime
Appendix B: Because I Can't Resist
Appendix C: Problem Credits
Index