A fundamentals-first introduction to basic programming concepts andtechniques
Introduction to Java Programming and Data Structuresseamlessly integrates programming, data structures,and algorithms into one text. With a fundamentals-first approach, the textbuilds a strong foundation of basic programming concepts and techniques beforeteaching students object-oriented programming and advanced Java programming.Liang explains programming in a problem-driven way that focuses on problemsolving rather than syntax, illustrating basic concepts by example andproviding a large number of exercises with various levels of difficulty forstudents to practice. The 12th Edition is completely revised in everydetail to enhance clarity, presentation, content, examples, and exercises.
I love how the book explains the concepts and includes step-by-step tasks to practice programming in Java. It's a pretty comprehensive book, though I would recommend the beginners to start with Headfirst Java and delve into this book afterwards.
I usually ration the number of 5s I give, but this one is particularly deserving. There is a crazy amount of online support for this book, so I think someone with an online package, especially with Revel, can master the basics of the Java language. The explanations are straightforward. It requires focus and concentration, but it's pretty comprehensive. I like CS books written by English-Second language authors because they remove language complexity from the already complex concepts of CS. I used this last year, and I still remember how good it was compared to books I used afterwards. There's a lot of practical implementation here. Yeah, one-stop shop for introductory computer science using Java - learning Java also helps with other languages, like C and Kotlin (a Java derivative); verbose, but it's a great pedagogical language for training purposes.
One piece of advice in a CS program, if you don't use a language for a while, you'll forget it (just like real languages). So, don't take breaks in a CS program or in sequential classes requiring the same languages.