Coded for Success: The Benefits of Learning to Program
An educator argues why computer programming should be taught in schools.
It would be difficult to argue that, along with many other facets of modern life, technology has become a common part of educational institutions around Australia, and indeed, many other parts of the world. Of course, the use of technology in schools - and its continued prevalence amongst the lives of young people - remains a much-debated topic, and it is one that teachers are forced to grapple with on a daily basis.
However, while the presence of technology has remained constant, the ways that schools are using it has changed considerably over the last few decades. This might have been brought about by the increasingly ubiquitous nature of computers and now mobile devices, but it also reflects a fundamental shift in the way that educators think about computers and the way they are used in schools and society. In the very early days of technology and schools, the emphasis was almost completely upon learning to interact with computers at the level of a programmer. Students (well, those whose schools were fortunate enough to have computer labs) would learn simple computer languages like BASIC and PASCAL, and perhaps even begin to understand concepts like Boolean logic. As computers became more affordable, and thus more widespread, the emphasis on learning to program computers shifted towards learning to use them as tools. Instead of learning computer languages, for example, students learnt to use applications, like Microsoft Word or Excel. Almost overnight, computer science was replaced by Information and Communications Technology, and with the exception of a few electives and senior subject selections, learning about programming disappeared from Australian schools.
With the advent of the Australian Curriculum, there is a renewed interest, in Australia and other countries like the UK and Korea, in developing skills in programming and writing code amongst school-aged students. The topic of programming might seem an abstract one. Why, a teacher might ask, does a student need to know how to program a computer? Often, the first thing that a student learns to do is to use word processing tools, but that student never has a chance to learn about the actual process of computing. While learning how to use applications on a computer is important, it doesn’t obviate the need to understand what the computer is doing. In fact, the two goals are complementary, rather than opposing. Better understanding of computer science will lead to better results with applications. Nor is this the only reason to learn programming. In fact, there has been a lot of study into the benefits of learning to program. According to recent studies, teaching basic coding can increase problem solving skills. Golpin (2014) writes: being able to follow programming logic trains the mind to think in more analytical ways. I believe that debugging a program leads to better problem solving skills. I also believe these skills can be taught using programs like Scratch, Gamemaker, Kodu, and others, without emphasizing the need to learn “hard core ” programming languages like C++ or PHP.
Seymour Papert (Schwarz, 1999), one of the bet known advocates for teaching computer science and programming in schools, sums this up well: ‘anyone who has witnessed a toddler using a computer has probably experienced a sense of awe at that child's facility with what for adults can be an infinitely frustrating gadget. It's one thing for a child to play a computer game; it's another thing altogether for a child to build his or her own game. And this, according to Papert, is where the computer's true power as an educational medium lies -- in the ability to facilitate and extend children's awesome natural ability and drive to construct, hypothesize, explore, experiment, evaluate, draw conclusions -- in short to learn -- all by themselves. It is this very drive, Papert contends, that is squelched by our current educational system.’
There are benefits beyond logical thinking too. Brian Heese (2014) writes: ‘when you learn computer programming you learn how to check your work for details, how to apply logic and how to persist at a task. You also learn how to ask a good question, often in written form. Finally you learn how to collaborate because much programming today is accomplished in teams. These timeless skills and learning behaviors will endure far longer than any programming language.’ The benefit of teaching coding and programming are being recognised in Australia and around the world. In January 2012, the UK removed the old ICT syllabus and replaced it with a more computer-science based one, aimed at teaching all students the fundamentals of programming.
In the US, there is currently a lot of argument about the need to make teaching programming mandatory (Schmidt 2012). In Australia, the new Australian Curriculum specifically refers to programming skills and understandings (see inset). For teachers with no background in computer science, starting a course in programming might be a challenge. In reality, you don’t need to be a computer expert to teach students how to program. The key is to start small, and then allow the students to drive the learning. One of the best places to start is with HTML and CSS. HTML and CSS are the languages that websites are written in. As such, they are not really programming languages (they are actually mark up languages) but they do provide a relatively simple way to begin. There’s an added bonus of doing things this way, too: because HTML is quite simple, students will be able to see the results of their endeavours almost straight away. This means that they will be much more enthusiastic about continuing.
What resources are out there for me?
1. Codecademy is a great place to start. It’s a completely web-based environment that teaches students about programming in an interactive and fun way. Students need an email address to sign up, and can then work through a series of exercises designed to teach them the basics. As they do, they earn points and badges. Best of all, Codecademy is completely free.
2. While Codecademy is very good, Treehouse is, quite simply, brilliant. Much like Codecademy, Treehouse offers a series of courses on everything from web design to iOS application building. The courses take the form of interactive activities, quizzes, and, in an improvement on Codecademy, video tutorials. In addition, there are glossaries, challenges, podcasts and lots more. The thing that I like the most about Treehouse is that it also focuses on the ‘soft’ skills - like presentation and aesthetic design which are often overlooked in similar courses.
3. Stanford School of Engineering is a step above the other two examples. The Stanford School of Engineering has been filming a number of their courses over the course of the last couple of years, ranging from introductory programming to more serious courses like iOS development. In addition you can access all the course materials and environments for running your programs. The best way to access the material is through iTunes.
This piece was originally submitted to our community forums by a reader. Due to audience interest, we’ve preserved it. The opinions expressed here are the writer’s own.