More appropriately: "Program Design.....oh, and also some Java"

Java Programming: Program Design Including Data Structures - D.S. Malik

I bought this book for my very first CS class at a community college. Fast forward some years and I now have my BS in CS and read through this to see if it's worth saving with my reference books.


Back then, I thought it was a poor book concerning teaching Java. Now, I still hold that, but I recognize it as pretty good at teaching basic CS concepts, using Java as a real-language example. There are obviously spots where it's Java-heavy, which I find to be the most useful (e.g. JWT GUI chapter). But it also goes over the really important CS stuff like data structures (stacks, queues, etc),algorithms (mostly sorting), and even algorithmic complexity (Big-O notation).


One of my biggest gripes about this books and books like it is including source code in printed material. For me, personally, I just can't parse code on a page, especially when it's spread out over several pages. It also results in a very fragmented book with small portions of text spliced between huge chunks of code.


Other than that, the scope of this book is weird. It starts out in a tone obviously to people who have never had any programming experience and ends discussing trees, graphs, and shortest-path algorithms. And while the rest of this book could be interested for the curious outsider, the end is definitely geared towards students with the expectation that the material will be covered more by a professor's lectures.



Overall, I'd say this book is adequate. It doesn't explain things extremely well & it's filled with dump pages of code, but the topics contained are pretty good for CS basics. Don't read this book to understand Java; read it to understand CS. And if you already understand CS, it might be pretty nice for skimming for a refresher or clarification.



So the answer to the question "Would I give this book to someone newly interested in CS?", my answer has to be: "......maybe?"