Recherche dans le site/ Search this Blog:

Login



Computer Science Education: Where Are the Software Engineers of Tomorrow? Imprimer
Écrit par Alain Côté   

"Two professors emeritus of computer science at New York University who have penned an article titled Computer Science Education: Where Are the Software Engineers of Tomorrow? in which they berate their university, and others, for not teaching solid languages like C, C++, Lisp, and ADA. The submitter wonders whether any CS students or professors would care to respond. Quoting the article:"

"The resulting set of skills [from today's educational practices] 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... Java programming courses did not prepare our students for the first course in systems, much less for more advanced ones. 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."

The reference to Java might be misleading, the authors also say Java is important in learning to code!

I am myself a Java developer and I started when the language was born.

Nevertheless, I can understand where the professors are coming from when they state:

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.


I started to write Java programs with vi (now using eclipse ;-) and I would say that it is indeed necessary to understand pointers to write complex (especially multi-threaded) Java programs. Somebody not understanding pointers will have no idea that every Java Object (even arrays) are accessed through references which is indeed a fancy name for a pointer. So all Java variables except primitive types behave just like a pointer would. I can't see how one could be an expert in Java without understanding this!

I see the point for teaching C and at minimum a few other languages (I did lisp, prolog, ml, assembly for Intel and Motorola and a few others). I am just surprised they don't suggest also at least one assembly language as mandatory.

A student would also need to learn at least a minimum on how the hardware works, (hardrive, processor, cache, bus, memory, etc.)

Why ? Because knowing all the components (hardware and software), knowing the machine and all the layers is the only way to be able to write efficient programs !

We are supposed to have nice abstractions to work more easily knowing only a few layers but in my experience this is a myth and this is how we end up with trashy programs, when the person who wrote it didn't have a clue on how the other layers worked and the nasty impact his code would have on those other layers.

Here is a 2002 article that explains the phenomenon a little more, it is called the Leaky Abstractions [joelonsoftware.com]

If we are not aware of this, we end up forming "fast-food" programmers instead of the software engineers of tomorrow. I guess that's what the professors were saying.

Then again, in a sense, nothing new here ;-) I have been knowing this for a long time and my guess is that I am not alone ! ;-)

Ajouter votre commentaire / Add your comment

Votre nom / Your name:
Sujet / Subject:
Commentaire:
SPAM: Ne pas inclure de lien ou utiliser le stratagème suivant: "yahoo.com slash mapage.html"     Nous utilisons un filtre qui bloque les commentaires suspects avec une erreur 403. De même, du code de programmation ou sql peut provoquer des erreurs 403. Veuillez utiliser un lien vers votre code tel que: "pastebin.com slash jVNqLieD"    Merci!
Comment:
SPAM: Do not include any links in your post or use the following construct: "yahoo.com slash mypage.html"    We are using a filter that denies suspicious posts with a 403 error. Programming language or SQL code may also cause a 403 error. Please provide a link to your code instead like: "pastebin.com slash jVNqLieD"    Thank you! :
  Lettres de vérification; lettres minuscules seulement, pas d
Retaper les lettres affichées / Word verification:
Mis à jour / Last updated ( mercredi, 26 mars 2008 23:37 )
 



Consultez TOUS nos fils d'actualité ici. / View ALL our newsfeed here.