Saturday, February 02, 2008

Computer Science Education: Where Are the Software Engineers of Tomorrow?

This is an article snipnet from Software Technology Support Center. I feel that this is a good article to think about where software development is heading to in the future.

In the article mentioned that there is a downward thrend of software skills developed during degree years;
  1. Mathematics requirements in CS programs are shrinking.
  2. The development of programming skills in several languages is giving way to cookbook approaches using large libraries and special-purpose packages.
  3. The resulting set of skills is insufficient for today’s software industry (in particular for safety and security purposes) and, unfortunately, matches well what the outsourcing industry can offer. We are training easily replaceable professionals.
Education is neglecting basic skills, in particular in the areas of programming and formal methods, exposure is model checking and linear temporal logic for the design of concurrent systems and floating-point computations.

Because of its popularity in the context of Web applications and the ease with which beginners can produce graphical programs, Java and scripting languages has become the most widely used language in introductory programming courses. When Object-Oriented programming is introduced in early education, students found it hard to write programs that did not have a graphic interface, had no feeling for the relationship between the source program and what the hardware would actually do, and (most damaging) did not understand the semantics of pointers at all, which made the use of C in systems programming very challenging.

A real programmer can write in any language (C, Java, Lisp, Ada, etc.). The study of a wide variety of languages is, thus, indispensable to the well-rounded programmer. A well-rounded CS curriculum will include an advanced course in programming languages that covers a wide variety of languages, chosen to broaden the understanding of the programming process, rather than to build a résumé in perceived hot languages.

Students need to be exposed to the tools to construct large-scale reliable programs, as we discussed at the start of this article. Topics of relevance are studying formal specification methods and formal proof methodologies, as well as gaining an understanding of how high-reliability code is certified in the real world. When you step into a plane, you are putting your life in the hands of software which had better be totally reliable. As a computer scientist, you should have some knowledge of how this level of reliability is achieved.

3 comments:

Anonymous said...

I want to quote your post in my blog. It can?
And you et an account on Twitter?

Danielle Cheah said...

Go right ahead.

Anonymous said...

What a great web log. I spend hours on the net reading blogs, about tons of various subjects. I have to first of all give praise to whoever created your theme and second of all to you for writing what i can only describe as an fabulous article. I honestly believe there is a skill to writing articles that only very few posses and honestly you got it. The combining of demonstrative and upper-class content is by all odds super rare with the astronomic amount of blogs on the cyberspace.