Pages

Saturday, December 13, 2014

This week is Computer Science Education Week and many schools throughout the country have been participating in Hour of Code and thus I have been getting lots of questions from my friends on what resources are good for learning how to computer program.

Fortunately there are lots of wonderful resources out there. Unfortunately learning to code is intimidating and complicated and it is easy to become overwhelmed. Many people have a specific idea of what they want to make but then realize that they are going to need a lot of background knowledge before they can even begin to think about implementing their idea.

The resources are code.org, the site that is the center of the Hour of Code week, are great and there are easy to step through lessons. But many people and children have a hard time making the connection between the visual drag-and-drop language provided on code.org and "real" text based languages like Java, Javascript, Objective-C, etc.

Alternatively if you pick up a learn-to-code in language-of-your-choice book, almost always, it is complicated and makes an assumption that the reader already know something about computer programming. Essentially I have found that the materials currently available, neglect to explain clearly some of the most basic concepts of computer programming and thus create an unnecessary hurdle for the beginner.

Over the years I have been reading information on what makes a person successfully learn and/or struggle to learn computer programming and the two things that stuck out for me are:

1) People who never master the ability to write code, never grasp what variables are and how they work. Since variables are the most fundamental building block in writing a program, this is a huge problem. It is also very understandable because it is typically a topic that is breezed over very quickly.

2) People who are successful coders do not dwell on trying to find meaning where it doesn't matter. Computers simply follow a set of rules and it doesn't matter if the rule looks like gobble-dee-gook to a person. When a computer sees a specific word/letter/symbol etc it does whatever the associated rules are for that word/letter/symbol are. Often the original meaning or intention behind the word/letter/symbol is no longer valid or relevant. Some people have a hard time getting over the meaninglessness that is frequently found in computer programming languages.

Thus when my seven year old said that she wanted to write "real" code I didn't use any prepared material and simply took out a white board and started explaining very simply what variables were and how they are used. I wasn't sure how much she would be able to grasp as her math knowledge is pretty limited, but amazingly she understood and started writing code and making her own simple programs. We continued learning about if statements and looping structures. I have also started teaching weekly lessons in her second grade class to groups of six or seven students at a time. In starting simply and explaining thoroughly the kids have been able to understand and write code in "real" text based programming languages.

Thus confident in my ability to explain these concepts I have started making a series of videos that are designed to fill in the missing information. The videos are designed for beginners who are planning on taking a computer science course, or those who want to learn a specific language but get overwhelmed at the books they have picked up. The videos are also good for kids either before or after they have worked through the lessons on code.org to help connect the relationship between visual programming languages and text based languages.

One thing to keep in mind is that learning how to code is similar to learning how to write or draw. It is something in which there are a wide range of skill levels and in which mastery takes years of practice and study.

Here are the first few videos in the series. The whole series will be released as an app and/or website. If you want to be notified when the full product is completed you can sign up here. I will not sell, rent, or trade your email address. I will only use it to notify you about the status of this project. I am estimating that the final product will priced at $10.

How to Create Variables

How to Change Variables

How to Name Variables

An Example Program that Creates and Changes Variables

In the meantime here are other good resources for learning how to code:

Code.org - This is a curriculum that uses a visual programming language (ie a drag-and-drop language that you don't have to worry about syntax errors), and helps develop the ability to think logically and use programming logic structures.

Scratch - This is another visual programming language that has been around for quite a while and allows you to create programs via a website.

repl.it - A website that allows you to run code via a website, meaning you don't have to go through the complicated steps of installing a development environment and thus very nice for classroom environments. I think Lua is the best language to use in this environment.

w3schools - Lessons and tutorials for web programming. They also have an interactive display that allows you to write code and see the results directly from a browser.

Floors - For a free, easy lesson in video game design there is an app called Floors that lets you create Mario brother style video games by drawing the levels on an iPad.