Enjoy fast, FREE delivery, exclusive deals and award-winning movies & TV shows with Prime
Try Prime
and start saving today with Fast, FREE Delivery
Amazon Prime includes:
Fast, FREE Delivery is available to Prime members. To join, select "Try Amazon Prime and start saving today with Fast, FREE Delivery" below the Add to Cart button.
Amazon Prime members enjoy:- Cardmembers earn 5% Back at Amazon.com with a Prime Credit Card.
- Unlimited Free Two-Day Delivery
- Instant streaming of thousands of movies and TV episodes with 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
- Unlimited photo storage with anywhere access
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:
$19.89$19.89
FREE delivery: Thursday, Sep 7 on orders over $25.00 shipped by Amazon.
Payment
Secure transaction
Ships from
Amazon.com
Sold by
Amazon.com
Returns
Eligible for Return, Refund or Replacement within 30 days of receipt
Buy used: $12.25
Other Sellers on Amazon
+ $3.99 shipping
95% positive over last 12 months
+ $5.50 shipping
100% positive over last 12 months
+ $3.99 shipping
90% positive over last 12 months
Usually ships within 4 to 5 days.
Download the free Kindle app and start reading Kindle books instantly on your smartphone, tablet, or computer - no Kindle device required. Learn more
Read instantly on your browser with Kindle for Web.
Using your mobile phone camera - scan the code below and download the Kindle app.
Think Like a Programmer: An Introduction to Creative Problem Solving 1st 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
- Edition1st
- PublisherNo Starch Press
- Publication dateAugust 12, 2012
- LanguageEnglish
- Dimensions7 x 0.8 x 9.25 inches
- Print length256 pages
Frequently bought together

More items to explore
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.”
About the Author
Product details
- Publisher : No Starch Press; 1st edition (August 12, 2012)
- Language : English
- Paperback : 256 pages
- ISBN-10 : 1593274246
- ISBN-13 : 978-1593274245
- Item Weight : 1.25 pounds
- Dimensions : 7 x 0.8 x 9.25 inches
- Best Sellers Rank: #42,937 in Books (See Top 100 in Books)
- Customer Reviews:
Important information
To report an issue with this product, click here.
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 AmazonRead reviews that mention
-
Top reviews
Top reviews from the United States
There was a problem filtering reviews right now. Please try again later.
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.
I took off a star because the moment I opened the book (paperback) the binding completely fell off. I fixed it, of course. :)
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.
Top reviews from other countries
A tratti è stato addirittura noioso, al punto da saltare alcuni capitoli. Gli argomenti trattati sembrano quasi diretti alle new entry nel mondo della programmazione. Non sto dicendo che questo libro sia per assoluti principianti ma credo che un senior con 10+ anni di esperienza imparerà ben poco da questo testo.
Il libro usa C++ per fare esempi di codice sugli argomenti presi in esame, ma la sua conoscenza non è essenziale al 100%. Una conoscenza di un altro linguaggio C-like sarà abbastanza per poter comprendere questo libro. In aggiunta, vorrei invitare i lettori che non conoscono C++ a non usare questo testo come materiale d'apprendimento per il linguaggio in sé, in quanto il libro è abbastanza vecchio e usa C++98. Gran parte del codice all'interno del libro andrebbe scritto in modo diverso secondo le pratiche del "modern C++".
In conclusione, è un ottimo libro per chi non è "troppo esperto" nella programmazione. Darà ottimi spunti a chi invece non ha molta esperienza e fatica un po' nel problem solving. Da non prendere assolutamente in considerazione se si cerca del materiale su C++ moderno, ma non è quello lo scopo del testo.
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...
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.
The examples are explained enough to follow. The exercises are small variants of the examples.








