Saturday, January 12, 2008

What Should Students of Software Engineering Learn?

A recent defense department article lamented the decline in quality of computer science graduates. They laid the blame on today's institutions of higher education. The big troll in the article that has generated the most buzz is the claim that students who first learn Java are somehow mentally hamstrung to those who first learn C++. This was based on some private communication with Bjarne Stroustrup who is the inventor of C++.

The reason why the group of students, who first learned C++, outperformed the group of students, who first learned Java, is because C++ is harder to learn than Java. The C++ group is smarter because the ones who couldn't learn C++ dropped out. This skewed the average intelligence of the C++ group higher than that of the Java group.

I do agree with the article that, in order to be a good programmer, you should learn multiple programming languages. I learned a lot from studying the following languages; assembler, C++, C#, Java, Lisp, Python, and Ruby.

The other point about the article that I agree with is the need to teach more than programming languages. In fact, I would go one step further. Teach the computer science concepts in class and the programming languages only in the labs. It's the concepts that hold the most value and should be the center of attention.

No comments: