Programming: Principles and Practice using C++