Teach Kids Coding At Home
Whether you are a parent with a kid who is interested in programming or a homeschooler that knows coding is a great thing for kids to learn, it’s intimidating to get your kids started at home. You may not be a programmer yourself, and it may seem overwhelming when you start looking at all the tools out there! How do you choose from everything available when you are not a programmer? In this article we will look at what it is about AgentCubes that can help you get your kid starting to program and in future articles, we will help you look more deeply at this process as well as other tools out there.
The Path to Programming… New Tools for New Programmers
At AgentSheets, Inc. we are parents, and we are programmers. Since 1995, we have been researching ways to make it easier for non-programmers to program. Some of our earliest work was done with middle school students as well as non-programming adults. We wanted to understand what it was about programming that created a barrier for non-programming experts to model their expertise. That’s how our programming tools were born. We noticed that our tools were allowing middle school students to start programming working games in three hours or less!
What sorts of tools could do this? First, we changed our programming language from text to a visual language that lets users drag and drop the components of the language that they need. This eliminated syntactic errors - that old situation where you’re missing one comma, nothing works, and you want to take a hammer to the computer. Next, we wanted to make sure not to limit young programmers with a simplified visual language. Computer languages are really powerful, and we wanted to let programmers do exciting things fast, but not only simple, predefined things. We included visual tools to allow artificial intelligence, plotting, and more! After that, we created tools to help with the semantic problems of programming. Even if you get all the commas right, your program may not behave correctly. We created tools that talk back to you, to show what will happen next. That makes it easier to make sure the program does what you want.
To the Classroom and Beyond…
Results showed that students were able to begin to program all sorts of things. Our research started to ask questions that went beyond motivating students to learn to program, we wanted to show what learning was happening in the classroom. What is a good way to teach programming and are our tools good enough to allow NON-programmers to teach programming? Teachers, like parents, are not always computer scientists! How can we make sure that students are learning and meeting the emerging computer science grade level standards if they are not programmers themselves?
We were not alone in our research. Around this time, we were receiving research support from the National Science Foundation to study if we could take something super engaging for kids - that is, creating computer games - and teach them to learn programming while having fun. We found that YES, we could! Students loved it, teachers loved it, and a whole bunch of them created teaching materials to download and share! The consensus? If you start with some fun, classic arcade games - such as Frogger, Pac Man, Journey, etc. - and progress through them, you can teach enough programming that students can begin to make their own simulations and models. Simulations of ecosystems, forest-fires, even contagious diseases. The Scalable Game Design Path to Programming was born.
You see, we learn programming in chunks of behavior. Programmers call these little chunks of behavior or code algorithms. As we’ve mentioned in a previous article, algorithms are like recipes - recipes that tell you how to make a program behave like you want. How do you get your character in a game to move through the game as you tell it to? That’s Cursor Control. How do you make more bunnies appear in a Rabbit-Coyote population ecosystem simulation? We call that Generation. How do you get a rabbit to disappear when a coyote eats it? Absorption. And so on… It turns out we can measure what students learn by how many of these little recipes they can master. For that reason, we call them Computational Thinking Patterns.
Computational Thinking Patterns (CTP) to the Rescue
By this time, it was really a wonderful time in the research world! Computational Thinking Patterns are everywhere in programming. By breaking things down into smaller chunks of particular ways of teaching programming and the abstraction and logic that it requires, we can help students to think computationally. Research shows that this is a very good thing. Students who can abstract, and break tasks down into smaller pieces that they can then produce begin to enjoy all the benefits of learning coding: (link to benefits article).
We found that by teaching kids to program classic arcade games like Frogger, then Journey, then Pac-Man, with behavior that includes things like Cursor Control, Generation and Absorption; Diffusion (when a character gives off a ‘scent’) and Hill-Climbing (when a character uses that scent to give chase and find another character); Polling (checking for items on a game board) and Broadcasting (sending a message to some or all characters in a game), and even things like Collision, a student can then use these Computational Thinking Patterns to create models and simulations for science classes (ecosystems, etc), social studies (disease spreading), and much, much more.
Beyond… Tools for Creating Programmers
Computational Thinking Patterns are finite, understandable things that can be measured! So, for that reason, we created tools that look at a student’s programming and help determine how much mastery a student has achieved in the desired CTPs, as a percentage. AgentCubes shows visually how similar a learner’s game is to one created by a professional. It’s fun to watch your progress as you are making games.
The more CTPs a student masters, the more motivated and able they are to create more and more complex and intricate models and simulations. When students are ready to move on to other programming languages and environments, our visual language can take a student’s program and convert it to Java, so progression to text-based languages is scaffolded and all of the skills learned in AgentCubes can transfer. AgentCubes can help create a bridge to new frontiers and skills.