We want to help teach coding to every child in the world. With the conviction that Anyone Can Code, Penguin Coding School has developed an unique curriculum that emphasizes creative motivation for learning. We believe coding is a lifelong creative endeavor, not just a means to getting a lucrative job. In terms of methodology, we place primacy on face-to-face interaction with human teachers, as opposed to online-only schools.
Penguin Coding believes that motivation is key to learning. The most compelling motivation for learning to code is that coding enables building something of the kids can call their own, whether its a game or website. I want the kids to feel that the sky is the limit in terms of things they can create if they learn the principles of coding, just like knowing a few chords on a musical instrument enable playing infinite variations of music.
As parents looking to get our kids to learn coding, there are basically two options today.
One approach is to simplify the material and use special software so that basic coding principles can be taught by dragging and dropping blocks on a screen. Scratch, which was developed by MIT Media Lab, is one such programming language, and is often used by after school clubs and STEM sounding summer camps. I think the Scratch programming language itself is well-built and is a great tool to expose kids to programming concepts before they learn to touch type. My experience with my own kids at these STEM sounding summer camps and after school activities was that it was interesting for that one week or semester, but didn't quite expose them to "real coding." They thought of coding as an activity inside a black box (like apps) and not something you can create from just typing in plain text.
The second approach is the high school AP Computer Science class approach, which is to teach coding like any other academic subject and teach principles from a textbook, and then give the students lots of problem sets to work on. This is how most computer science courses in high school and university are taught, and they use C or Java as the programming languages. The problem I see with this approach for most kids in grades 4-8 is that C and Java are difficult languages to learn with a lot of extra effort required before students can see the fruit of their labors in actual programs that do things beyond being a calculator or say Hello World. If the sole purpose for taking coding at an early age is to get them into AP Computer Science, this might be a good approach, but I fear you will create an impression among most kids that coding is hard and boring before they discover what they can do with it.
The approach that Penguin Coding tries to take is based on my experience in Silicon Valley and the coding curriculum that has been developed for adults who are trying to learn coding as a career transition. The curriculum for the coding bootcamps are very practical and always based on building something first, and then learning the principles behind what it took to build that. So instead of learning about loops and object oriented programming as a principle in a text book and doing a bunch of problem sets, you start writing code for a website or app, and then discover through experience why it would be useful to incorporate loops and objects into your program.
At first this experiential discovery method may seem inefficient as you end up re-writing code over and over to improve it instead of having the right answer from the beginning. But this iteration is critical for important concepts to really sink in and actual learning to take place. It is actually how professional software developers code. No software engineer knows every computer principle and programming trick by heart. They know enough to try different methods until one succeeds, or know enough to ask the right questions to the right people that can help them. Looking up an answer online is not something that is considered cheating, its an essential part of the job description.
What makes this approach "worth it" for the kids is that at the end of the road, they see that their code actually does things in the real world. Not in some play pen, but in the real Internet where anyone can access it. There is always a trade-off of how much you teach before letting them just do it, but that often depends on the level of the student's understanding and proficiency.
Penguin Coding believes that Anyone Can Code, which sounds like a glib tagline. But its based on the belief that coding does not require a math and science mind to excel. It is often taught using math & science methods because the educators and people associated with coding are often math & science people. But I believe it should be taught more as a skill like cooking or music, where anyone can enjoy, even if you never become a master chef or professional musician.