Before I begin my review on this book, I'll tell you a couple things about myself so you can get a better understanding of where I am coming from in terms of reviewing this book. I am currently a junior pursuing a BS in Computer Science. Before reading this book, I had about a year of Java experience, and a year and a half of C++ programming experience before that. So I had a fair bit of programming experience before encountering this book. The only DS&A (Data structures and algorithms) experience I had was some basic array algorithms and linked list experience.Ok, simply put, this book is AMAZING at teaching you DS&A for the first time. If that is what you need, this book truly delivers. Lafore walks you step by step through all the data structures you will commonly encounter in your programming lifetime. He uses many useful analogies to help you understand what is going on. Numerous diagrams and images help illustrate these concepts, and he has a number of java applets to further augment the learning process (though I found these largely unnecessary due to his excellent explanations). I have read a couple other books like this and his is simply the best I have found for introducing you to DS&A. If you start reading from page 1 onward, you will never be lost.In terms of what you need to make the most of this book...If you are just beginning programming, this book is going to be somewhat confusing to you. While you will understand these concepts from a theoretical level (thanks to his top notch explanations) your understanding of the implementation will be shaky. Lafore's code is clean, but presupposes a general familiarity, not only with Java but also the Object Oriented paradigm and the programming way of thinking in general. If you are coming from a C++ background, the book elaborates on the differences between Java and C++ and does a good job of bringing you up to speed, although you will probably need a Java reference at certain points.This book is a great way to learn DS&A with the intent of applying them to real world problems. There are several things it doesn't do which prospective buyers should be aware of. For starters, this book would make a very poor reference for those who already know DS&A. The format is focused on teaching you, not having information about running times and what not readily available. The explanations are by no means concise, and hold your hand way too much for someone who already knows this stuff to make use of. As I said earlier, this book makes use of OO, but in the interest of teaching you what these structures and algorithms do, Lafore makes use of only the most basic properties of OO. You will be taught using strings and primitive data types, implementations that can handle generic objects etc. are never presented (though the author makes clear that this is certainly possible).The book has very little theoretical material and almost nothing in the way of mathematical content. Though every once in a while, Lafore discusses some of the underlying mathematical principles he never makes them the focal point. There are no theorems, proofs etc. he simply presents everything from a practical standpoint. This makes the text very approachable but not "rigorous".As other reviewers have noted, this book skips some of the more advanced structures and covers algorithms less than other books, but overall it achieves its goal of teaching those unfamiliar with DS&A. You will be able to implement the various data structures and algorithms found within the book much better than most and with a greater degree of confidence and understanding. If you want to learn DS&A, this is the book to buy.