I'm currently studying Industrial Engineering in Spain, one of the broadest degrees here that includes the subjects of Calculus, Fluid Mechanics, Electronics, Materials and Programming in C, among others.
However, there's one subject, Introduction to Computers, that I think has an outdated course. While this is a personal opinion, I do some extracurricular projects based on robotics (electronics + programming) and I see that there's a huge difference between the subject and what is being used in the industry.
In this subject we are being taught really low level computer operations and iteration, learning how to reinvent a wheel that probably no one of us will ever need to reinvent in our career.
How should I approach the professors about making the course oriented to the current years? I know I will not benefit from it, but at least my fellow mates would. As most courses here, it was probably written 15/20 years ago and hasn't changed much in the time being. Besides that, another related question would be, is teaching outdated material the norm in most universities?
A small example of what I mean: We had a programming exam with the Outdated LibraryTM, in which I decided to write the function map()
as found in arduino. This made my code much easier to program/debug and faster to write. Most of the other students don't know something like this is even possible and need to go over each individual operation manually to map the different conversions.
Answer
There is always some tension between teaching considerations in computer science and other fast-moving technology fields, and modern practice.
Since the field itself moves so fast, it is not necessarily desirable for a computer science course to really be up-to-date. Even if you taught students up-to-the-minute programming libraries and paradigms in their freshman CS101 course, by the time they graduate, many of these libraries will be outdated anyways. Furthermore, developing new course materials (or updating existing materials) takes a considerable amount of time and effort.
Also, modern programming paradigms are often too complicated to introduce to complete beginners. A deliberate decision is often made to miss out on "up-to-date" in favor of "simple for newbies."
The usual goal, therefore, is to teach students fundamental ideas and concepts that are timeless. The context in which these ideas are taught will probably become outdated pretty quickly. It's understood that students won't use this specific context again, because it'll be obsolete by the time they graduate; the hope is that the ideas stick, so that the students can understand the new programming paradigms they will be expected to learn on their own in the workforce.
For example:
ASCII is dying, replaced mostly by its vastly more complicated superset, UTF-8. But UTF-8 would be crazy to teach in full, with all its byte-stuffing practices that mean different characters take different numbers of bytes, and all the combining characters and normalisation and so on. ASCII has the fundamental idea of characters-as-numbers, which is a useful (and timeless) principle, even if the exact encoding itself is getting more complicated.
Source: Teaching programming: Modern or Educational?
Having said that,
- This seems "stupid" and is demotivating to students who are aware of current practices
- In practice, teaching ideas and concepts is more difficult than teaching specific technologies and syntax. So often students miss out on learning the "timeless" ideas - which were really the whole point of the lesson.
In answer to What can you do about it?
You can certainly tell the professor, "I did XYZ as part of my project, and I think it would be interesting to share with the rest of the class." I often supplement my "fundamental" courses with "modern" concepts, and I love when these supplements come from the students themselves!
You can always ask the professor, "How is concept ABC used in practice, today?" I love getting this question from students - it gives me an opening to talk about fun stuff :)
But understand that teaching outdated material is the norm in many cases. There are good reasons for this; there are also good reasons not to do this. It's a difficult balance to strike.
No comments:
Post a Comment