I came across this article on The Register this morning whilst perusing the tech press over a coffee.

The crux of it is that Stanford University has moved from Java to Javascript for it’s introductory computer science course. This pretty interesting.

CompSci courses tending to be years in the making and behind the curve on what is trending in software. Does this mean that Javascript is now fully established and not just a web darling anymore?

I’m not totally convinced that moving to Javascript is a good idea. Javascript is a pretty unique language in many respects. Instead of the “normal” “classical” object class inheritance it uses a prototype inheritance chain. Most variables are objects and it’s dynamically typed. If teaching CompSci, it probably most beneficial to stick with a more “traditional” language that has all these “strict” constructs in. I find it best to learn in a more traditional environment and then move away from this, rather than learning in a loose-and-fast environment and then trying to move back to a more formal environment.

However on balance, javascript is very popular and has matured significantly that people are now writing much higher quality code than they once were. If they use node.js and encourage their students to write complicated embedded/networking apps that target environments other that http(s) and the web it could be a good decision. Javascript runs everywhere and has a huge commercial application. More and more I see it being accepted in traditionally strict and slow moving environments.

I never actually studied CompSci but my path went as this: Procedural PHP -> Object oriented PHP -> Simple Javascript -> Complex Javascript (with dabbling in Ruby, Python and Java). Although PHP 5.2, from a CompSci point of view, wasn’t a very developed language it gave me a good basis in classical inheritance, which allowed me to “move on” and construct more complex applications. I think skipping this step out would have really held me back. Although I no longer use classical inheritance in my Javascript projects a solid understanding of it has hugely benefitted my overall experience and allows me to architect more complex applications.