Education Trends

5 More Principles to Radically Transform How We Teach Computer Programming

October 21, 2015 Updated January 28, 2013

Your content has been saved!

Go to My Saved Content.

Following the previous post about teaching programming languages to kids, here are five more strategies which we are using in our trials at feynlabs. Our goal is to maintain young people's interest in learning programming so that the participants will acquire enough depth to take independent steps beyond what they learn. As usual, I welcome comments and feedback

6. Use Hacking as a Fundamental Teaching Tool

We often start teaching new students about code by writing new programs. However, we don't emphasize modifying existing programs. Yet, in many real-life instances, we often spend large amounts of time modifying existing programs. The ability to make small, incremental changes to an existing program is a valuable tool to learn programming, especially because it provides a quicker payoff. It is a softer way to start programming and to focus the mind on specific changes.

Here is an example. I used a program on the Web called w3schools9 to introduce my then eight-year-old to JavaScript. When he saw code for a simple alert box for the first time, he quickly made it into a prank by changing the message text to a shutdown alert (an error message). In other words, he did not write the program but instinctively understood what it could do and saw the value of modifying it to create another function. Modifying programs instead of writing them from the start could thus be a simple and effective learning tool.

Credit: Ajit Jaokar
w3schools Code for Shutdown Alert

7. Start with One Programming Language But Don’t Limit Yourself

To teach programming, you have to start with a specific programming language -- but you need not confine yourself to only one programming language. The popularity of programming languages is based on various factors which are often commercial. Thus, in the '80s, if you started learning programming, you used Basic/Pascal. In the '90s, you may have used Java or JavaScript, and so on. Today, as computing continues to evolve, there are many programming languages which are popular. Teaching only one gives a limited perspective. Also, thanks to the Web, it is now possible to look at more than one language. This idea lays the foundation of our work in teaching concepts of programming languages to kids.

8. Use Multimedia for Learning and for Content Creation

Most people would agree that multimedia plays a major part in education today. On almost any given topic, you can find some great video on the Web for free (on YouTube, for example). However, multimedia -- and especially video -- can be used as a content creation tool. We are using this approach in a trial where we create video with ScreenChomp10. The advantage here is that in creating video, participants learn programming concepts and techniques in a much more dynamic way. This reduces drop-off rates.

9. Separate the Exceptions from the Rules

Programming is taught linearly, topic by topic. But it could be easier to teach in two passes or stages -- first the core idea and then the exceptions. This makes it easier to get the basic idea first and then build upon it subsequently. For example, explaining passing parameters by reference vs. by value11 to a function can quickly get complex. Hence, it is easier to first explain parameters and functions and then come back to more complex topics like passing parameters by reference.

10. Discuss Learning About Learning

Finally, in all learning it is important to understand "learning about learning." There are three phases of learning. First is the aptitude/interest stage, when the educator either recognizes the student's inborn aptitude in a subject or fosters the student's interest in it. Essentially, all the work we are doing at feynlabs is in this stage.

The second stage is the apprenticeship stage, where the apprentice engages in extensive training under an expert. In Star Wars, the apprentice is the "padawan," and this three-stage process is enshrined in Jedi training.

The third stage is the mastery stage, where the participant is able to see the complete picture and recognize interconnections between components such that she can extend her existing body of knowledge. For example, Charles Darwin embarked on a voyage to South America. In doing so, he collected so many specimens that a theory began to form in his mind where he was able to see connections between specimens which others could not see. This is the "mastery" stage.

In teaching computing and programming, here are some observations:

The Key to Future Innovation

To conclude, why should we rethink and accelerate the way programming is taught?

Programming as a skill will be critical to the economic prosperity of future economies. There is a fundamental shift towards "knowledge-based creative activities,"13 which will be driven by computing and programming skills, since programming allows you to think, hack objects and create. Hence, it is a fundamental skill to future innovation.

I welcome comments and feedback below or at Ajit.jaokar@futuretext.com.

Notes

9 http://www.w3schools.com/
10 https://itunes.apple.com/gb/app/screenchomp/id442415881?mt=8
11 http://stackoverflow.com/questions/373419/whats-the-difference-between-passing-by-reference-vs-passing-by-value
12 http://rheingold.com/netsmart/
13 http://www.forbes.com/sites/elainepofeldt/2012/12/28/want-to-recession-proof-yourself-join-the-creative-class/

Share This Story

  • email icon

Filed Under

  • Education Trends
  • Career & Technical Education
  • Teaching Strategies

Follow Edutopia

  • facebook icon
  • twitter icon
  • instagram icon
  • youtube icon
  • Privacy Policy
  • Terms of Use
George Lucas Educational Foundation
Edutopia is an initiative of the George Lucas Educational Foundation.
Edutopia®, the EDU Logo™ and Lucas Education Research Logo® are trademarks or registered trademarks of the George Lucas Educational Foundation in the U.S. and other countries.