Stanford just abandoned Java in favor of JavaScript for its intro CS course.
Quincy Larson

JavaScript is also a great example of a language which can be used to teach the perils of getting some design issues wrong at first. For example, the fact that Javascript has no integer type makes many things very difficult to do but the problem cannot really be fixed in a reasonably backwards-compatible way. Of course CS is not software engineering but some CS concepts are going to be hard to teach with Javascript (one being the LSP) for the reason that Javascript doesn’t really use type inheritance per se.

If I were to choose languages for a CS course, I would probably look at Common Lisp, C, Java, and Python (and would probably start with Python). These each bring something different about how to look at the applied math behind the languages, the tradeoffs in language design, and the what is actually going on behind the scenes.

But for software engineering and design, the three I would pick would be JavaScript, Java, and Perl with most of the time spent on JavaScript. Why? Because you can learn a lot by looking at what happens when you try to maintain a language that was initially written in 10 days, and what happens to it over time.

Like what you read? Give Chris Travers a round of applause.

From a quick cheer to a standing ovation, clap to show how much you enjoyed this story.