Aracılığıyla paylaş


Computer Science Courses in 2015

As you might be aware from my previous blogs I am very keen on providing high quality architectural training and qualifications as part of generating a true architectural profession. To this end I had a meeting with the head of computer science at a British university the other day to discuss architectural courses and examinations. During the discussions the important topic of what language the university should be teaching came up and the head of the department pointed out some interesting facts to me.

Firstly UK universities will be allowed to charge a “top up” fee of £3000 (about $6000 with the way the exchange rate is at the moment J) per student per year starting in 2006. This means that universities now have to be much more interested in marketing themselves to future students. At the same time most university courses have been around for 5 or 6 years and so are beginning to look a bit long in the tooth. Because of this university computer science departments are looking to refresh their courses so that in 2006 they will have a new and up to date offering.

So universities will generate the new courses over the next 2 years ready for the 2006 intake of students who will then graduate 4 years later in 2010. This course will have a 5 year life span, until say 2015, which is a very long way away in computing terms.

The question the head had for me was what language should the university be teaching in the new course which would still be valid and relevant in 2015.

I have to say I struggled with this. I don’t like to think that people will still think that Java or even C# is still cool and leading edge in 2015. I realise that Cobol and Fortran are still around 40 years after they were new but one could hardly call them hip and happening languages which are be attractive to students.

I sort of think that AOP or DSL’s would be the kind of thing that students would find interesting and useful in 2015 but they are a bit too new to write a course in them at the moment. I also think that perhaps we should be teaching a more meta level language; or indeed just accept that C# will look very dated by then and that it’s the concepts but not the language that is important.

Anyway the conclusion I came to is that I don’t know. Does anyone have any ideas what will be cool in 2015? How should computer science be taught in 10 years time, will we even be teaching CS then?

Comments

  • Anonymous
    June 02, 2004
    Interesting things to think about. I am not sure what other people think about this but my department will have finished the transistion to Java in 2006. So in 2010 I expect it to be in Java at my school.
  • Anonymous
    June 02, 2004
    Do you mean that they will have just finished the transition to Java in 2006 or that they have decided to base courses in 2006 on java, in which case of course it would be Java in 2010
  • Anonymous
    June 02, 2004
    So the universities are going to continue to be 5-10 years behind the current trend of computing?

    Obviously Computer Science is Computer Science at its core, but I do believe C# and/or Java will be as good representative of computing tomorrow as Pascal and C were used during my tenure at school [finished w/CS in 1998]

    The point is that since computing is such a fast paced industry, the professors themselves should be expected to at least maintain a sense of whats relevant... meaning that if C# is still revelant in 2015, [of which I'd wager a large sum of money] then by all means, utilize it.
  • Anonymous
    June 02, 2004
    If the compsci prof believes he should be teaching languages, he's misguided - he should be teaching concepts:

    1) Assembler. I did a course in assembler at University and believe it's vital.
    2) An OO language - C# is probably better than Java because it's a superset
    3) A functional language - again, C# v2 has some benefit here, although perhaps something like Python would be a better choice.
    4) SQL & XQuery

    With these language skills and a good grounding in computer architecture and microprocessor architecture a student will be well placed for the wider world.
  • Anonymous
    June 02, 2004
    The comment has been removed
  • Anonymous
    June 02, 2004
    I agree that uinversities should ask themselves what future programs should be and of course my answer is to have more and more architectural content. I belive that the tools will be so powerful that language becomes irrelevant and then only architecture will remain.
  • Anonymous
    June 02, 2004
    You need to learn paradigms at University, not Languages.
    If you want to learn C# or Java... you need to know the framework, and how the memory manager works (GC).

  • Anonymous
    June 03, 2004
    It's easy to predict 15 years forward - just take now, and add the difference between now and 15 years ago.

    With regards to computer science courses, I see little difference between 15 years ago and now. So I expect little difference - at least for the worthwhile courses that teach theory rather than practice.

    Maybe the architectures will be more complex - but you will still need to understand how logic gates, CPUs, assembly code, o-o architecture, theorem proving work.
  • Anonymous
    June 03, 2004
    The comment has been removed
  • Anonymous
    June 03, 2004
    Well, right now, Computer Science courses don't really look like they are doing too much in regards to industry anyway, they are still teaching students C/C++ as their foundation for programming. What has been interesting though, is the concepts that they teach the students, I personally think that is more important.

    Personally, I completed my bachelors degree last year in Computing here in Australia and I came out having done: Java, Eiffel, C++, C#, VB.NET. (In the order I learnt them at University).

    What did I find? Well, the last 3 languages were done as elective subjects, and the last two turned out to be most relevant to what I am doing in my current job. I jumped straight out of university and straight into a job. No extra training/certification.

    However, languages aren't something which you can plan too far ahead for. Planning too far ahead, you may have just missed the boat and that language may no longer be relevant in the industry.

    Probably the best thing for a course to do is introduce industry relevant elective subjects that students can pick up if they wish to. These elective subjects would offer students current technology/methodologies that they can apply their previous knowledge towards. (This assumes that the electives are for senior students who have already under taken various other subjects which teach them the foundations. These subjects are often the core subjects required by students for the completion of the course). Which is how my course was structured, don't know how things are overseas though.

    So still teach those paradigms as mentioned by Robert K, and then have the new funky languages as elective subjects which are optional for those students that wish to try their luck at the languages. Just a thought.
  • Anonymous
    June 03, 2004
    I agree with Niclas. In select universities it take a 1/2 year to simply give a basic understanding of language syntax without any reasonable explanations how to use it. No design templates, no software development process understanding.

    This universities simply produce computer language translation specialists. All that they can do is to translate from native human language to computer lang.

    I would like universities better focus on history of CS and reasoning for each change happened. This way education will be never outdated - as it will focus on past by design. Currently only people with 10+ real-world CS experience understand overall CS trends - everybody else simply focus on current technology.
    If student will have understanding of past - they can attempt to predict future. And this prediction will not be given to all students by single professor - but will be different. Only this way innovation can happened.
    Instead of teaching current technology it's better to give a generic knowledge how to create new.

    This is my understanding of University education.
    If you need to study single current technology deeply - buy a book, read MSDN, attend a 3-week courses/training. No needs to study 4 years in University.

    People after university must be able to drive new technology - not translating specifications from English to Java/C# or using RAD and drawing database/class diagrams using latest cool tool from commercial vendor. University must create researchers - not users.
  • Anonymous
    June 03, 2004
    The comment has been removed
  • Anonymous
    June 03, 2004
    As others mentioned, universities should teach the concepts of programming rather than concentrating on a specific programming language. I learnt C++ at university but never used it commercially. I have used Delphi for 2 years, VB for 6 years, and C#/VB.NET for 3 years. It doesn't take a long time to learn a new language if you now the basics.

    Deciding about the top language in 2015 is a bit tricky, especially when it comes down to its usage in architecture. We don't know what paradigms exist at that time, for example we don't know what the status of OOP, CBD and SOA will be. Also we don't know for example how .NET Framework looks like (if it exists at all). So I would say the language is of a less concern than other stuff like OOP, SOA, OS, Frameworks, Database Servers, etc.

    If we compare today with 1989, we didn't have access to the Internet at that time (or at least I didn't!) and Windows was not yet born... So how could we possibly think of Longhorn or .NET for instance?!!

    If we can and draw where we want to be in 15 years time, then we are limiting what we can possibly do in 15 years time.

    But your idea is very nice anyway. If you aim for 15 years later, at least it will be closer to the state of the CS after 4-5 years!
  • Anonymous
    June 15, 2004
    By 2015 IT will be clearly divided between consumer-side and supplier-side development of services. If you want to work on the consumer-side then be prepared to learn about business process models and invocation of web services. If you want to work on the supplier side then the best languages to learn will be Hindi or Chinese!