Learning to code isn't just about controlling computers. Just like building a house isn't about controlling hammers, flying about controlling aeroplanes or biology about controlling microscopes. The computer, just like the hammer, aeroplane and microscope are merely the tools. Yes, being able to wield a hammer is an essential element to building a house, but someone who is an adept hammer wielder needs an enormous amount of extra skills before they can begin to build humble abodes.
There. Is. So. Much. More. To. It.
And that's why it's essential to teach your students how to code. It's the all the extra skills students build in the process. These additional skills will develop your student's ability to succeed in the real world professionally and socially. So, let's get started; here are six of the best!
1. Design Thinking
Designers tend to approach problems from the solution side.
When we discuss design thinking we are delving into the process designers use to create solutions to problems. This process works by digging deep into the solution and finding any possible way to get there. Design thinking doesn't need to follow orthodoxy and in turn allows student creativity to flourish.
The very essence of writing programs forces design thinking in students. Consider the programming challenge of automating the watering of a plant if a sensor is sending low levels of moisture. In design thinking, the student will discuss the challenge regarding the solution, not the problem. The problem is "not enough water", and the solution is "optimally watered plant".
When solving this challenge based on the problem, the solution is easy to find. If the sensor gives a reading below some level, then turn on the water. If the sensor gives a reading above some level turn off the water. Job done, let's get some lunch.
On a micro level within the programming itself, seeing this challenge from the solution side drives the student to find ways of writing the program with more efficient and robust code. Design thinking pushes the student to write code that is less likely to fail or in fewer lines.
The design thinking process here of evaluate, learn, create, innovate, is key to finding the best way to get to the solution.
I wonder if that will work? Instant feedback. Iterate. Try again.
On a macro level, design thinking will entice the student to consider more open-ended questions when designing the program, such as;
1. When is the optimal time to water the plant?
2. Should the program even rely on a sensor?
3. Should the plant be drip fed or sprayed?
4. How can water be saved or used more effectively in the process?
The combination of micro and macro here are critical skills students learning to code can apply to many other aspects of their life; personally, academically and professionally.
20 billion IoT devices by 2020! Where will they all fit?
We live in a time of unprecedented change. 2016 saw 6.4 billion IoT devices connected to each other and the internet and this is estimated to rise to over 20 billion by 2020. All of these devices are controlled by coding. Combine this with the dwindling price of 3D printing technology, and now every student's desk can become a maker space.
The combination of coding, making, 3D printing and IoT devices means that students, once they learn the basics of coding, can build upon their skill set using online tutorials and other people's code to write code to control anything they can dream off. Because of the lowering cost of 3D printers, students can start to tinker with things all around their home. We are seeing more and more students build things that make their life easier, better or more fun!
1. A pressure activated warning alarm to keep their pesky younger siblings out of their room
2. A motion activated night light for one little friend who was afraid of the dark
3. A smart plant that knows when it's thirsty and how to spread happiness to the world
Students, naturally, will start small with heavily guided coding and making projects. This creates a catalyst for innovation. Students familiarise themselves with the idea that if they can dream it, with a mix of design thinking, coding and making skills, they can probably innovate and create it. Innovation doesn't need to be an automated fire fighting drone or Facebook 5.0; it's subjective. So if a student can find a way to automate, control or improve something in their day, you better believe it, that's innovation!
3. Growth Mindset
Can you grow your brain power? You betcha!
Building upon students growing in their ability to innovate comes growth mindset. A growth mindset is the idea that with dedication and effort we can improve our intelligence. Growth mindset increases motivation, innovation and productivity.
Developing growth mindset in students is achieved by facilitating a supportive and understanding classroom in which students are encouraged to take intellectual risks. In this classroom, there are no failures, only lessons, and students are rewarded for a combination of learning, effort and progress.
Skill development comes thick and fast to those learning coding. Students have a real-time feedback loop that tells them their skills are developing. When a student attempts to write a small program, they know if it works as soon as they execute the code. Within this framework the student can try many different angles, can self-improve, can quickly seek help from the internet and if all else fails, ask for help from the teacher. Notice how once the student has been given a task, the last helping hand they ask for is the teachers. The teacher only needs to guide the student to the correct path.
Students can see themselves improving their programme as they debug, find errors and make the code better. The students take ownership of their programming, increasing engagement in the lesson and in the knowledge that they can now do something they once couldn't.
4. Future proofing
Will you have a robot in your pocket?
To prepare students for a future where we rely on computers, software and robots, knowing even the basics of coding will elevate job seekers to the top of the pool. Furthermore, coding doesn't just teach students how to control computers; it teaches many different skills that are useful in our social and professional lives. There are two distinct ways; direct and indirect. Direct being; where someone will use coding or knowledge of coding to help them do their job better. Indirect being; where someone applies computer science principles and skills to their job.
There are many fields in which an ability to code will be a direct advantage. Think of a designer who has a working knowledge of HTML and CSS. This advantage will show in their capacity to communicate effectively with the development team, to produce pragmatic designs that work across multiple devices, screen sizes, operating systems and software, and even to create their own websites and software to automate processes.
Will holding coding skills help a lawyer or a doctor? Perhaps not directly, however, computer science develops essential thinking skills that are helpful across all professions and careers. Critical thinking, problem-solving, logic and data skills will help a doctor analyse test results, think outside of the box (think House), and to develop processes that optimise their ability to see more patients.
5. Teaches you how to think
When you make mental models you prepare your brain to take on the world.
Charles Duhigg, in his book Smarter, Better, Faster, discusses how people who make mental models are happier, higher paid and get better grades at school. Every time a student tackles a coding challenge they make mental models of various ways they could achieve a great solution. This process of making models to solve challenges spills over into the student's other studies.
Computer Science teaches students the importance of precision and concision in defining arguments, use of language and creating models. Being precise and concise are fundamental to written communication skills and writing for the internet. Say what you mean and mean what you say!
When learning computer science, students need to learn how to consider multiple ideas at the one time and draw elements from each to solve problems. Consider a student writing code to make a digital magic 8-ball. In this simple system, the student needs to know coding (assigning variables, syntax), basic computer science (FOR loops and processes), how to generate random numbers, and how to write original and cryptic messages. Being able to formulate ideas and solutions based on multiple ideas and perspectives stretches the processing power of the student's brain
Furthermore, coding and computer science teach you how think about solving problems, which brings us to the next point.
6. Problem-solving skills and decomposition
A whole pizza is hard to swallow, so is a slice; a bite size piece though, how nice!
Can you fit a whole pizza in your mouth? Attempting to put a whole large pizza in your mouth is going to be a tricky, albeit hilarious undertaking. A slice, however, while still being too big for your mouth is way easier to deal with. After taking a bite, you realise that a whole pizza is really just a bunch of bite size pieces all stuck together.
This is the kind of thinking that is created when learning to code. A student will be given a problem that may be huge like a pizza and feel swamped when they feel they need to take it down in one bite. The only way to eat a whole pizza is to break it down into more manageable pieces. In the case of a pizza, it is first broken down into slices and then into bite size chunks. Depending on the complexity of the coding needed, this may be the same or it might be necessary to break it down even further.
Whenever a problem looks too big to solve, a great first step is to break it up into many pieces and solve it in many mini-problems. This can be the most challenging part of solving the problem. The ability to break down a problem into many different little problems are required in many aspects of their lives.
It doesn't matter where your students are from, their age, or even their ability; learning to code will help develop their thinking skills and how they apply these across their lives and studies. In the right classroom setting, with the right tools, students can pick up the basics of coding and start to revel in all the positives as outlined above.
If you're thinking you can't teach coding because you don't know how to code yourself, you need to stop that. Right now. You can, you just haven't come across the right tools, lesson plans and activities.
If you are thinking you know how to code but you haven't the faintest idea of how to teach coding, you also need to stop that. Right now. You can, you just haven't come across the right tools, lesson plans and activities.
And that's where the Visual Coding Tool and Kalebr Projects come into the picture. We have the tools, lessons and professional development you need to begin your students #codelife. If you want to get coding started in your classroom or school, you can schedule a demo with one of happy team members. We dish out happiness, code skills and cool ideas in hearty servings. Click below to see your students begin the next leg of their ICT journey.