Fresh blood for computer science

GEORGE WRIGHT

LAST week I had the honour of being invited to be an industry mentor at the National Computer Science School (NCSS) run from the University of Sydney. This yearly event invites high school students to live on campus for ten days to attend programming classes, talks and site visits to various ICT firms and participate in programming challenges.

The aim of the school is to allow the students to get a taste of university life, computer science options and career paths in the industry.

Dr James Curran and the 2012 National Computer Science School tutors and participants

Industry partners (such as Atlassian, Freelancer.com, Google, NICTA and others) sponsor the event so as to minimise or negate any costs to the students.

The programming competition I attended was a frantic, two-hour challenge with the students broken up into teams of three and paired with a mentor. All the teams were given the same 13 questions to solve, which ranged from algorithm design and logic puzzles to HTML/CSS questions. Any language could be used to solve, but python was the language taught throughout the week.

The camaraderie in the room was amazing, the students were excited to be competing and even more, I think, happy to be among peers that were equally interested in maths, science and all things computer geek.

I was very impressed by the familiarity of my team with their language of choice and the tool chains that they have mastered and just took for granted. Compare this to my early days of programming at school, where the compilers and interpreters were mostly proprietary and required a good chunk of change to get started even at a hobbyist programmer.

Advertisement

Open access and availability to the fundamental tools of the trade is vital to growing the discipline of software engineering and this point was hammered home to me during the event. Tribute needs to be paid to the GNU community for their foresight in making available the necessary tool chains and ultimately creating the expectation that freedom to use these tools is critical to a healthy and innovative software industry.

I admired the savvy use of different tools and the ease at which the students bounced between them to achieve their tasks. This comfort with things digital is a telling sign for bricks and mortar business that there is no going back; that the expectation of online availability and interoperability are well and truly part of the next generation's psyche (as if we really needed further proof?).

The impact of smartphones and connected devices was obvious as well in the student mindset. It was not uncommon to hear students talk about how they wanted to go to university in order to get into programming for embedded systems. The iPhone has certainly created a rock star aura that is attracting more than its share of young practitioners.

This year's NCSS competition managed to catch out the organisers and tutors, with some teams solving all 13 questions. Associate professor James Curran and his team had to scramble to put a 14th question into play. At the end of the night, you could see the tutors brimming with pride that the students were able to exceed their expectations.

Based upon what I saw in mine and some of the nearby teams, here is some advice for next years competitors:

You don't have to solve the problem in a single line of code. There was a classic “impetuous youth” feel that the solution could be reduced to a few operations. Some of the questions were deliberately set up to only be solved in a multi-step process.

Learn to read through the language. The questions were all phrased in plain English and usually coloured with a “monster” theme (the competition was held on Friday the 13th). A good first step was to rewrite the question on paper as a series of discrete facts. A professional software engineer will probably spend more time in this requirements phase with their client/user than actually coding the solution.

Use the test data. Some of the challenges came with implicit test data. Before you submit your solution, plug in the test data and see that you've got it right.

Rotate the strike. When you get stuck on a problem, talk about it with your team and maybe hand the question to another member to try to solve, and move on to the next one. You can always come back to it later.

I had a great time and thank Dr Curran and his team of tutors for the opportunity to participate. Thanks to all the corporate sponsors, too, for enabling the event, as well as participating as industry mentors. I wish the students the best of luck with their studies and I hope that they continue their journey to becoming IT professionals. Some great talent is on the way!