Providing a complete explanation of problem solving and algorithms using C++, the author's theoretical perspective emphasizes software engineering and object-oriented programming, and encourages readers to think abstractly. Numerous code examples and case studies are used to support the algorithms presented.