In addition to presenting ways to think about solving problems, Think Like a Programmer does a good job of illustrating some confusing computer concepts, such as memory fragmentation, by finding a real-world analogy that helps the idea really "click."
The chapters of Think Like a Programmer can be grouped into three logical groups. The first two chapters are introductory in nature, setting the tone for the rest of the book. Chapters 3 through 7 look at how to solve problems using arrays, pointers and dynamic memory, classes, recursion and code re-use, respectively. The final chapter, however, is all about you; it takes the skills you've learned elsewhere in the book and, combined with your own strengths and weaknesses as a programmer, helps you create your own personal approach to solving any problem you encounter.
Personally, I had a hard time reading through this book. That may sound like a bad thing, but my issue was that I'd read part of a chapter and then get excited about programming and think of things I'd want to try out with what I'd just read. (Mind you, I program all day for a living, so for a book to repetitively have this effect on me means it's a pretty good read.) The author seems to have a knack for explaining computing topics in a way that makes sense. I highly recommend Think Like a Programmer to anyone who wants to hone their creative problem-solving skills or anyone who has learned to program, but doesn't feel that they fully understand the concepts. Think Like a Programmer: An Introduction to Creative Problem Solving is not a teacher who will teach you how to program if you don't have any prior knowledge; it's an amazing tutor who will explain what your teachers meant and show you how to better put your knowledge to use.