Computational thinking is a way to approach large complex problems so they’re easier to solve and teach a computer the steps to solve them.
We do this in four steps:
- Decomposition
- Patterns
- Abstraction
- Algorithm
Computational thinking is a way to approach large complex problems so they’re easier to solve and teach a computer the steps to solve them.
We do this in four steps:
I guide 3rd-6th graders in an exercise on animation in Scratch. Scratch is a great online tool to learn the foundations of computer science and coding in a fun way. Follow along to learn how to animate your sprites. This 24-minute video was presented as a livestream on YouTube on March 25, 2020.
In this 15-minute lesson, I help children in K-2 program a car to drive in a city on Scratch Jr. using a tablet. The great thing about Scratch Jr. is it can be installed on most tablets for kids to use at home. This video was presented as a livestream on YouTube on March 25, 2020.
I guide 3rd-6th graders in an Hour of Code exercise on code.org using Minecraft as the topic of the game. We often use this as an ice breaker in our classes to establish a baseline of understanding for problem solving and coding. This 35-minute video was presented as a livestream on YouTube on March 24, 2020.
I guide K-2nd graders in simple activities on code.org to learn the basics of problem solving and writing code. This 24-minute video was presented as a livestream on YouTube on March 24, 2020.
Debugging is a method used by computer engineers to test their code and ensure they get the results they are looking for. Many programmers will spend most of their time just in debugging. Watch full video with attribution.
Algorithm is a word that sounds complex, but the application of it is very simple. An algorithm is a series of steps to complete a task. This video goes a little more in depth on the topic. Watch full video with attribution.
This is the first question we ask at every Day of Code – the start of our Foundations classes: “What is computer programming?”
The answers from students vary from “the language computers can understand” to “I don’t know.” We’re really not looking for a right or wrong answer, but we want to know where our students are beginning their journey with us.
Computer programming is the practice of providing instructions for a computer to follow. That is essentially it. Programmers use different languages to make it easy for computers to follow. And we’re not talking “English” or “French.” You’ve probably heard of fancy names like PHP, C# (C Sharp), C++, HTML, etc.
Computers don’t know what to do without our help. People give computers commands on what we need them to do. Programmers tell computers what they’re capable of doing and users tell computers what they need them to do. It’s a pretty neat relationship. In a way, users are at the mercy of a programmer anticipating the actions of a user. A computer is the tool to carry that out.
Computers are really good at carrying out tasks much quicker than people. Math is an obvious one, but if you need to do hundreds of calculations in a matter of seconds – a computer is really good at that. Better than any of us will ever be.
We ask this question not just to see where our students’ level of knowledge lies. We ask because we want the students to start thinking about what they will tell the computer to do. This is a great ice breaker because in our classes, or at home, we want the students to explore their imagination and try to create something new.
Even in elementary school – our students become programmers. And that’s pretty neat.
There is a lot of debate going on about the future of coding and programming. TechCrunch believes the future is fewer people writing code, and mega-giant corporations like Google are building tools like Project Bloks to help developers, designers, and researchers build tangible programming experiences for kids.
We view the future is programmatic problem solving – not writing code. Not every child who comes through our classes wants to be a programmer or computer science engineer. Programmatic problem solving is cross discipline, and this is the real value of learning how to code. It teaches you to take logical steps in developing solutions to complex problems.
A child learns how to:
Learning to write code, or learning coding practices, is an important educational tool to build on programmatic problem solving. It is not only fun, but it also helps a student understand how technology works and communicates.
For a young student, learning to code can be as essential and exciting as learning how to read. Not every person who learns to read becomes an author. Not every person who learns to cook becomes a professional chef. But you can argue these essential skills help shape the student’s knowledge of his or her capabilities and understanding of the world.
Learning to code, and programmatic problem solving that comes with it, can help a student with every discipline or future career. Our hope is our efforts can prepare each student for the world of the future which is becoming more and more dependent on technology.
Problems are rarely solved on the first try. The more complicated they become, the more trial and error takes place. Programming teaches kids that problem solving is a process not a destination. It’s a life skill that can carry over to any future profession or simply dealing with life’s challenges.
A valuable process computer programmers learn is debugging. It’s an iterative process through your program to learn what it’s doing and find where issues may lie. It’s really a glorified name for trial and error.
Teaching kids how to debug early on sets them up for the more complicated challenges computer programming and life can present. Is your game character not interacting with an object they way you want? Do the numbers not add up? Or does the whole thing freeze?
Debugging code teaches young programmers it’s okay not to succeed on the first or 50th try. What’s important is through each iteration of your process you get closer to the goal. They learn to not fear mistakes.
Solving any complicated problem is rarely done through a straight line. Complicated problems require solving one problem and then the next. Complicated computer programs involve multiple variables, objects, and other moving parts to produce a final result. Sometimes those moving parts will require you to fix something small to get the big result.
Teaching loops in computer programming allows us to bring these principles to our students. We help students manually work through the entire process of the problem. It produces more lines of code, and it helps them see a pattern and see how the pattern solves little problems along the way. Finally, they can translate the pattern into a loop which accomplishes the same goal in less lines of code. Many times they include some form of debugging somewhere in the middle.
The most exciting part of teaching our students problem solving through computer programming is watching that “aha!” moment. When they start asking, “What if?” we start seeing creative outcomes from their work.
I can’t help but wonder what other problems they’ll solve in the future once they learn the process and never fear making mistakes.
We are teaching coding and computer science to children, K-12, and introduce them to new ways to problem solve and explore curiosity and creativity.