Saturday, August 4, 2007

Training the Youth

When a paper-based round was added to the SACO in 2003, suddenly the participation nearly tripled. Students without access to a computer were finally able to participate. However, participation in the computer-based second round (or what was originally the first round) remained fairly constant. If someone did well in the first round, but never knew how to program, there wasn't much they could do.

Yesterday, however, the situation was improved slightly. The top students from schools unable to compete in the second round were invited to learn Python. I was one of the three students that went to teach them. There were 15 of them and only 4 of them had any programming experience (Java). The rest knew nothing about programming before we visited them.

I was expecting there to be maybe a couple interested with the rest wishing they weren't there. I couldn't have been more wrong. They were all very eager to learn and they caught on surprisingly quickly. There was one that wasn't too interested, but the rest found it so amazing that they were learning to control the computer. Withing less than three hours they understood up to if-else statements. To put it into perspective, it usually takes two weeks before loops are covered at UCT using Java.

The SACO started advertising Python since 2005 when The Shuttleworth Foundation sponsored prizes for the top Python 3rd round participants. Since then UCT has spawned a 1st year Python course for advanced programmers as a replacement to the usual Java course. Most students taking the course get hooked onto Python. While I do have other favourites for other tasks, I certainly like using Python for several tasks mainly due to its conciseness.

There have been discussions about Python replacing Java at schools. However, most teachers are against change and so it's a difficult battle. From the experience of training these kids with little to no programming experience I can confidently say that Python is a much better teaching language than Java. There's nothing that is required before it can be explained, such as the classic "public static void main(String args[]) {". Compare System.out.println() in Java to print in Python. It's self-evident which is easier to teach.

The training continued today, however I had other kiddies to train. This time it was ACM ICPC training. The regional contest is coming up in mid-October so now was time to get the training started. As I can no longer compete, having won two regionals, I am now doing the training. Some of this bunch are older than me even, which makes for could make for an interesting experience if one of them wins. We went over some old problems, which some of them tackled fairly well.

Next weekend the training continues, but once again with a different bunch. I be training the IOI team I'm going with to Zagreb, Croatia on the 14th. For that training we have to set new problems for them to solve under competition conditions, i.e. a mock IOI.

No comments:

Post a Comment