Daniel Lemire's blog

, 7 min read

Why academia is so conservative: academic freedom

4 thoughts on “Why academia is so conservative: academic freedom”

  1. jeremy says:

    I have always thought that it is because academia has a mandate to teach principles, rather than specific technologies.

    Programming languages come and go. Hot new compilers come and go. But the principles underlying every new language are more stable, in the long term.

    Academia’s job is not to be carried away, buffeted about, by every new little thing that comes along. Academia’s job is to give students the critical and analytical thinking skills to understand new technologies, once they come along.

    I remember in 1994, one of my college professors (Phil Windley, who helps manage the IT Conversations podcasts nowadays) taught a whole semester on programming language structures using Lisp/Scheme. At the end of that semester, I happened to talk to someone in industry about my experiences. His reaction was similar: He wondered why this college professor was wasting my time teaching such old/outmoded technology. Lisp? Who needs Lisp? Functional programming? Who needs functional programming? What I needed to be learning, this industry person said, was strictly imperative language programming only, in particular MFCs (Microsoft Foundation Classes). That way, I could actually do something useful.. program for the upcoming hot new technology: Windows 95.

    Well, as it turns out, functional programming is just as relevant as it ever was. Functional programming is the underlying inspiration behind things such as MapReduce and Hadoop.

    Had I not learned about functional programming, and instead just concentrated on the hot new “Windows 95” technologies of the day, I would not have been as prepared for the future.

    So I don’t see academics as being “conservative”. I see them more as being “principled” and “longer term thinkers”, whereas industry tends to focus on the problem of the moment.

  2. I’m all for academia teaching fundamental principles and not getting caught up in fads, but the point about people in academia thinking Java is slow shows that they do care about the details–they just have the facts wrong.

    I think the big challenge with computer science and software engineering as academic disciplines is that they are such young fields. The academic model is a great fit for older fields, like math and physics, change much more slowly–at least today.

    So I think the conservative nature of the academy is well grounded in its mission, and has nothing to do with academic freedom–if anything, it harks back to a time of much less academic freedom. What you’re describing is the impedance mismatch between the rapid pace of technology advancement and the conservative mission of the academy.

  3. Mike Stiber says:

    I don’t think there is a correlation between freedom and conservatism. We need to keep in mind that the academic work force (faculty) are at least 10 years older than the work force in industry. This is a combination of the time it takes to get a degree and the fact that faculty careers are structurally more static than careers in industry.

    Faculty also have much more varied responsibilities. Not only do they need to teach, they need to keep up with what the latest thoughts are about teaching (which we in CS are doing a fair-to-poor job). They also need to be at the “forefront of knowledge” in their area of research (only for some is this software project management or programming language performance). And they need to take on an increasingly large managerial responsibility (unless you’re well-funded in a PhD granting department, in which case you do that much more research).

    Not only that, but if you consider the most promising areas of CS education, few if any have to do with currently popular/useful programming languages, techniques, etc. Instead they’re things like Alice. This probably isn’t surprising; we’re all aware of the idea that different languages and programming environments are useful for different tasks. This has long been the justification for using languages specialized for learning CS, without regard to what is useful in industry.

    Personally, I’m starting to see the wisdom in starting out with learning-oriented languages, then exposing students at an intermediate level to a number of different language types, and finally giving students the option of some type of additional certification in industrial languages at the upper level (perhaps in conjunction with elective courses that require programming but can be language-agnostic).

    But think of how much effort it would be to push such an approach through the entire curriculum, even if everyone agreed it was a good idea. What institution would have the resources to do this? So, instead, we settle for incremental improvement at the smaller scale of individual classes or even individual programming assignments. A little progress is better than none at all.

  4. Alex says:

    Daniel,
    Are you sure that java is faster than C(++)?
    Apart from artificial tests, I always hit performance problem with java based application, whenever I am trying to use them.
    It’s a good language to learn, but I don’t think it is fair to compare java performance with C or fortran.
    When I am programming for calculations, I often need to rewrite some matlab code in C. So my C course wasn’t waisted.
    When the complexity of the problem increases, more often I need to go to low level C code.
    I would be glad to here alternative experience.
    With regards to teaching CS in university, I am grateful for some traditional courses we had, even for prolog one and programming in hex code (I think it was programming multiplexors). The useless ones where the “modern” IDE at the time of teaching. I never used borland C or Delphi since I got a degree. I can’t even remember the name of IDE which we learned last, and it was very modern at that time.
    In my experience traditional courses gave me a lot. I hated them, but they gave me a good foundation for picking up modern computer languages, so I would vote for conservative academia. I understand, that academia should provide a useful applicable knowledge, so it should be balanced somehow, where fundamental disciplines like lambda-calculus and automata will be taught together with programming in C or Java.