Furthermore, it has very mature support for everything from GUIs (Swing) to web development (Servlet) to high-powered concurrency to advanced data structures. There are literally thousands of libraries and frameworks for every need and a wealth of talent and knowledge out there. Its performance is also orders of magnitude better than interpreted languages like PHP, Python or Ruby. It simply scales better in just about every way and is universally supported almost everywhere.
So, to summarize, for all the reasons listed above Java is the bread and butter of enterprise software. Personally, I prefer Python and C#, but Java is unavoidable if you want a good paying job or are serious about building a high-performance, platform-independent, scalable application.
How are you going to reinforce the notion of how a compiler works with an interpreted language? How would you teach and force the use of static types on a dynamically typed language? How would you teach true concurrency and thread safety with a language that is limited by a global interpreter lock (GIL)? These are introductory things a CS student would take in their first year.
The usual justification is "we're not a vocational college" which I think is kind of bullshit.
MIT switched away, though to python iirc which isn't terrible. Northeastern still uses Scheme first though.
- typed languages that are too low level to start (C/C++)
- scripting languages that are high level, not typed, and therefore do a lot of things under the hood (Python, Ruby, Javascript)
^ an exam which offers college credit at most universities to high school students