Whether we like it or not, Computer Scientists have to keep learning new programming languages (if only so that we can safely ignore them). A thorough study of programming languages therefore constitutes a vital part of both the undergraduate and graduate education of computer scientists.
If the above statement seems less than self-evident to you, put yourself in the shoes of a graduate of some years ago, now in a leadership position in industry. Most likely, this graduate was fed with a steady diet of Pascal while at university, only to find that his new employer actually wanted COBOL or C or even RPG skills. Meanwhile the trade magazines have started to sing the praises of C++, SmallTalk, Ada 9x and so on, promising great productivity gains to those who adopt them. More insidiously, the graduate is being assailed by numerous partially disguised programming languages such as PL/SQL, SQL Windows, Visual Age and Delphi, all of which are proclaimed to be the greatest thing since sliced bread.
The only way that we can equip our graduates to cope with this continual onslaught, is to provide them with an education that provides them with a thorough understanding of the essential concepts of programming languages and the fundamental design issues and trade-offs. And because most of our graduates leave us after only three years, we have to fit a course into the second or third year.
My experience with teaching the undergraduate course is that there is not enough time to provide students with as thorough an understanding of programming languages as is desirable. It thus seems obvious to me that a second course in programming languages is an essential part of the education of a Computer Scientist. In practice, this means an honours course.
Prof Herman Venter