This text takes an objects-first approach to programming and problem solving using Java. A flexible design allows instructors to choose between Command-Line Interface, Graphical User Interface (GUI), or file input and output.