Featuring practical, engineering-oriented examples and applications, this text teaches the fundamentals of Java with a gradual refinement of programming skills from a procedural to an object orientation. Part One presents procedural programming with an emphasis on modular program design and helps readers understand the importance of writing programs that can be easily modified and maintained. Part Two on object-oriented programming and Part Three on data structures are interchangeable for teaching flexibility. Problem solving techniques, software engineering and completed applications are emphasized throughout.