Why We Should Be Teaching Kids To Code

Bill Shorten's recent announcement that, if elected, a Labor Government would "ensure that computer coding is taught in every primary and secondary school in Australia" has brought attention to an increasing world trend.

Kids picture from Shutterstock

Estonia introduced coding in primary schools in 2012 and the UK followed suit last year. US-led initiatives such as Code.org and the "Hour of Code", supported by organisations such as Google and Microsoft, advocate that every school student should have the opportunity to learn computer coding.

There is merit in school students learning coding. We live in a digital world where computer programs underlie everything from business, marketing, aviation, science and medicine, to name several disciplines. During a recent presentation at a radio station, one of our hosts said that IT would have been better background for his career in radio than journalism.

There is also a strong case to be made that Australia's future prosperity will depend on delivering advanced services and digital technology, and that programming will be essential to this end. Computer programs and software are known to be a strong driver of productivity improvements in many fields.

Being introduced to coding gives students an appreciation of what can be built with technology. We are surrounded by devices controlled by computers. Understanding how they work, and imagining new devices and services, are enhanced by understanding coding.

Of course, not everyone taught coding will become a coder or have a career in information technology. Art is taught in schools with no expectation that the students should become artists.

Drag and drop

A computer program is effectively a means of automating processes. Programs systematically and reliably follow processes and can be used to exhaustively try all the possibilities.

The languages used to program computers have evolved in the 70 years we have been building computers. Interfaces and programming environments have become more natural and intuitive. Language features reflect the applications they're used for.

What is needed to easily express a business process, scientific equation, or data analysis technique is not necessarily the same as what is needed to rapidly develop a video game.

However, throughout the evolution of programming languages, the fundamental principles have remained the same. Computer programming languages express three essential things:

  1. The order in which a sequence of instructions is performed
  2. A means of repeating a sequence of instructions a prescribed number of times
  3. And tests as to whether or not a sequence of instructions is performed.

While personal preference influences which computer language a programmer uses, there is a greater understanding of which languages work well for teaching introductory programming. For example, Scratch is popular for primary school students and is quick to learn. Alice has been used to help students quickly build computer animations. Python is increasingly used for scientific applications. Visual programming languages -- where students can drag-and-drop icons rather than type code -- allow for rapid development of simple programs.

At Swinburne University of Technology we run workshops to introduce school students to program NAO robots. Students use the Choregraphe environment to link robot actions from a library.

Students previously unused to programming can develop interesting robot projects in a couple of days. More sophisticated development of the robot requires students to use a more detail-oriented language, such as Python or C++. The simpler options lead to positive student experience.

Picture: Brett Davis

Computational thinking

Writing and then executing a program gives immediate feedback as to whether you have correctly expressed instructions for the computer. Ultimately, the understanding of how to express concepts so that a computer can perform tasks accurately and efficiently is far more important than the details of the programming language.

Underlying all computer programs are algorithms, which specify in a more abstract way how a task is to be done. Algorithmic thinking -- also called computational thinking -- underlies computer science, and there has been a growing movement on algorithmic thinking in schools.

The new national curriculum reflects algorithmic processes, and materials are being developed to help teachers with the new curriculum. Victoria has recently developed a new subject for the Victorian Certificate of Education (VCE) entitled Algorithmics.

There are even materials for teaching algorithmic thinking without computers. The Computer Science Unplugged movement, led by Tim Bell and colleagues at the University of Canterbury, has developed resources that teach students concepts through movement and fun activities.

Teaching for this century

Teaching computer coding in schools is very different from initiatives that advocate for computers in the classroom. I was not, and am still not, supportive of compulsory laptop programs in schools.

The idea is not necessarily to expose students to the technology itself, which is almost inevitable these days with the wide penetration of mobile phones. Rather, students are exposed to the skills needed to develop computer applications.

While IT skill shortages is a contentious topic, there is no doubt that not enough of the best and brightest are studying computer science at university. A significant factor is insufficient exposure to the topic at schools. Teaching coding at schools is aimed at addressing the lack.

It might be said that whatever programming language is taught will be obsolete by the time the students enter the workforce. My experience is that, if taught properly, students can rapidly transfer the principles of one language to another.

In the 19th and 20th centuries, the challenge was to understand the physical world, and harness force and energy. This understanding percolated into the school curriculum. In the 21st century, the challenge is to understand and harness data, information and knowledge. Computer programming is a necessary way of introducing students to these concepts.The Conversation

Leon Sterling is Pro Vice Chancellor Digital Frontiers at Swinburne University of Technology.

This article was originally published on The Conversation. Read the original article.


Comments

    coding is a skill that will never fall out of demand. Almost every other job will eventually be replaced by automation and specialized artificial intelligence. You think there are going to be human doctors or lawyers in 50-100 years? Humans in the service or bulding industries? nope. There will always be a need for developers and coders, at least until true artificial general intelligence is developed. But that point, you'll have bigger problems than unemployment.

      Couldn't disagree with you more - I'm not an objectionable person, I just see the future of computing very differently, and to some extent this is a speculative topic anyway.

      Here's my take - coding is about translating required/desired functionality into languages which accommodate the environments, platforms and infrastructures from which these functionalities will be delivered.

      Given the acceleration in hardware, (platforms and infrastructure) and the environments which the collectively produce, there will be a point at which the most code-demanding functionalities will be easily accommodated by solutions which do the translation for the appropriate contexts resulting in the optimal delivery of the desired functionalities in terms of all measurable success factors (time to production, accommodation of requirement, performance, etc).

      A simple example of this is in the programming of manufacturing robotics - rather than code the actions required, the system simply observes an operator carry out the tasks which the robot will perform, and it translates the observed motions (input) into code - aggregating many observations/run-throughs of the required activities, and optimizing the final aggregate set of actions for the robot carrying them out.

      Eventually, software will have a translation input layer for development, and an operator will simply ask that the system produce an app, OS, protocol, etc, which performs specific functions (given in use cases - if this, then/and/or that, etc) and the system will produce the solution optimal for the context in the most optimal way.

      Why I see this as being more tangible than the redundant human lawyer of doctor scenario, is that the factors driving 'coding redundancy' are inherent within the industry. Optimization (doing more with less, while doing it larger and faster) is a pillar of technology - we used stone tools to make iron ones, and used those to make steel ones, etc etc. The centrality of this legacy is (as I see it) is applying a downward pressure on the number of skilled individuals needed in IT - which is being counter balanced by overall growth in demand and the emergence of new technologies. The average IT worker is presently expected to have more skills than the average 10 years ago - rather than adding more skilled workers. Again - optimization.

      That's my take. :)

        The nature of what "coding" means will definitely change over the next several generations. I think your "nuts and bolts" programmers will be phased out as the need for low-level code writers is replaced by intelligent systems. I don't think many languages like C or other structured languages will not be in common use by humans.
        Instead, I see the rise of coders where the paradigm is to describe a problem, and an intelligent system solves it. Instead of, say, spending several days writing a protocol driver between datastreams A and B, a coder would describe (in some yet unknown language), "create me a transfer protocol between A and B". An intelligent system, possibly using some kind of genetic algorithm, would create the best (language-agnostic) solution to that problem.
        A coder would become a person who asks questions, rather than one who solves problem.
        I still think that in IT, there will eventually only be coders, although multi-disciplined ones.
        A coder would be a person who can analyse a problem and find out the best questions to be solved by intelligent systems.
        Any job requiring a rigid process or knowledge recollection is fair game to be replaced by intelligent systems combined with advanced robotics. Eventually it will be cheaper to do this than to pay some living human to keep themselves alive.

        Last edited 22/05/15 10:38 am

    Some people are good with their brains and are suited to academia, others are good with their hands and are suited to manufacturing and of course some have a combination of both and sadly some have very little ability in both. Yes there is also a scale of ability in these areas.

    Every strong economic country in the world (or the vast majority) have manufacturing as the basis for their economy.

    Australia has an abundance of raw materials that are all shipped offshore, value added to abroad and brought back here. We need to start a campaign of rebuilding the manufacturing base and thus rebuilding the economy.

    "Teaching for the this century"

    Teaching coding may help with understanding the parsing of written language, and attention to detail.

Join the discussion!