Think Like a Programmer: An Introduction to Creative Problem Solving

Think Like a Programmer: An Introduction to Creative Problem Solving

by V. Anton Spraul
4.0 3

Paperback

$29.75 $34.95 Save 15% Current price is $29.75, Original price is $34.95. You Save 15%.
View All Available Formats & Editions
Eligible for FREE SHIPPING
  • Use Standard Shipping ,  For guaranteed delivery by Dec. 24.
    Same Day delivery in Manhattan. 
    Details

Customer Reviews

Most Helpful Customer Reviews

See All Customer Reviews

Think Like a Programmer: An Introduction to Creative Problem Solving 4 out of 5 based on 0 ratings. 3 reviews.
Anonymous More than 1 year ago
JBHelfrich More than 1 year ago
Is it possible to “spoil” a technical book? Well, if so, here’s your spoiler warning. The most important lesson from “How To Think Like A Programmer” is simply this: “when faced with a problem you are unable to solve, you reduce the scope of the problem, by either adding or removing constraints, to produce a problem that you do know how to solve.” It’s a simple concept that should be engraved on every surface a beginning programmer sees. Learning to do that is possibly the most important part of turning technical knowledge of a programming language into the ability to solve problems with that knowledge. Every problem can be broken down into smaller pieces, and eventually you’ll get to a point where the problems are simple enough that you can solve them yourself or quickly look up a solution, and then start bolting those solutions together until you have a passable solution to the original problem. (It may not be the most efficient or bug free code, but writing code is like all other types of writing in one fundamental respect: write something, even if it sucks. You can improve it later, but having a first approximation is the most important part of a project.) The above quote comes from the first chapter of the book, which focuses on problem solving methodologies rather than actual code. This was the most useful part of the book for me, not just because it laid out several simple strategies for attacking programming problems, but because it was language agnostic. The rest of the book, unfortunately, isn’t. The programming examples in the book are all done in C++, and while they’re usually simple enough that anyone with a basic understanding of modern object oriented programming can follow the examples in the book, being able to attack the problems in that language is a completely different matter. I was often able to approximate the exercises in languages I am more familiar with, but in doing so, I didn’t always end up solving the same problems that the exercise was supposed to cover. As a programmer who works mostly with web projects, I would have liked to see more variety in the languages used; it would have only added a few pages to provide code examples in javascript or python or java, in addition to C++. Only a small portion of the book deals with issues that are specific to C++. But given Spraul’s apparent belief that “real programmers” only use C++ (he writes in the introduction that “C++ is the real deal—it’s programming without training wheels”) such a change seems unlikely. Regardless, the book is still worth a read for programmers looking to break that barrier from having learned about programming to actually being able to program something (and probably hugely useful to programmers looking to make that jump in C++), and the first chapter should be required reading for every introductory programming course. (This book was provided to me for review as part of the O’Reilly Blogger Review Program)
Anonymous More than 1 year ago
This book bills itself as an introduction to creative problem solving and it starts off on the right track. Using a few interesting logical puzzles such as the "fox, goose, and corn crossing the river" puzzle and an alien combination lock puzzle invented by the author, it explains some useful problem solving techniques such as breaking a problem into manageable pieces, looking for analogies to previously solved problems, and attacking the easiest parts of a problem first. Unfortunately the author is sometimes rather pedantic, beating a topic into the ground long after it has lost all interest. The book also spends a lot of time on programming-specific topics that aren't really creative problem solving. For example, the book spends six pages explaining what arrays are and how they work, eight pages on string manipulations, and whole sections on basic data structure topics such as linked lists. These are important topics but they really aren't creative problem solving. These topics also require a fair amount of C++-specific syntax and manipulation. For example, the sections on string manipulation don't make any sense in languages such as C#, Java, or Visual Basic that treat a string as an entity instead of as a series of bytes. You can still read the text and try to pull out the deeper concepts but they are obscured by the C++ orientation. The book might have been improved by using pseudo-code for everything and focusing only on problem solving tricks and techniques, but perhaps the author wanted to use C++ so readers could write concrete, testable programs. This might be a good second book for a beginning C++ programmer, but more experienced programmers will be familiar with most of the topics covered in this book and programmers using other languages will need to make some mental adjustments to convert the C++ examples into a more familiar form.