C++ from the ground up