This 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 'for each' loop. 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.