Skip to Content

From Scratch Curriculum User to Scratch Curriculum Writer

From Scratch Curriculum User to Scratch Curriculum Writer

I have used countless prefab Scratch curriculums for many years. I have had the pleasure of simply following step-by-step directions, which has worked out really well. However, recently, after having a vision of creating cross-curricular Scratch programs, I took it upon myself to tackle the task of creating a math curriculum that could be taught using Scratch. I quickly realized the difference in thinking like someone that uses Scratch to someone that creates with Scratch.

Initially, I felt really good about my potential venture but soon felt overwhelmed. However, it was not until I felt completely defeated that I took a few steps back, and rethought my approach. I have now pursued the same vision but from a different angle, which has made the process so much easier. In this article, I share a small glimpse of my process. I hope that this will inspire readers of this article and Scratch Educators to tackle these types of projects themselves (creating your own content-area curricula using Scratch). The more Scratch Educators the develop content, the better and more abundant curriculums will become!

What Did I Want To Make?

Initially, I wanted to make an all-inclusive Triangle program that would be able to take any angle/length inputs from the user in order to show the user the necessity of understanding the fundamental rules of Triangles such as; all triangles have three sides, all triangles have a sum of 180 degrees, the length of the third side of a right triangle can be calculated by using Pythagorean Theorem, etc.


Lesson One: It’s not as simple as it looks!

After about six hours of tinkering, debugging, and starting over, I realized that this is actually a pretty large undertaking and would take some time to refine.


Lesson Two: Creating a cross-curricular lesson in Scratch is about supporting students in understanding programming AND the subject content

A second thing that I learned through this initial process of asking myself “what do I want to make as a Scratch Educator?!” is that there are two learning components happening in parallel when designing a math-based Scratch project for the classroom. One is the mathematical side of the lesson and the other is the programming/logic side. I thought that the two would work hand-in-hand but now believe, at least with a complex project such as this, each would need to be thought out and designed in parallel and taught as a single project rather than an all-inclusive project. The reason for my assumption is that the programming logic skills needed to develop a program far exceed the simplicity of the subject being taught. For example, one would need to fully understand triangles in order to develop a project that would be able to handle all corner-cases to avoid error or bugs given any user-input that would produce something that is not a copacetic triangle by definition. Therefore, one containing the programming logic skills to develop such a program would need to be academically beyond the basics of triangles. 


What did I actually make?

With my sights on creating an all-inclusive program that could handle "all things triangles," I ended up making a single-use product that can serve students only looking to learn about Right Isosceles Triangles. This program works well and is definitely a great starting point. Now that I have the base of this functionality, I feel as though adding in further operational features would be less rigorous as initially creating this program.


What would I change?

I would change the idea of what I want the end product to look like. In order to teach mathematical shapes and creative programming concepts in one swoop, I will need to find a way to make the programs more user-friendly. I think that another approach would be to have the program start out simple and have the students create and add iterations to the same program as they move through the math class. Therefore, when the students start with “line graphs,” etc. the basics of drawing lines and arrows, and moving the character around the screen could be taught. As the students progress, they could use functions that they have already created and build upon them by abstracting away more and more so that by the end of the school year the students have a very large, comprehensive project that they have built along the way. I think that my initial approach was kind of like the MIT approach of teaching as if the students were drinking from a fire hose.


Lesson three:  Start simple and then introduce scaffolding for students to make increasingly complex programs.


What will I make moving forward?

I am actually more excited about this project knowing that I failed the first time. As Thomas Edison said when asked what it was like to fail the first 1,000 times he tried to make a light bulb, “I didn’t fail. I successfully discovered a thousand ways how not to make a lightbulb.” I think that if developed as a step-by-step process that iterates throughout the school year, this could be successful. For example, Step 1: Learn how to draw a line and control the character (pen). Step 2: Learn how to make angles. Step 3: Learn how to make angles in such a way that the character ends up at the same spot where they started, effectively, “closing the loop.” Step 4: Learn how to take simple input from a user. Etc. etc.


Lesson four: Failure is not scary as long as you progressing forward, learning from your mistakes along the way.

A great secondary effect of having the students create these projects as they move through the school year is that they will not only have a self-contained portfolio of both their mathematical education but also the progression of their programming abilities. This program will also serve as a great study resource considering that the program will ultimately include user input, which when using the program, they can challenge their mathematical knowledge.


Final reflection

I would like to reflect on my decision-making process based on what I perceived to be an initial failure to my math project. Initially, I felt that I could create a dynamic math program that would address all educational aspects of teaching triangles. However, I quickly found that the programming logic necessary for such a project is non-trivial and requires a lot of trial and error. After hours and hours working, reworking and debugging my code, I decided to take a step back from this project for a few days.


Once I cleared my head and was able to reboot my brain RAM that was cluttered with the repetitive ill logic that was preventing me from having my breakthrough I was able to create a program that is much more efficient.


This program,, takes in axis-coordinates and produces a first triangle based on the first set of axis-points, and then allows one to create a second triangle either by Reflecting or Translating it (still developing, but almost there). This program could be developed a lot further. I will continue to work on it but feel much more at ease with this program than the previous. Ultimately, I think that my roadblock was a result of my trying to do everything at once. It wasn’t until I decided to do something as simple as just taking in axis-points that I was able to work through the logic more clearly.

Lesson Five:  Take baby steps- You don’t have to do everything at once!