More importantly, an understanding of ideals and reasons allows you to generalize from what you know to new situations and to combine ideas and tools in novel ways to address new problems. Knowing “why” is an essential part of acquiring programming skills.
Cpp
my conspect of the Stroustrup C++ book. + additional C++ topics.