I agree. An introductory CS class should teach how to program (in general) instead of teaching the ins and outs of one specific language. A language is needed to teach how to program, but teaching the language should be a secondary concern.
Since one of the core concepts of computer science is object oriented programming, this should be a part of the very first CS class. In my opinion, of course. Teaching OO techniques with a non-OO language such as C is beyond the scope of a introductory class.
A good introductory language is one that
- Is easy to use and easy learn.
- Offers a number of different programming paradigms.
- Contains a number of computer science data types, built in.
- Provides well-established defensive programming mechanisms, many dating back to the early 1960s.
- Doesn't carry a lot of arcane baggage.
C fails massively on items 2 and 3. C++ fails somewhat on item 1. Python fails massively on item 4. All have significant shortcomings with item #5. It's not so much a matter of which is better but which is worse.