I've read several of Dr. Purdum's books in the past and have always found them informative and enjoyable to read. Beginning C# 3.0, An introduction to Object Oriented Programming (Wrox) is one of his best book yet. As he asks in the introduction, there are dozens of C# texts out there, so why should you pick this one? His answer is that, while most of the other texts were written by extremely capable programmers, few of the authors have never stood in front of several hundred students looking for examples that teach the material yet are easy to understand and remember. Several of the key strengths of this book are the examples and the way Dr. Purdum anticipates the reader's questions.
For example, in covering the OOP concept of encapsulation in Chapter 2, he discusses why programmers hide the data properties of an object inside the object. He states: "You hide them for the same reason that kings used to hide their daughters in the castle tower...to keep other people from messing around with them." Later on, when discussing the difference between public and private access specifiers, he points out that using the public access specifier is like locking the princess in the castle tower and then passing out her room key to all the knights of the realm. I don't know about you, but this is easier for me to remember this than some dry explanation that one often reads on encapsulation.
Another strength is the way he anticipates rough spots for the student. One of the most difficult concepts for beginning programmers is the difference between value types and reference types. Dr. Purdum uses a simple explanation of what a symbol table is to discuss l-values and r-values. He then introduces a concept he developed called Bucket Analogy which uses the symbol table concepts to explain the difference between the two classes of data. Even experienced programmers will appreciate this example and how it truly makes the differences clear. He uses a job interview to explain what objects are as well as cookie cutters to explain instantiation. The book does reflect his 25 years of teaching experience.
The material covered is what you'd expect for an introductory text. He also covers relatively new topics like Generics and LINQ. The database chapter even has a fairly complete DBMS. However, the entire theme is to teach OOP and good coding techniques. For example, he'll write a code example that works but then calls it an example of RDC (Really Dumb Code). He then rewrites the code and explains why it is a better solution, especially when writing for a commercial environment. His objective is to teach you good OOP techniques using C# as the vehicle to learn those techniques. His experience owning a software company for 17 years shows through while doing this.
If you want to get a solid introduction to OOP and C#, choosing this book is one of the best choices you can make.