I don't consider C++ and C much different in their ability to expose the type of fundamental knowledge required to make a good degree in CS. In a tutoring environment, the STL can be completely ignored and the only thing distinguishing both languages will be their semantics. I would place both C++ and C and equally valuable tools for learning programming. Except...
C may have an edge over C++ because it more quickly and easily exposes the architectural weakness of our computers. Weaknesses that we must learn to live with. Dangerous stuff like the fragment above, open up many opportunities for a deeper understanding of how our computer languages work (*). But C++ isn't far behind.Code:char *str = "A string.";
In addition, what makes me think that I would prefer a CS course based on C is the simplicity of the language, that allows for a larger part of the learning to be focused on the scientific aspect of programming which is the core of a CS course, rather than the engineering aspect which is represented by programming languages and their specifications. C is just easier to learn and understand. The language quickly gets off the way. It is however, like C++, an hard language to master. But that concerns only the task of coding functional and well-formed programs. Which is, generally speaking, not of interest to a CS course.
---
(*) to clarify, code like the above better represent the price we pay for abstraction. It's not really teaching us about how our computers work, but why higher level computer languages come with a cost. That cost is however not a failure of the computer language, but a result of weaknesses in computer architecture that force the hand of the creators of computer languages.