Monday, February 25, 2008

A WTF Day.

I think that instead of calling it a We are All Doomed (WaaD) Day, I'm going to start calling these days a What the Frak (WTF) Day. I had to do another 4 hours of C++ demonstration today. Needless to say, it was supremely fruitless even though everyone managed to finish their work before time. Once again, their task consisted of writing just under 10 lines of code in 2 hours. Of the many ways to do it, this is the simplest:

if ((C <> 7)) return 0; // Case 1
if (X < coins[C]) return ways(X, C-1); // Case 2
if (X == coins[C]) return 1 + ways(X, C-1); // Case 3
if (X > coins[C]) return ways(X,C-1) + ways(X - coins[C], C); // Case 4
However, since I had already the experience last week, I was well prepared for the same group of people this week. My normal policy when demonstrating C++ is to not touch the keyboard so that I don't end up doing it for them. I tend to drop hints and reason things out with them. But today, in order to reduce stress levels, I helped about half of them complete the task.

As for the other half, I gave them a good way of attacking the problem, one case at a time. I told them to write and test one additional case at a time, starting with case 3 that was already given. This half were sufficiently capable of completing the task without much ado, and some of them even volunteered to coach their friends after finishing their own work. I have no problems with friends helping each other.

I've seen some of the solutions for tasks that they'll need to attempt over the next fortnight. The task next week is to perform a popular fractal calculation and output a Mandelbrot. The final task will be to write an orbital simulation between a number of astral bodies. Needless to say, I think that I'll have to touch the keyboard even more.

One of the students today, actually asked me if I thought their task was too easy, and I told him without hesitation: Yes! Then, he asked me how long it would take me to finish it, and I told him: 30 seconds. Then, he gave me the you must be kidding look. But when he finished his work, he was extremely surprised at how short the programme actually was, which was about 10 lines.

I can understand it if they are unable to wrap their heads around the logic flow of the problem. I can believe it if they are unable to translate the step-by-step solutions given, from raw English into code. I can even accept it when they cut-and-paste pseudo-code without realising the meaning of the word pseudo. But I cannot accept it if they are not even able to produce a single line of syntactically correct code. It would be like an attempting to write an essay without a single grammatically correct sentence.

Some of my friends have asked me if I'm just being a little too harsh. Personally, I don't think that I'm being harsh at all. When you have a situation where teenagers are capable of producing complex software systems out of their bedrooms, there really is no excuse for an engineering undergraduate here to not be able to write a syntactically correct IF statement unless they are dumb and lazy when all necessary resources are available to them.

The only thing that ticked me off slightly was when I got told off for leaving the lab, on time, last week. The head demonstrator told me to never do that again. He says that it's our job to make sure that everyone finishes their task. I feel that it's the students' duty to finish their own work. My job is to help them solve problems. I'm not being paid to teach people who are not interested in learning anything. It's also not my job to cover his ass for over-estimating the capabilities of the engineering undergraduates when he prepared the tasks.

So, Happy WTF Day.

No comments: