
Amazon Prime Free Trial
FREE Delivery is available to Prime members. To join, select "Try Amazon Prime and start saving today with FREE Delivery" below the Add to Cart button and confirm your Prime free trial.
Amazon Prime members enjoy:- Cardmembers earn 5% Back at Amazon.com with a Prime Credit Card.
- Unlimited FREE Prime delivery
- Streaming of thousands of movies and TV shows with limited ads on Prime Video.
- A Kindle book to borrow for free each month - with no due dates
- Listen to over 2 million songs and hundreds of playlists
Important: Your credit card will NOT be charged when you start your free trial or if you cancel during the trial period. If you're happy with Amazon Prime, do nothing. At the end of the free trial, your membership will automatically upgrade to a monthly membership.
Buy new:
-8% $46.20$46.20
Ships from: Amazon.com Sold by: Amazon.com
Save with Used - Good
$25.95$25.95
Ships from: Amazon Sold by: Storm's Emporium
Return this item for free
We offer easy, convenient returns with at least one free return option: no shipping charges. All returns must comply with our returns policy.
Learn more about free returns.- Go to your orders and start the return
- Select your preferred free shipping option
- Drop off and leave!

Download the free Kindle app and start reading Kindle books instantly on your smartphone, tablet, or computer - no Kindle device required.
Read instantly on your browser with Kindle for Web.
Using your mobile phone camera - scan the code below and download the Kindle app.
Follow the author
OK
Think Like a Programmer: An Introduction to Creative Problem Solving Illustrated Edition
Purchase options and add-ons
You'll also learn how to:
–Split problems into discrete components to make them easier to solve
–Make the most of code reuse with functions, classes, and libraries
–Pick the perfect data structure for a particular job
–Master more advanced programming tools like recursion and dynamic memory
–Organize your thoughts and develop strategies to tackle particular types of problems
Although the book's examples are written in C++, the creative problem-solving concepts they illustrate go beyond any particular language; in fact, they often reach outside the realm of computer science. As the most skillful programmers know, writing great code is a creative art—and the first step in creating your masterpiece is learning to Think Like a Programmer.
- ISBN-101593274246
- ISBN-13978-1593274245
- EditionIllustrated
- PublisherNo Starch Press
- Publication dateAugust 12, 2012
- LanguageEnglish
- Dimensions7 x 0.59 x 9.25 inches
- Print length256 pages
Frequently bought together

Customers who viewed this item also viewed
Editorial Reviews
Amazon.com Review
A Message From Author V. Anton Spraul
“Over the past 15 years, I've taught programming to countless students from every sort of background. A few of them were naturals, but most struggled, even the ones who would eventually turn into excellent programmers. However, they weren't struggling with the syntax of the programming language, but rather with applying it to solve the assigned problems.
Knowing how to read a program is very different from knowing how to write one. While typical books or training courses are often effective at explaining the individual elements of programming, they tend to offer little advice on combining these elements to solve particular problems. That's where Think Like a Programmer comes in.”
Review
—Adrian Woodhead, Slashdot
"Spraul has taught intro computer science classes for over fifteen years and it shows. He does a great job showing the theory using concrete examples, and rightfully puts a great deal of emphasis on programming exercises to strengthen the concepts."
—Ariane Coffin, Wired.com's GeekMom
"The combination of conceptual overview and common problem-solving techniques that are applicable to many applications make this a particularly feasible way to supplement or review programming skills while learning a systematic approach to problem solving."
—Choice Magazine
"This is one of the most helpful books I've read, due to the fact that it guides you towards designing a system for yourself, as opposed to encouraging a mindset where there can be only one correct method."
—Lucas Westermann, Full Circle Magazine
"The book is well-written, with tons of excellent advice and solid, well-thought-out examples. If you’re willing to devote some time to studying the material, you’ll soon find yourself equipped with an impressive array of problem-solving strategies and, maybe, a new outlook on programming."
—Phil Bull, author of the official Ubuntu documentation
"I guarantee if you work through the entire book you will stretch your brain."
—David Bolton, About.com C/C++/C#
"I would definitely recommend this book as a companion to whatever text is used to introduce [new students] to programming and/or program logic."
—Joe Saur, The ACM's Software Engineering Notes Magazine
"[V. Anton Spraul's] advice is simple, straightforward, and practical. It's an easy—and valuable—read."
—James Powell, Enterprise Systems
"I highly recommend Think Like a Programmer to anyone who wants to hone their creative problem-solving skills or to anyone who has learned to program, but doesn't feel that they fully understand the concepts."
—Robert Perkins, Game Vortex
"This is definitely a book that I would use in teaching programming to others."
—Stephen Chapman, Ask Felgall
About the Author
Product details
- Publisher : No Starch Press; Illustrated edition (August 12, 2012)
- Language : English
- Paperback : 256 pages
- ISBN-10 : 1593274246
- ISBN-13 : 978-1593274245
- Item Weight : 2.31 pounds
- Dimensions : 7 x 0.59 x 9.25 inches
- Best Sellers Rank: #215,537 in Books (See Top 100 in Books)
- #34 in C++ Programming Language
- #47 in Software Design & Engineering
- #209 in Software Development (Books)
- Customer Reviews:
About the author

V. Anton Spraul has lived his entire life in Birmingham, Alabama, while somehow acquiring so little accent that locals assume he's from Ohio. He's an award-winning teacher with two degrees in computer science, and considers his nonfiction writing another form of teaching. His most popular book, Think Like a Programmer, combats a common malady for beginning programmers: the inability to write a complete, original program from scratch. "The book every programmer should read once" has fans around the globe and has been translated into five languages. Spraul maintains a blog on a range of topics and creates YouTube videos that extend the topics in his books. In his off-hours, he reads across a range of seriousness from economics texts to old-fashioned mysteries, records music, and plays games on computers he builds himself.
Customer reviews
Customer Reviews, including Product Star Ratings help customers to learn more about the product and decide whether it is the right product for them.
To calculate the overall star rating and percentage breakdown by star, we don’t use a simple average. Instead, our system considers things like how recent a review is and if the reviewer bought the item on Amazon. It also analyzed reviews to verify trustworthiness.
Learn more how customers reviews work on AmazonCustomers say
Customers find the book well-written and consider it one of the best books in the industry. Moreover, the knowledge level receives positive feedback, with customers appreciating its outstanding pedagogy and ability to conceptually understand programming concepts. Additionally, the book effectively elaborates on most programming concepts and issues.
AI-generated from the text of customer reviews
Select to learn more
Customers find the book well written and consider it one of the best books in the industry.
"...It is a fun read and if you know any OOP language you'll have no problem with the C++ examples, they are not that advanced, but do make great and..." Read more
"...All in all, well written, good use of examples, and sensible exercises to put the concepts into practice." Read more
"Great quality book." Read more
"...He says this was a really good read and a great Intro book to programming." Read more
Customers appreciate the book's pedagogy and find it conceptually understandable, with one customer noting it includes sensible exercises for practice.
"...The pedagogy is outstanding, as I'm finding with many No Starch titles, and you really remember this author's examples...." Read more
"...All in all, well written, good use of examples, and sensible exercises to put the concepts into practice." Read more
"...concepts and issues and puts them in words that allows you to conceptually understand...." Read more
"A very useful book for anyone, specially for self-taught programmers because the book teaches the real problem-solving techniques not just libraries." Read more
Customers appreciate how the book elaborates on programming concepts and issues, with one customer noting its use of C++ as an example language.
"...Programming is a work in progress. And you get better as you continuously challenge yourself and apply what you learn." Read more
"...He says this was a really good read and a great Intro book to programming." Read more
"Great book. Uses C++ and elaborates on most programming concepts and issues and puts them in words that allows you to conceptually understand...." Read more
"Like the title says, this book gives you a new way to look at programming...." Read more
Reviews with images

Easy to follow, half way through . I like it so far.
Top reviews from the United States
There was a problem filtering reviews. Please reload the page.
- Reviewed in the United States on July 23, 2013Some companies still put you in front of a whiteboard and ask you to code. BUT, given the amount of coding that's going to Russia, China and India, the hot upcoming jobs are in coding MANAGEMENT, Data Science, Embedded Systems, Sploit management and other high level design categories. Many even smaller companies are now creating a "CDSO" (Chief Data Science Officer) position which in some cases pays in the high 6 figures.
This book is outstanding for the nitty gritty not just of how but WHY we select certain Design Patterns, structures, algorithms, and, in short, solution sets. It is a fun read and if you know any OOP language you'll have no problem with the C++ examples, they are not that advanced, but do make great and unusual points about options in, for example, modifying for efficiency or to avoid "reinventing the wheel" (or as the saying goes, reinventing the flat tire!).
I interview hundreds of prospective coding managers, and I prefer to keep the questions at the 30,000 foot level of this text-- solution strategies, not just coding conventions or syntax. A lot of good people, especially overseas, can code, but very few can adeptly wind through imperative vs. functional, or modular modification vs. untouched APIs that aren't an exact fit to the problem definition.
Everything from sliding puzzles and Sudoku are used by this engaging author to highlight examples not just of solutions but the differences between solution strategy options underlying those choices. The pedagogy is outstanding, as I'm finding with many No Starch titles, and you really remember this author's examples. He doesn't just understand analogy generalization deeply, he uses it adeptly throughout the book. I've found VERY FEW books that even attempt to do this, let alone do it well.
A classic like Code Complete (CC) will give many more of the details that are illustrated in this book, but a triple threat of OOP Demystified, this book, and CC will make your interview, or consulting gigs, go much smoother. If you're considering writing a software book, this is a must read just for the pace, pedagogy and format. NOT a text from the standpoint of "solutions in the back," but great for changing your frame of reference about IT in general and problem solving specifics. Highly recommended.
EMAILER NOTE: If you agree with some other reviewers that C++ is a "bias" you might enjoy Michael L. Scott's: Programming Language Pragmatics, Third Edition-- it is 900 pages and covers problem solving (in general and with specifics) in far more detail, and includes C++, Java, Ada, C# and Fortran in imperative and F#, OpenMP, and Scheme in functional as well as Erlang in concurrent/parallel. Some reviewers took umbrage that the author considers C++ a "real" language, but to be honest, people who code for nuclear plants and jet engines DO use C and C++, and many of them think of scripting languages as kid stuff. This isn't my opinion, just wanted you to understand a lot of the thinking out there. That said, LISP folks look down on C++ folks too in some cases, and circuit designers dealing with ML and Assembler think we're ALL kids!
Library Picks reviews only for the benefit of Amazon shoppers and has nothing to do with Amazon, the authors, manufacturers or publishers of the items we review. We always buy the items we review for the sake of objectivity, and although we search for gems, are not shy about trashing an item if it's a waste of time or money for Amazon shoppers. If the reviewer identifies herself, her job or her field, it is only as a point of reference to help you gauge the background and any biases.
- Reviewed in the United States on January 21, 2021I’ve been coding for 6 years. I always struggle at solving problems, or even getting projects started. I always strive for perfection, but this book highlights that really you don’t need to be perfect or an expert. You can come up with a solution and move forward, then learn new techniques and apply it to your previous solutions or projects. Programming is a work in progress. And you get better as you continuously challenge yourself and apply what you learn.
- Reviewed in the United States on May 29, 2015My college did a decent job of training computer majors to be problem solvers. This book would have made an excellent companion text to instruction on data structures and algorithms.
The author recommends knowledge of or simultaneous study of C++. I feel it would be accessible to any programmer in the C language family. Programmers in other languages could also obtain some benefit, but understanding would be a harder climb.
Sure wish my workplace had allowed the luxury of studying a language before building production applications with it. Some of the author's recommendations in the last chapter are not always within the working programmer's control. The difference between academia and the rest of the world.
All in all, well written, good use of examples, and sensible exercises to put the concepts into practice.
- Reviewed in the United States on December 20, 2023Great quality book.
4.0 out of 5 starsGreat quality book.Easy to follow, half way through . I like it so far.
Reviewed in the United States on December 20, 2023
Images in this review
- Reviewed in the United States on January 17, 2021I can't rate this personally but I am rating based on the person whom I bought it as a gift for. He says this was a really good read and a great Intro book to programming.
- Reviewed in the United States on March 10, 2021I found it funny because this book used C++ programming language for all its examples, which I'm not really familiar with. Now that I finished this book, I'm grateful that I didn't just learn new language, but also much larger concepts
- Reviewed in the United States on June 6, 2017Great book. Uses C++ and elaborates on most programming concepts and issues and puts them in words that allows you to conceptually understand. This book had arrived badly damaged, as if it was kicked across a concrete floor and then put into the box for shipping.. contacted amazon for a replacement so all is well.
- Reviewed in the United States on January 11, 2021A very useful book for anyone, specially for self-taught programmers because the book teaches the real problem-solving techniques not just libraries.
Top reviews from other countries
- G MICHAELReviewed in the United Kingdom on June 18, 2020
5.0 out of 5 stars Great book, excellent job by the author
Wish this book was my first ever purchase on Programming, I would have saved myself a lot of money 10/10
-
Carlos DuartReviewed in Mexico on March 25, 2019
5.0 out of 5 stars Excelente libro
Este libro es muy bueno no para enseñarte a programar en un lenguaje especifico, si no que te su objetivo es enseñarte los mejores metodos para pensar en como resolver un problema, hacer el mapeo del problema, planificar la solucion y posteriormente trasladarlo al entorno de programacion.
Su enfoque te da las bases para comprender los problemas, segmentarlo y llegar a una adecuada solucion.
El precio es excelente por el contenido que ofrece.
-
Kleber Cesar Alves de SouzaReviewed in Brazil on March 10, 2025
5.0 out of 5 stars Muito esclarecedor.
Excelente livro.
-
Daniel MartínezReviewed in Spain on June 20, 2022
5.0 out of 5 stars Muy recomendable.
Magnífico libro para aprender a pensar y ordenar tu mente a la hora de enfrentar problemas de programación.
-
Persona-MReviewed in France on April 19, 2021
1.0 out of 5 stars Bof
Très déçu, sans vouloir être arrogant l'auteur ne me semble pas être une lumière il avoue n'avoir pas su
résoudre le problème de la rivière par exemple.
Ensuite il donne l'impression que la résolution de problèmes est une affaire de programmeur.
C'est faux et archi-faux, on dirait qu'il n'a jamais entendu parler de l'algorithmique
qui elle est une vraie science .
Ensuite l'organisation du livre laisse à désirer (une bonne moitié est consacrée a la programmation objet via C++ ce qui d'après mon expérience est la pire des choses à faire avec les débutants.)
Il aurait mieux valu
-Intro sur le hardware (comment le CPU "travaille")
-Cours et rappels sur l'algorithmique
-Analyser le problème
-Résolution (encore de l'algo)
-Traduire par un pseudo-code
-Traduire par un language simple (procédural voir fonctionnel) ou a la limite Python mais SURTOUT pas du C++ ou de l'objet.
-Tester
-Débugger
Je donne des cours de programmation, et c'est la meilleur méthode POINT on doit apprendre a réfléchir et résoudre un problème donné ( pas a faire les malins avec C++ Java ou je ne sais quoi).
Ce qui est assez drole c'est que l'auteur nous dit "the real challenge isn't learning a language's syntax,it's learning to creatively solve problems" alors qu'une bonne partie de son propos est "make code reuse with functions,classes,and libraries" ou "master advanced tools like dynamic memory".
Je vous laisse traduire...