Blog articles written by Eric McNeal where I discuss everything and then some.
Computers are ubiquitous and just as instrumental today as books have been for centuries. No one would disagree that you must be able to use a computer regardless of what industry you decide to pursue. And fortunately, young people today are extremely comfortable working on computers.
I agree that it is not necessary to be proficient at programming to express one’s self using a computer and to create awesome content. I also agree that you shouldn't simply force feed complicated computer languages on children simply because the computer language is in high demand today and there is a dearth of qualified programmers for corporate America to choose from. As a nation, we should not be trying to create quick fixes for corporate America.
Our goal should be to properly educate our children. If we accomplish that primary goal, then it will not only benefit corporate America, but it will also benefit America as a whole. Therefore, I caution against taking a band aid approach to teaching children by stuffing them into programming boot camps where they learn a particular programming language at the expense of reading, writing, mathematics and other liberal arts that are all a part of a meaningful education experience.
What I propose is that primary and secondary school systems begin to incorporate algorithm courses into their core curriculum. This approach differs from simply teaching a programming course and teachers do not have to become proficient in programming languages to teach a basic algorithm course. But the beauty is that as a child learns algorithms they are also inherently learning to code a computer.
This approach simply uses a basic interface that incorporates a pseudo language. A pseudo language consists of instructions intended for a computer that humans can easily understand.
For example, I am a strong proponent of an interactive system called Scratch (scratch.mit.edu) that was developed by the Interactive Media Lab at MIT. There are other wonderful systems such as Alice (alice.org) that was developed by Carnegie Mellon University, but I can appreciate unintimidating interface of Scratch. Any competent adult with absolutely no programming knowledge whatsoever could begin working on it with a group of children after a day of instruction or simply by reading through the instructions themselves.
Don’t worry, most of these tools are absolutely FREE! In fact, I would avoid any tool that isn't free since there are so many excellent free tools that exist. So, even if your school doesn't yet offer algorithm courses as part of their curriculum you can register for a free account and begin using these systems at home.
The premises is simple. To make a character perform some type of action, you simply click Lego type blocks together. The blocks contain computer instructions. As the child put various block combinations together he or she can click the play button to see what happens. Then the child can make changes accordingly.
Therefore, if the child wants to create a story, she has to break this story down into manageable tasks. She then has to describe each task precisely to the computer since the computer doesn't have human understanding.
The immediate feedback loop, referred to as testing and debugging is a powerful learning incentive. No one is burdened with trying to force the child to think. However, the child forces herself to think because she wants to see her story come to life.
Not only is this an addictive way to learn for children, but it also addresses the deficiency of logical problem solving skills that is so evident in many young people today. While mastering Scratch (or a similar tool), the child is developing critical thinking skills, analytic skills, and problem solving skills.
Furthermore, the more cool things the child wants his or her program to accomplish, the more math they will have to master. And I can tell you from personal experience of going down a similar path myself many years ago as a child, that children will master any concept if it allows them to create the program they are trying to create. This means concepts such as sine, cosine, and tangent, that seem abstract and foreign when taught in a math class become fun and relevant because it allows the child to tell their story or to complete their game. In essence, the child is not learning in a vacuum and the concepts now have meaning and application because they make the child’s program work the way that he or she wants it to work.
In my humble opinion, programming is the ultimate learning tool. The right programming environment takes the child beyond the text book or lesson plan. And the skills that a child will master to understand algorithms are the same skills they’ll need for the rest of their lives - breaking large problems down into manageable tasks and precisely communicating those tasks to a third party to get them to accomplish the tasks, and finally assembling all the individual tasks together to create the desired outcome. If the desired outcome is not what was expected, they must then use logical reasoning skills to determine what went wrong, make necessary changes and try again. Isn't that what we do in life? Then life looks a lot like programming.
Therefore, mastery of algorithm courses will help children with all subjects. To write a program the child must clearly articulate and communicate their thoughts and in many cases will have to use mathematical deductions to accomplish their goals. Reading, writing, and mathematics now becomes easier to understand to children because they are learning to think. And at the end of the day, thinking is the key to learning.
My next blog will deal with how schools can incorporate algorithm courses into their core curriculum with minimal cuts to their current core curriculum.