When talking to my colleagues and friends, a topic that often comes up in the conversation is whether or not specific technologies and products should be taught at uni. For example, should we (i.e. uni lecturers) be teaching Java, .NET and UML, or just object-orientation, requirements engineering and internetworking?
Most of the time I find somebody with a strong position against teaching technologies and products. The arguments goes like this: the university should teach things that are valid for a long time, and not dependent on the products and the market. Technologies and products fade away, and we should teach things that stay with the student for a long time while being useful. Let the TAFE (trade colleges) teach products and technologies.
Do you agree?
People arguing like that are, systematically, teachers. Every time I ask a student about this (and I have done this in 25 occassions in the last 2 years), the answer is: yes, uni must teach products and technologies. Students want to find a job as quick as possible once they graduate, and knowing UML and Java will get them a job. Knowing a lot about the object-oriented paradigm and algorithm optimisation will not.
My personal view is that unis have to do both things. They need to create a solid foundation around theory and long-living paradigms. And, at the same time, uni must teach specific skills in specific technologies and products. The benefits are the following.
First of all, theory without practice is of little value. I may know a lot about object-oriented programming, but the first time you write a C# program, you realise how different things are when implemented.
Secondly, specific products and technologies, if chosen with care, are perfect examples of the implementation of the theory taught to the students.
Third, learning by synthesis is as good as (if not better) than learning by analysis: if you learn how to program in Jave, C# and Eiffel, you will be able to extract some commonalities and patterns that will complement very well your theoretical knowledge on object-oriented programming.
Of course, teaching technologies and products means that we lecturers need to keep up to date and learn as technology changes, which is hard! But, ethically, we cannot afford to do otherwise.