
Programming with Java - Second Edition
Ashik Ahmed Bhuiyan, West Chester University of Pennsylvania
Md Amiruzzaman, West Chester University
Copyright Year:
Publisher: The Pennsylvania Alliance for Design of Open Textbooks (PA-ADOPT)
Language: English
Formats Available
Conditions of Use
Attribution-NonCommercial
CC BY-NC
Reviews
Reviewed by Mingming Du, Lecturer, The University of Texas Rio Grande Valley on 1/1/26
Programming with Java (Second Edition) by Ashik Ahmed Bhuiyan and Md Amiruzzaman is a well-structured, beginner-friendly Java textbook that works especially well for students with little or no programming background. The content progresses in a... read more
Reviewed by Mingming Du, Lecturer, The University of Texas Rio Grande Valley on 1/1/26
Comprehensiveness
Programming with Java (Second Edition) by Ashik Ahmed Bhuiyan and Md Amiruzzaman is a well-structured, beginner-friendly Java textbook that works especially well for students with little or no programming background. The content progresses in a logical sequence—from core syntax and data types to control structures and foundational object-oriented programming—so learners can build confidence step by step rather than feeling overwhelmed.
As a lecturer, I particularly appreciate the clarity and teaching-oriented organization. Explanations are detailed without being unnecessarily complicated, and the frequent, practical examples help students connect concepts to actual code. A standout strength is that the book always shows program output alongside code, which is very helpful for beginners(Many programming textbooks did not doing so): it helps student to check their understanding, help debugging when run the example codes.
That said, the book’s treatment of classes and objects—especially the early OOP material (e.g., the “Introduction to Classes and Objects” chapter 6)—can feel a bit too light for today’s learners. In the AI era, students can get help quickly with syntax and coding errors; what they also need from a textbook is deeper conceptual training and more substantial practice with object-oriented thinking. I would love to see expanded coverage and richer examples emphasizing the pillars of OOP—inheritance, polymorphism, interfaces/abstraction, and composition—along with more design-focused exercises. More medium-sized, realistic projects (beyond small snippets) would make the OOP learning curve smoother and the skills more transferable.
Overall, this is a strong, accessible Java introduction that I would gladly recommend for entry-level programming courses—especially because it is openly available and easy for students to access. With a deeper and more example-rich OOP section, it could become even more effective as a modern “first Java” textbook.
Content Accuracy
The concepts are presented correctly and consistently, and the code examples are written in a clear, beginner-friendly way—simple, focused, and free of unnecessary complexity. Overall, I did not notice any technical mistakes or misleading explanations in the sections I reviewed.
Relevance/Longevity
The content is current and aligned with what students need in an introductory Java course, but it is not “trend-chasing” in a way that would make the textbook outdated quickly. The authors focus on durable fundamentals—syntax, data types, control flow, basic OOP ideas, and essential programming practices—so the material remains solid and useful over time for beginning programmers.
One important point: while Java has introduced a number of features after Java 16, many of these are largely “syntax sugar” or convenience-oriented enhancements. For a beginner textbook, it may actually be better not to emphasize such newer features too early, because they can distract from foundational thinking and potentially confuse students who are still learning core concepts. Keeping the focus on stable, widely used fundamentals is the right choice.
Clarity
The text is written in lucid, accessible prose and provides appropriate context whenever jargon or technical terminology is introduced. The explanations are straightforward and easy to follow
From an instructor’s perspective, the examples also stand out as carefully chosen. Each example is focused on a specific learning goal, without unnecessary extra complexity, and helps students quickly “get the point” of the concept being taught.
Consistency
The textbook is internally consistent in its terminology, instructional style, and overall framework. Concepts are introduced in a steady, coherent progression, and the authors use terms in a stable, predictable way.
Modularity
The textbook is highly modular and easy to divide into smaller, manageable reading sections that can be assigned at different points throughout a course. Chapters are organized around clear topics, and the progression from basic to more advanced material allows instructors to align readings with weekly learning objectives, labs, and programming assignments.
Organization/Structure/Flow
The topics are presented in a logical and clear sequence. The chapters build progressively from fundamentals (syntax, variables, and control structures) toward more advanced programming skills, which supports a smooth learning curve for beginners.
Interface
I did not encounter any significant interface or display issues. Navigation is smooth, and the content is presented cleanly without distracting formatting problems.
Grammatical Errors
I did not notice grammatical issues in the sections I reviewed. The writing is polished and professional, which helps maintain clarity and reduces unnecessary cognitive load for beginner students.
Cultural Relevance
I did not observe anything culturally insensitive or offensive. The tone is professional and neutral, and the examples appear appropriate for a diverse student audience. Overall, the book is suitable for classroom use with students from a variety of races, ethnicities, and backgrounds.
CommentsOverall, this is a very strong beginner-level Java textbook. It is well written, well paced, and highly teachable—especially for students who are learning programming for the first time.
My main recommendation for improvement is still the same: expand the object-oriented programming portion after the “Classes and Objects” chapter. Adding more depth and more real-world OOP examples—especially inheritance etc—would better reflect how Java is used in practice and would prepare students more effectively for intermediate programming courses and larger projects.
Table of Contents
- Introduction
- Control Statements and Loops
- String
- Methods in Java
- Arrays
- Introduction to Classes and Objects
- File Handling
- References
About the Book
Programming with Java is a beginner-friendly eTextbook that introduces readers to the fundamentals of Java, one of the most widely used programming languages. It covers key concepts like syntax, data types, control structures, and object-oriented programming, offering clear explanations and practical examples. The chapters build progressively, making the material accessible even to those with little or no programming background. The book also explores important topics such as exception handling, file I/O, and basic data structures, providing a strong foundation for further computer science studies. With interactive exercises and end-of-chapter projects, readers can apply their knowledge through real-world applications. This eTextbook equips students with the skills they need to confidently take on advanced programming challenges and pursue successful careers in software development.
About the Contributors
Authors
Ashik Ahmed Bhuiyan, Ph.D. is an assistant professor in the Department of Computer Science at West Chester University of Pennsylvania (WCUPA). He teaches various undergraduate and graduate courses, including data structures, algorithms, introduction to programming, fundamentals of computer science, and research seminars. He earned his Ph.D. in electrical and computer engineering from the University of Central Florida (UCF), where he was a member of the Real-Time & Intelligent Systems Lab, working under the supervision of Zhishan Guo and Abusayeed Saifullah (Wayne State University). Ashik Ahmed Bhuiyan He completed his bachelor’s degree in computer science and engineering from Bangladesh University of Engineering and Technology (BUET) in 2013. His research focuses on energy efficiency in real-time embedded systems, parallel computing, and mixed-criticality scheduling. His work received the Best Student Paper Award at the 40th IEEE Real-Time Systems Symposium (RTSS 2019). Outside of academia, he enjoys watching movies, reading books, and spending time with his wife and 7-month-old baby
Md Amiruzzaman, Ph.D., is an Assistant Professor in the Department of Computer Science at West Chester University. Before joining WCU, he worked as a software developer for almost 10 years for several companies. He has also held the position of Assistant Professor at Kent State University. He has completed a Bachelor's Degree in Computer Science from National University. Along with that, he has completed four Master's degrees with major in Computer Engineering in 2008 from Sejong University, Computer Science in 2011 from Kent State University (also, partly at Korea University), and Technology in 2015, also from Kent State University, and a Master's in Cybersecurity in 2023 from Georgia Institute of Technology. He received his Ph.D. degrees from Kent State University in 2016 (Mathematics Edu), 2019 (Evaluation and Measurement) and 2021 (Computer Science). In the past, he has worked as a Research Assistant at Sejong University and Korea University. He has also taught at National University and Korea University. His research interests include Visual Analytics of urban data, Data Mining, Machine Learning, Deep Learning, and Data Hiding.