Describes the fundamentals of programming and software development using Java. This work introduces the basics of problem-solving techniques in chapter one and then reinforced during the explanations of Java programming and design. It also introduces software engineering design concepts via problem studies and software projects.