This book tries to teach both programming and Arduino usage - failing miserably at both. There is inaccurate and conflicting information (what value range does analogRead() return? Depends where you are in the book). In the second volume it presents a lot of information about programming, but with few Arduino specific examples. Speaking as a 30-year programmer, the information is both too complex and confusing (for a beginning programmer) and glosses over too many points that should be made. The sections on pointers and structures is particularly bad, with no real relevance to Arduino, and misses a very important point about pointers, namely that they save memory by keeping large values (such as structures) off the function stack.