This is the first time I have ever considered returning a book to Amazon. I purchased this book based on the great reviews and a brief glance through the online preview pages. However, once I received the book I realized that it is not at all what I am looking for.
If you are new to programming, this book may be great. If you already know how to program but want to learn about the Arduino, this is NOT the book for you.
For example, chapters 1-3 discuss basic such as for loops (section 2.14) and the sqrt() function (section 3.8). This book works hard to avoid "advanced" subjects such as pointers and printf. Even in "Chapter 17: Advanced Coding and Memory Handling", there is barely any mention of heap and stack (SRAM) versus static (flash) memory. Sure, Ch.17 mentions the keyword PROGMEM but for any further details, the reader is referred to [...]. I don't need a general discussion of memory management, I bought this book hoping for information on the specific features and quirks of Arduino.
Want to learn about Arduino sleep modes? "18.10: Reducing Battery Drain" might seem like a good recipe. Don't bother though, all it does is reprint the most basic example of using the freely available Narcoleptic library from code.google.com. There is no mention of various Arduino sleep levels, how they may affect your code and what they do to the internal timers.
Let's pick a more basic example, how about a real-time clock? There is absolutely no discussion of the hardware side of a real-time clock. On the software side, there are a couple simple examples on using the standard C time library. It's a bit misleading to see "#include <Time.h>" in recipe 12.4 (note the <> brackets). Yes, <time.h> is a standard C library. No, it is not a standard part of the Arduino C library. So the book's example code won't even compile and there is no explanation as to why. The only mention of Time.h being a separate download is a vague mention in the "See Also" section which refers to the [...] website. An experienced programmer should be able to figure this out but anybody that needs three chapters on basic programming may need a bit more of an explanation.
In my opinion, that is where this book repeatedly fails. It acts like each recipe is a self contained problem/solution set. In reality, the majority of print is wasted on repeating the basics in every recipe and all the good information is left to the "See Also" references. What use is this book if I have to look everything up myself anyways?
If you are new to programming and need help with concepts like pointers or i++ instead of i = i + 1; then find a real C programming tutorial (K&R is my recommendation). If you are looking for specific information on how the Arduino actually works, save yourself a few bucks and visit [...] because that's all that this book will tell you to do anyways.