Running through Programming: Principles and Practice Using C++ 2nd Edition