Blogs

RedMonk

Skip to content

Academia and Programming Language Preferences

For years now, RedMonk has argued that programming language usage and overall diversity is growing rapidly. With developers increasingly empowered to select the best tool for the job rather than having to content themselves with the one they are given, the fragmentation of runtimes in use has unsurprisingly been heavy. Where enterprises used to be at least superficially built on a small number of approved programming languages, today’s enterprise is far more heterogeneous than in years past, with traditional compiled languages (C/C++) coexisting along with managed alternatives (C#/Java) as well as a host of dynamic options (JavaScript, PHP, Python, Ruby).

While this trend is easily observed in a variety of contexts, one question that hasn’t been asked to date is how the academic world is adapting to, coping with or driving this change. What role have colleges and universities played in the proliferation of alternative languages?

To answer this, our own Marcia Chappell researched the published computer science curriculums at the Forbes Top 10 Colleges and Universities. We picked Forbes as opposed to alternatives like US News and World Report because it did not differentiate between size of institution, theoretically providing us with a broader sample.

Unfortunately, the research proved in many cases fruitless. Over 519 courses with descriptions published online, we were only to collect a mere 93 mentions of particular programming languages or runtimes. Many courses do not include specifics regarding languages taught, either because it may vary by instructor or because the language is viewed as less important than the course material. As a result, it’s impossible to draw any statistically significant conclusions from the data, because sampling it properly is impractical or impossible given the nature of the online course descriptions.

Of those courses that did publish information about the technologies taught, however, here is the distribution.

With the above caveat that this chart cannot be considered actually representative of the curriculum of the institutions in question, nor could those institutions be considered representative of the wider academic community, this chart does prompt questions about the content of today’s academic computer science and related coursework.

  • The academic affinity for traditional languages such as C, C++ and Java is understandable. These have not only been staples of computer science careers for decades, they undoubtedly reflect a traditional academic approach which argues in favor of an education built on principles (see, for example, Joel Spolsky’s answer here or his piece here). The under-representation of dynamic alternatives, however, is noticeable. Python is mentioned less than half as much as C and Java, JavaScript is mentioned a bit more than half as much as Python, and Perl/PHP half as much as JavaScript. Ruby isn’t mentioned at all.
  • The relative infrequency with which R was mentioned generally – and particularly relative to MATLAB – was somewhat surprising. In my experience, more academic statisticians today seem to be advantaging R over MATLAB, which this data contradicts.
  • With the exception of Java (Android), mobile appears to be substantially under-represented within this slice of academia. C# (Xamarin) and Objective C (iOS) reflect a minimal presence. Clearly some programs are catering to increased demand for mobile skills (see the Harvard Extension School’s CompSci E-76) but these efforts appear to be, at this point, rare.

The most interesting question raised by this examination, of course, is not necessarily what role academia plays in language adoption, but rather what role it should play. Is the purpose of college coursework to provide students with the equivalent of a classical education in Greek and Latin, a deep understanding of the foundation of the discipline? Or should universities be more responsive to industry trends and demands from the job market, particularly in a context in which their graduates are facing a highly challenging hiring climate?

Ideally, students might have a choice. Those seeking long term careers as computer scientists and software engineers have the depth of coursework necessary to ground them moving forward, while those seeking the most marketable and in demand skills might pick from courses satisfying that shallower need. In practical terms, however, universities – at least those surveyed here – seem to be far more focused on the former than the latter. The question then becomes whether that approach best serves their students.

Categories: Education.

  • http://redmonk.com/dberkholz Donnie Berkholz

    I suspect part of the R vs Matlab divide is suggested by what you said — “academic statisticians” — implying that they are in the stats department rather than CS.

    I’m a little surprised that JavaScript got even that many mentions, since my impression has been that many curriculums are moving toward Python as the new language of choice.

  • Pingback: Links 6/4/2013: Alienware Gaming PC With GNU/Linux, OpenStack ‘Grizzly’, Sailfish OS SDK | Techrights

  • Peter Wang

    Generally, R is very popular in the stats department(s), and Mathematica tends to be heavily represented in the Math department, and MATLAB and Python dominate in the rest of the science/engineering departments. (Of course C and C++ are always present as well, but closer to the same level of representation of FORTRAN.)

  • TheSteve0

    I think R versus Matlab depends on the department. Disciplines have their own rights of passage with certain language. In my experience Poli Sci loves Stata, Stats loves R, Economics loves Matlab

  • TheSteve0

    when I was working Academia (granted it was 8 years ago) but academic CS not at all geared towards learning to be a day in day out programmer. It was focused more on theoretics and not practical. Have you seen that change?