11 minute read
Coding: An introduction
By Dan Brown, Digital Learning Leader
INTRODUCTION TO CODING
Thinking is behind the power of coding, and this does not solely mean the ability to write lines of script. Programmers and software engineers can do the bulk of this task for us. There is no faster way to expose assumptions in the solution to a problem than creating a flow chart, a visual representation of step-by-step instructions to solve a problem. Try creating a flowchart that you can follow to calculate the correct change using the least amount of coins and notes. This is something the human mind behind the shop counter can do in a matter of seconds, but when asked to articulate the thought process, and explain a process about how to do this, complexities that are assumed to be simple become exposed. Teaching the thinking behind coding is a key power and applying this thinking to coding a solution can unlock a deep understanding of a concept.
WHY DO WE NEED TO TEACH CODING? HOW DO WE TEACH CODING? SHOULDN’T A SPECIALIST DO IT?
With digital technologies now a key learning area in the curriculum, coding has become a topic of increasing interest. The push for coding stems from our rapidly changing world, and experts believe coding will be necessary for jobs in the future. According to CODE.org, in 2018, 90 per cent of parents in various countries wanted their children to learn computer science and coding. STEM (Science, Technology, Engineering and Mathematics) is a good bedfellow for this burgeoning concept in education because coding in itself requires mathematics, outside-the-box thinking, deep problem solving and deep knowledge of the topic to which coding skills are being applied. Through pressure from parents and our ever-changing, technology-driven world, there has been an increased push to teach coding to ensure young people are future-ready. However, if the world is rapidly changing and other nations are already churning out scores of programmers, then why is this a skill worth teaching to all students here at Pymble? Surely, not all our students will find themselves behind a screen passing instructions to a circuit of silicon and
Preparatory students learn to code with Bee-Bots
metal in their future careers? Surely, fundamental skills in literacy and numeracy will continue to reign supreme? Or will they?
Coding is a way of thinking. It is a vessel through which to communicate ideas.”
Coding solves problems and is another way by which, possibly, to change the world. There are compelling reasons to teach coding, but coding can (and for understandable reasons) sometimes be palmed off as ‘beyond me’. Some teachers might think coding is something that their students will learn on their own anyway; that it is just another concept in a long and ever-growing list of concepts to teach. Perhaps, coding is seen through the image of quiet rooms, full of people glued to screens, pondering lines of script for hours on end. From here, some believe that students will learn, if they are willing.
IN REAL LIFE
Last year, after visiting Amazon, Google and a bastion school in Canberra (Canberra Grammar School), which is a leader in software development, the perceptions of geeks-glued-to-screens was an image that I saw could not be further from the truth. Some colleagues and I were lucky enough to spend time talking to the students and asking them questions about what they liked about software development. Three things stood out from our visit and these same sentiments are echoed in many summits on coding and software that I have attended. • The joy of interacting with their teacher and his/her passion for technology. • Collaborating with one another to solve problems, understanding that no one can solve a big problem on their own. • Working as a class on a problem in absence of technology, i.e. working together on a whiteboard, paper or with other tangibles. Coding teaches so much more than lines of script. Coding concepts can be taught without the need of technology – unplugged coding – and without the need for learning any script coding. Coding is based on logic, where decisions are made from questions with true or false answers. This is how a computer thinks, in a series of “yes or no” decisions. Think of a mundane decision you may have to make. For example, making a decision to stay home or go to school when you are sick. How many true or false questions would you have to ask? Look at this example of a flowchart from a Year 6 student.
Wake up
Feeling well?
YES
Go to school
NO
See doctor
NO
Too sick for school?
YES
Take medicine
Stay home
A flowchart like this looks deceptively simple to create. However, many students and teachers find solving such a problem in simple true or false scenarios surprisingly complex. Trying to break down a simple problem into steps can become complicated, but in trying to solve a problem in simple true/false steps, understanding of the nature of the problem becomes very apparent. What lines of thought and actions related to decisions are involved in coming to a final decision? By thinking this way, not only can students learn to break down a problem, they begin to understand how a computer thinks.
Have a go yourself: create a flowchart comprised of true/false (yes/no) questions to follow when you are trying to find a lost set of keys.
This is why many think of coding as an important skill. It’s a way of thinking and a tool to solve problems. I’m not fluent in any programming language. I don’t particularly enjoy getting lost in floods of script at all, but I do enjoy coding; not because it allows me to unleash my inner geek, but because it is a window into our everyday lives. How many of us have wondered how a mundane device such as a calculator works, how sensor lights in a driveway work, how a digital clock works, how traffic lights work, and so on? And speaking of a digital clock – there is no better way to get students to understand 24-hour time than by programming a simple clock!
THINKING WITH CODING
The above examples represent long-standing technological devices that all meet a need. It is widely accepted the future is going to be a place of automation and artificial intelligence. Do we want our students to be a passenger in such a world, or do we want them to at least understand how computers programmed by other humans make decisions that directly affect their lives? If computers are to do all the mundane work and thinking, what role will humans play? Shouldn’t students have an understanding, at least, of the thinking behind the coding? Understanding how a computer thinks is a skill that allows the user to know what to look for when technology produces outcomes, solutions or even fails. If computers will be driving us to work, automating our shops, looking after our homes, then is it not even more important to understand the world that we and our students will live in?
SO HOW DO I TEACH CODING?
I came across a short article providing nine tips about teaching coding (Nelson, 2018): • Conduct extensive research • Peer review • Demonstrate through practice • Have a growth mindset • Work in groups • Join a community • Teach and leave • Know your students • Don’t blow your trumpet I agree and disagree with aspects of this article. I won’t go into detail of each of the tips, but will endeavour to make adjustments to fit with my own experiences and within the context of Pymble.
CONDUCT EXTENSIVE RESEARCH
There are a plethora of resource and tools to use. The best being – in my humble opinion - CODE.org, GROK coding, Australian Computing Academy, Digital Technologies HUB and Microsoft MakeCode. The article suggests spending time on researching coding opportunities. Though I believe it is important for teachers to backfill with an understanding of what the students will be doing, at Pymble, we have a source of knowledge in our Digital Learning Leaders and keen digital innovators within various Departments who would be willing to assist and provide their own extensive understanding to assist teachers and, even better, within the context of Pymble. DEMONSTRATE THOROUGH PRACTICE AND GROWTH MINDSET
As mentioned earlier, students in coding enjoy the interaction with their teacher. In a previous article (Brown, 2019, pp. 38-45), I mentioned how students in robotics invariably prefer face-toface teaching above pure online, self-paced learning. So, what does that mean if a teacher does not know how to code, if he or she is expected to go to the front of the class and demonstrate?
Teaching is about learning, and I am happy to admit to my students that I sometimes do not know the answer.”
We then use this opportunity to work through the problem together. Creating a class where problems are not a problem, and that it’s okay to freely admit errors and struggles without judgement, takes immense pressure off not only the educator but also, more importantly, students. Learning is suddenly freed, and challenges are markers on the way to understanding and potentially mastery of a concept. Being prepared to give time to solving a problem and working with the students can take immense pressure and stress away from such situations. Educators and students must not be fearful that the problem will not be solved. Some of the best classes I have seen are those when students and teachers pool their resources and knowledge banks to solve a problem.
Mr Mross Becker demonstrating to Year 7 students how coding concepts apply to robotics
Middle School Students learn through a mix of explicit teaching and exploration through play
To demonstrate through practice, teachers need some experience and ability to work with code, such as blockcode, which is like using a jigsaw puzzle to solve a problem. To do so, there are many great online courses through CODE.org and GROK coding, both of which the College has access to. They are step-by-step courses covering concepts in short, procedural experiences.
My colleagues are not ashamed to admit that often we complete the courses weeks ahead of our students so that we are front loaded with the knowledge and experience to demonstrate the courses the students will undertake. This is the growth mindset in action.”
The teacher is a lifelong learner. So, simply complete the activities on GROK or CODE.org ahead of your students and become an expert in their learning experience. The Digital Learning team at Pymble will also happily provide co-teaching opportunities and assist with educators’ own development of skills.
TEACH AND LEAVE AND WORK IN GROUPS
Students in successful software classes appreciate the general structure of teacher-guided instruction and demonstration followed by allowing them to walk off and gain understanding and mastery by themselves. This is where the real learning happens, when students trip and fall and pick themselves up again. Where they learn that is okay and perfectly normal to spend three hours on a problem and get no results, that running down a rabbit hole and coming to a dead end is a part of life and learning. Students may also begin to learn that it is okay to admit they are struggling and need help and that not one person can do everything. With this comes understanding that collaboration is key to solving problems. When students in my coding and robotics classes are asked what they love most about the learning experiences, invariably it is the opportunity to work together to solve a problem. There is something about collaborating with peers that makes a large problem seem not so large.
SHOULDN’T A SPECIALIST DO IT?
In some ways, yes. In later years, from Years 8 to 12 concepts become more technical, but for earlier grades, there is a joy in applying thinking and comparatively basic coding concepts to students’ everyday lives. What better way to unlock a student’s joy for cooking, by making a simple recipe application? What better way to unlock a student’s joy for geometry by creating a code that draws shapes and allows them to artistically manipulate the properties of these shapes through manipulation of number patterns? What better way to inject an understanding of story structure by creating a digital ‘choose your own adventure’ story? There are many possibilities, and a rudimentary understanding of coding, practising using many of the fun online resources available, and receiving help from Pymble’s digital learning team, are ways to help you unlock a relevant, innovative and twenty-first century concept that can deepen student understanding of any topic or problem. This ranges from making decisions on how to find my lost keys to creating a solution that brings your lost keys back to you!
FREE RESOURCES:
CODE.ORG – Plugged and unplugged coding with lesson plans, units of work for Kindergarten to Year 12. Sign in with Microsoft using your @pymblelc.nsw.edu.au login. (https:// studio.code.org/) GROK Learning – Online coding courses for Kindergarten to Year 12. Pymble has a subscription so please contact the Pymble Hub for details. (https://groklearning.com/) Microsoft MakeCode – Coding resources for games, MineCraft, Micro:bit, LEGO robotics and more (https://www. microsoft.com/en-au/makecode) Australian Computing Academy – Curriculum details and teacher resources (https://aca.edu.au/) Digital Technologies HUB – Teacher resources including a breakdown of coding concepts for educators. This site also has Kindergarten to Year 12 lesson plans. (https://www. digitaltechnologieshub.edu.au/)
References Brown, D. (2019). Challenge accepted: Junior School robotics, reflections and learnings. Illuminate: Research and Innovation. Ed. 2. (pp. 38-45). Sydney: Pymble Ladies’ College. Nelson, K. (2018). 9 tips for teaching coding in the classroom. Coder Academy. https://coderacademy.edu.au/blog/coding-starters/tipsteaching-coding-in-classroom.