This is an introductory textbook for anyone wanting to learn how to program using Java. It strikes a balance between details about the programming language features and techniques required to solve problems on the computer. Assuming no special knowledge of computing, the pace and presentation is suitable for students taking their first course in programming. To help gain confidence and competence as well as make programming engaging and accessible, the book has:- Thorough coverage of essential topics such as control structures followed by object-based programming- Complete program examples that can be downloaded for experimenting- "Best Practice" tips to promote good programming habits - Problems that illustrate programming concepts- UML (Unified Modelling Language) to graphically illustrate program design- Testing program behaviour using assertionsThe book provides a thorough introduction to object-oriented programming (OOP) and lays the foundation for covering more advanced OOP topics. The book uses the strength of Java features (including the most recent extensions) to implement programming techniques, among them: formatting of output, reading from the keyboard using the Scanner class, enumerated types for named constants, automatic boxing and un-boxing of primitive values, and the foreach loop. Each chapter of the book contains chapter objectives, numerous examples, illustrations, review questions (with annotated answers) and programming exercises. The book is not dependent on any specific platform or programming tool. The web site offers lecture notes, programming examples, exercises, and more.