However, C is not suitable for all purposes and it would be nice if people bashed it a little bit more. For example, it is a very common as an introductory CS101 first programming language here in Brazil even though it is full of traps for begginers and has some severe limits in expressive power (most notably, manual memory allocation really gets in the way)
My son's CS101 class at Penn State was based on C++ and supposedly taught OOD/OOP. But the instructor only focused on syntax and there were vast portions of the whole class system missing from the course.
I think it's probably a mistake to teach OOD/OOP in an introductory course and would rather see types, assignment, flow-control, etc. covered in a thorough manner. As it was, he ended up with big gaps in his general knowledge.
If I was teaching a programming class, I'd probably pick Coffeescript or Python as the implementation language (Nothing against Ruby ... I'm just not expert enough to be teaching it).
My rationale is that I can easily start just by letting the students type into REPL while they're learning basic concepts like assignment and operators. Classes are there when you need them but can be ignored until the students are comfortable with both the language syntax and the basic concepts behind programming.
I hate classes where the instructor says "just do this without asking why for now" ... and I learn best when I can experiment freely and iterate quickly.
I think another problem with teaching java in university is that pretty much everything is defined in detail. I have seen students that were taught java write ocaml code that expected a particular order of evaluation of expressions (which is undefined (implementation defined) btw).