Penguin Coding School

View Original

What programming language to take after Scratch?

Scratch is a great tool to get young kids to start coding. Developed by MIT, it allows students to code games and animations without having to type a single line of code. Drag and drop blocks of code and you can make pretty amazing games and art.

However, after a while kids will find that they have exhausted the possibilities of Scratch. While there are teens and adults who have created ever more sophisticated games with the elementary tools provided on the site, eventually you hit its limits. It is after all a toy. Sophisticated and powerful, but it is still a sandbox.

Because it allows non-typing kids to code, kids as young as 5 and 6 years old can become quite sophisticated coders.

But where to go next? There is no easy transition language from Scratch. While there are other drag & drop languages, you get a lot more freedom and the sense of “real coding” if your child can transition to text-based programming.

Javascript

Penguin Coding teaches three post-Scratch languages. Roblox (Lua), Javascript (Gaming) and Python.  Each has pros and cons for a young student learning coding.  We teach HTML and Javascript as a project-based course where the students work on a single project for 8 weeks.  Each week they will add a feature to the project.  In Web, they build an interactive Website and in Gaming they build a web game with complete features.  The coding fundamentals are interwoven into the project.  

HTML and Javascript are great languages to allow students to see a visual representation of their coding. Because it is so easy to put up a web page, with a few lines of code the students will see that they’ve built a webpage from scratch. Instead of learning the ins and outs of HTML tags and Javascript minutiae, we jump right into making games and art, the same way Scratch was such a great introduction to coding.

If a computer programmer tells you that Javascript is not a real coding language, they haven’t been in the industry the last 10 years where many apps and enterprises run some of their most critical apps using Javascript.

The problem with HTML and Javascript as a coding language for young kids is all the punctuation marks they have to type. They have probably never used a { } or a < > outside of math class. In both these languages there is a lot of typing involved and unfortunately, spelling and proper punctuation matters in coding - a lot. We have noticed that kids become much better typers and their typing speed markedly improves as a result of coding education. Which is a great advantage in school where every assignment now requires typing, even in third grade.

Python

You have no doubt heard for Python. It is the “hot” programming language today. It is used in data science, AI and machine learning. Python is also a good beginner language because its simpler to type. A lot of punctuation marks were removed from the language and it reads more like regular English. There are very strict rules concerning indentation - which is usually very confusing to kids because when does indentation ever matter in school? But once they get a hang of that, there is actually less to type in Python.

The con of Python as a coding language for kids is that there are some limitations on what you can do with it to play. Video games are usually not written in Python and while there are libraries that you can use, it takes a lot of learning to get to a level where you can make a decent video game with Python. Penguin Coding School has invested a lot of curriculum in developing fun games for students to build with Python, but if Gaming is why your child wants to study coding, we would not recommend Python as the first language.

Our Python for Elementary School is taught more like a traditional class where each 60 minute class has a lesson plan and a specific concept we'd like them to master. There will also be a small amount of weekly homework.  

Roblox (Lua)

Learning to program in Roblox means learning the Lua scripting language. Lua is a scripting language and the syntax is like Javascript  and Python put together and divided by two. Because kids are most likely familiar with PLAYING Roblox, they may be more excited to learn Lua than either Javascript or Python. While Lua is not as widely used as Javascript or Python, the important thing is to get kids excited to learn coding, and being able to create their own custom animal pet or magical sword may be just the ticket. 

There is another issue, which is that to program for Roblox, you have to use the Roblox Studio platform, which can be quite difficult to navigate for a child.  This is why Penguin Coding School's Roblox classes are popular because the teacher can gently guide kids on how to use the tool.  Once they figure out how to use the tool, the programming in Lua can be quite easily mastered and there are many sample codes to follow.  

One other thing to watch out for is that many YouTube tutorials on Roblox coding are outdated because the Roblox development team is constantly upgrading the Roblox Studio platform and the use of the Lua language can change quite a bit between versions.  So again, it would be useful to sign up for a class where the student can start to figure out how to take an outdated tutorial and adapt it to the most current version (adult developers have to do this all the time!).

Project vs Class-Based

The two approaches (project-based vs class-based) offer something different for each child and so it really depends on the student's preferred learning style.  Project based approaches (Javascript & Roblox) can get a student previously unaware of how much fun coding can to get motivated and work on a project on their own for weeks.  Project based curriculum was first adopted by adult coding bootcamps that have been successful in turning non-coders into coders, and we have seen this work for hundreds of young students as well. 

Traditional classes (Python) are great if your child prefers learning things one step at a time. Students also have more freedom to explore various aspects of coding without having a blue print to follow.  Homework exercises reinforce a particular concept and some students like the feeling of accomplishment by checking off each milestone in their learning path.  Students do have to be more patient in this approach because it takes at least a few weeks before they know enough to build anything beyond a simple if then statement.