C++ is a very rich language, so there is no way to thoroughly cover all its features in an introductory text. There are two obvious ways to deal with this fact: an author can give very shallow coverage to almost all of the syntax, or he can give deeper coverage to a smaller subset of the language (and I'm ignoring the large number of books that really don't teach programming at all, but just have you connect the dots on a visual interface). For some reason, almost all authors take the first path. After finishing their books, the reader knows three ways to write a loop, five ways to write a branch, and very little about classes or object-oriented programming. In fact, most readers don't finish, because it's too boring to read endless chapters of syntax, without learning to write useful programs. Almost uniquely, Steve Heller takes the second approach. He gives you one way to write a loop, one way to do a branch, and then starts in on classes. I doubt you'll find many other C++ books that have the reader learning sophisticated virtual class techniques before encountering "while" loops. This could be risky, but Steve pulls it off, for two reasons. One is that he is a very good writer, and an expert in the subject. The other is that whenever a tricky concept is discussed, the questions you are likely to have are asked for you --- the narrative of the book contains a concurrent correspondence with an intelligent beginner, who got drafts of the chapters as they were being written, and asked for alternative explanations whenever something wasn't clear to her. The time Steve saves by not discussing redundant language features is used to go into more depth about what it really means to program. A sample project is built from the ground up, with successive chapters adding features and refinement to the basic concept. By the time you finish the book, you'll have an idea of how much work it takes to write a real application, and also the sense of accomplishment you get from doing it. This book isn't for everyone. If you just want to dabble in programming, and let the visual compiler wizards do most of the work, you won't like it. If you aren't willing to put some work and study into it, you won't get as much out of it as you could. But if you want an excellent introduction to programming, and an excellent foundation for intermediate books, you could hardly do better than to read this book.