[I wrote this on Jan 3rd, 2005, but never had a chance to make it online. So here it is.]
Well, I started my academic gig this new year with an exam. I guess, at 7 AM, our class is one of the first to do exams in this university. My class is "Foundation of (object-oriented) computer programming".
This class is not really a true-strict object-oriented programming. It is taken by second-year students in EE. The first year teh students take what I think basically a review of high-school topics; like physics, math, chemistry, and biology. All students, regardless of their departement, take these classes. So, my programming class is their first formal course on programming.
Unlike CS students, we don't have plenty of time to teach programming. There are other topics to teach in a limitted time. We don't want to make students stay longer than what they should. So, we have no option but to pack the programming material into one semester course. We have to teach them algorithm, logic, data structure, and the syntax of a language.
We picked C++ as the language to teach. I know that Java is hot. But, unfortunately the majority of EE-related topics still need C or C-like programming ability. [It's no coincident that JoelOnSoftware has an article that support this: Advice for Computer Science College Students. Although this article is focused on CS students, it's still valid for EE students. I found Joel's article after I wrote this piece.]
As I expected, the quality of the students varies. Although we have "the cream of the crop" of Indonesian students, they come from different background. You'll get different results; from excellent to just barely pass the exam. (Judging from previous class.)
On top of that, how do you test programming capability? How do I grade students in my class?
I always believe that programming is not only a science, but an art as well. I don't want to dwell on this issue. It's a topic on its own. I'll write on this later on. Back to the original question, should I just test the science aspect of programming? Meaning, if they can answer the question or write a program that gives the correct output then they pass. Or should I also consider the style? But then, it won't be objective.
Tell me what you think!