I have taught this class for perhaps twenty years now, and it has changed over the years, as it should. It is currently an intensive introduction to program development and problem solving. Its emphasis is on the process of designing, implementing, and evaluating small-scale programs. It is not supposed to be a C++ programming course, although much of the course is spent on the details of C++. C++ is an extremely large and complex programming language with many features that interact in unexpected ways. One does not need to know even half of the language to use it well.
It may feel at times that the details of C++ overshadow everything else. The key to avoiding this feeling is for the student to study C++ well, so that when she is in class, her focus can be on the more important lessons about designing and developing programs. The important goals of this course are the principles and methods that transcend the details of any specific language. I liken it to learning how to drive a car. One cannot learn to drive without sitting behind the wheel of a specific car. One needs to know how to operate that specific car in order to drive, but the real objective is learning how to control the vehicle in all circumstances and to incorporate the knowledge of the rules of the road into this experience. This entails a deeper understanding of vehicles, traffic, and the road in general. The same is true of learning to cook; one needs to cook specific dishes in a specific kitchen to learn the principles, but it is not the specific recipes or tools that matter; it is an understanding of the principles of cooking.