Problem Solving, Abstraction, and Design using C++ - Frank L. Friedman, Elliot B. Koffman (Addison-Wesley, 2011)