In the same sense that studying English isn’t just about learning vocabulary words, studying computer science isn’t about learning programming languages. Programming is very abstract, it is a way of communicating with the computer, and the language defines the scope of what you are able to create – some languages are designed for crunching numbers, others creating graphics, and everything in between. Since children learn to code primarily through projects, the choice of which language to teach them is very important.
The Benefit of Starting with Scratch
Scratch doesn’t require typing like most programming languages. Instead, scripts are constructed by dragging small building blocks of code and stacking them together. Children with rudimentary typing abilities still have the opportunity to learn programming fundamentals with Scratch.
It is tightly integrated with the on-screen graphics so that students can see the results of their program instantly. From day one kids can create exciting games in Scratch, while in traditional languages like Java and Python, more buildup is required before seeing the results of their effort.
(See Learn Programming with Scratch for more information.)
What’s to gain from eventually switching languages?
Why is there a need to transition out of Scratch and into a typed programming language like Python or Java? Though Scratch has many benefits – particularly as a teaching tool – it also has its limitations.
Drag-and-drop languages are very structured and rigid with what you are allowed to do. By comparison the possibilities in typed languages are almost limitless. The freedom that a typed language gives to a programmer can initially seem overwhelming, but starting in Scratch greatly helps to ease the transition to a more powerful language like Python or Java.
These languages abstract less of the inner workings of the computer away from the programmer and require a much more in-depth knowledge of concepts. While one might be able to get away with only a tenuous understanding of a topic to use it to solve a problem in Scratch, this is not the case in a typed language. However, once the fundamentals are mastered, the programmer can use Java or Python to create anything they can imagine.
When is the right time to switch?
The trickiest part of all of this is knowing when a student is ready to transition from Scratch to a typed language. The timing of this transition varies from student to student as there is a fine line between perfectly challenging the student and getting them in over their head.
We start to transition away from Scratch once the student shows mastery of certain key concepts. To demonstrate mastery, they must be able to independently apply a concept used in one situation to solve a problem in a completely different situation. This shows they understand the fundamental building blocks can be used in many different ways to achieve different results.
Generally, if we can continue to make Scratch challenging and produce new insights into the concepts, we will keep with the drag-and-drop programming. But at some point it will feel too restrictive and the student will need new challenges.
Building a base of early success
Once we’ve started with a typed programming language, it’s vitally important that a student experiences numerous quick wins to provide positive reinforcement that they can do it. In order to ensure this happens, we’ll temporarily regress the conceptual load of the projects compared to what they were doing in Scratch.
When we introduce new concepts in Java or Python, we relate the new ideas back to what they did in Scratch. As mentioned earlier, Scratch abstracts much of the implementation of the language away and typed languages are a great opportunity to “pull back the hood” to really get into the details.
The graphical nature of programming languages isn’t just limited to Scratch. One of our goals is to introduce the graphics libraries of typed languages as quickly as possible. This allows them to be challenged while being able to see the results of their efforts.
When is the time right for your student?
Breakout Mentors has made this transition with several dozen students and continues to monitor the progress of the kids currently working in Scratch. Knowing exactly when to make the switch to a typed language is just one of the many reasons why you should not take a one-size-fits-all approach to coding education. In this case, a personal mentor is more valuable than the “perfect” curriculum.
This article is by Austin Gandy, one of our exciting programming mentors. He is a junior at UC Berkeley studying Computer Science and has been a mentor for a year and a half.