This is the only C++ textbook on the market that provides complete coverage of CS1 and CS2 in one volume. This book focuses on traditional CS1 and CS2 topics, while developing object-oriented programs. The software life cycle is emphasized throughout, with numerous case studies of varying size and complexity. The first third of the book covers program design with calculation, functions, control structures, and the use of objects. Beginning in Chapter 8, the next third of the book covers user-defined classes, inheritance, polymorphism, arrays, complexity analysis, and the development of abstract data types (called ADTs). The last third of the book covers several standard ADTs - table, list, stack, queue, tree, and graph - including discussions of different implementations, applications, and the complexity of each ADT. Additional topics include recursion and advance sorting and searching techniques.