Physics in Scratch

Model Gravity, Force, and Acceleration using Scratch, an online visual programming environment.

The final project can be seen here:

A great resource for getting started with Scratch that is available in both English & Indonesian:

Bahasa Indonesia:

Authored by
Will Luna & Trang Ngo, Tufts University CEEO 2015

Big Idea

Simulations can be a great way to teach students about concepts in physics. However, the necessary level of mathematics and coding is usually too high to bring into a high-school curriculum. Scratch makes code much easier to understand, enabling its use in younger classrooms. It can be used with Arduino and LEGO MINDSTORMS, and may be the only programming environment in Bahasa Indonesia.

The assignment is difficult, but by letting students use the Scratch web site to find previous examples of physics modeling, they can both acclimate to the syntax and find solutions before getting frustrated.

This post is more focused on presenting Scratch as an educational resource to teachers than working through a specific assignment.


Scratch was developed by the Media Lab at MIT to make programming more accessible for younger students. It can be used online or downloaded (both are free) at

Try looking up different topics (such as Math and Chemistry) on the Scratch web site. There is a huge community that makes games, lessons, and animations to teach new concepts everyday.

Bahasa Indonesia

Any project in Scratch can be translated into a number of languages, including Bahasa Indonesia. See the orange globe on the top-left corner of the screen?

Pressing that button will show a list of languages:

Clicking on Bahasa Indonesia will translate the entire project!

This can help students enormously who do not have a strong background in English.


The assignment was to model a concept in physics using Scratch. While we could use the web site to look up examples, the final project had to be our own.


We looked up "simple physics models" on the site, and saw some interesting projects, such as:

  • A cannonball being launched from a cannon, at different heights, angles, and speeds
  • A ball being dropped, with different 'bounciness' and gravity
  • A ball thrown against a wall


We felt that modeling a ball being dropped and bouncing against the ground was the easiest option, considering that the ball could only move in one dimension (up and down). We had recently studied gravity, and were confident that it would not be difficult to model its effect on the ball with code and mathematics.

However, by looking at the code of other, similar projects on the Scratch web site, we knew that enough resources existed to prevent us from getting stuck.


We started by defining all the variables we would need (gravity, max y velocity, etc) at the beginning of the program. We then created a simple loop that would constantly affect the position of the ball based on gravity and 'bounciness,' variables which we abstracted and would define later on.

Gravity was not nearly so hard to code as 'bounciness,' which has to take into account both the downward acceleration/velocity acting on the ball, and the upward force that affects it when it comes into contact with the ground. It took some troubleshooting to make a realistic model, and our final assignment mimicked, but did not replicate, how the process occurs in the real world.


Students can always add more physics into the simulation. Some additional challenges include:

  • Make it so the ball can be moved left and right with the arrow keys, figuring out the physics of bouncing off the walls
  • Add a second ball, that can be dropped with its own gravity and bounciness
  • Add horizontal velocity to the ball, so it is launched rather than dropped

Looking on the web site is a great way to come up with new ideas! Scratch has a number of resources available for Math topics as well.