I like Java, C++, C#, and Python, and think they all work great as introductory languages. C++ gets shit on a bit because there's a lot of bad memories from the 80s and 90s when you had to do a lot of things by hand, but modern C++ is a joy to code in. In fact, if it was up to me I'd say that colleges should teach C++ as their intro language for three reasons:
1) It's as powerful and expressive as Java and Python (with some notable exceptions like split() which you need to invoke Boost for). Smart pointers (instead of raw pointers), vectors (instead of C style arrays) and range-based for loops (to never have out of bounds errors) allows for very fast and safe programming.
2) It is a lot easier to go from C++ to Java/Python than vice versa. Java programmers tend to have a vague grasp on how memory actually works.
3) C is only one step away from assembly. C++ is two steps away (due to name mangling). Java and Python are three or more steps away. Assembly programming, while rare enough these days, is still the gateway to really understanding computer architecture and writing code that works with your architecture instead of against it. Success in assembly should be the goal for a lower-division computer science program.
I also agree with you that most languages take their cues from C++/Java in that they either follow the conventions or deliberately break them. So learning C++ or Java is a really good choice for new programmers for that reason as well.