Farrell has a large amount of negative reviews on most of her books. However, I believe this edition of An Object-Oriented Approach to Programming Logic and Design is the exception. Having personally read through and used her Java book, and after talking with my professor who has used many previous editions of her Programming Logic and Design books, I've determined that the 4th edition of this book is something special.
Farrell's previous editions were quite difficult to navigate, even for someone with prior programming experience, even though they are made for and marketed towards beginners. This book breaks that horrible tradition, giving those new to programming a solid foundation before moving on to concepts that are more difficult. Although programming in general is a difficult subject to learn (and teach), this book does a tremendous job at including everything a student needs to know without becoming overwhelming.
Most of this book revolves around and uses pseudocode for its programming, which is a language-less programming "code" that serves as a blueprint when designing classes, objects, and applications. Originally, I had wondered why Farrell did not include a well-known language, such as Java or C++, to help teach programming concepts. Later, I learned that by using a universal pseudocode, I was avoiding all of the difficulties in learning the ins and outs of a certain language, and instead was able to focus entirely on the logic and design of the code. Now, I can apply the logic to any programming language, instead of being limited by any particular instance. Additionally, while the book is written with pseudocode, many examples show what the code looks like in C++, Visual Basic, and Java. They are there as add-ons, to show what the programs can look like, but they are not used to teach any of the material.
I highly recommend this book to anyone interested in programming or computer science. This book has given me a tremendous foundation to continue my education.