Fidget Spinner
Experience: 1st year, 1st quarter
Practice: Developing and Using Abstractions, Creating computational artifacts, Testing and refining computational artifacts, Communicating about computing
Concept: Control and Algorithms
Length: 40+
Overview and Purpose
Coders create their own fidget spinner sprite using the paint editor and motion blocks to animate their fidget spinner when they press the start on tap trigger. The purpose of this project is to introduce coders to creating their own sprites and the start on tap trigger.
Preparation (At least one day prior)
Suggested preparation
Ensure all devices are plugged in for charging over night.
(10+ minutes) Read through each part of this lesson plan and decide which sections the coders you work with might be interested in and capable of engaging with in the amount of time you have with them. If using projects with sound, individual headphones are very helpful.
Resources for learning more
- BootUp ScratchJr Tips
- Videos and tips on ScratchJr from our YouTube channel
- BootUp Facilitation Tips
- Videos and tips on facilitating coding classes from our YouTube channel
- Block Descriptions
- A document that describes each of the blocks used in ScratchJr
- Interface Guide
- A reference guide that introduces the ScratchJr interface
- Paint Editor Guide
- A reference guide that introduces features in the paint editor
- Tips and Hints
- Learn even more tips and hints by the creators of the app
- Coding as another language (CAL)
- A set of curriculum units for K-2 using both ScratchJr and KIBO robotics
- ScratchJr in Scratch
- If you’re using ScratchJr in Scratch, this playlist provides helpful tips and resources
Getting Started (11+ minutes)
Suggested sequence
1. Review and demonstration (8+ minutes):
Begin by asking coders to talk with a neighbor for 30 seconds about something they learned last time; assess for general understanding of the practices and concepts from the previous project.
Explain to the class we are going to create our own fidget spinner sprites; possibly display a video of a fidget spinner if they are unfamiliar and discuss the motions involved. Demonstrate the sample project or your own fidget spinner project, but don’t display the code.
Review how to open ScratchJr, create a new project, and delete Scratch Cat. Review pressing the plus sign on the left and demonstrate how pressing the paint brush in the upper right corner allows you to create your own sprite.
Demonstrate using a couple of different tools to draw a fidget spinner in the center of the paint editor. Press the checkmark in the upper right corner when completed.
Resources, suggestions, and connections
Practices reinforced:
- Communicating about computing
Video: Project Preview (0:43)
Resource: Paint Editor Guide
Video: Lesson pacing (1:48)
Example review discussion questions:
- What’s something new you learned last time you coded?
- Is there a new block or word you learned?
- What’s something you want to know more about?
- What’s something you could add or change to your previous project?
- What’s something that was easy/difficult about your previous project?
Demonstration suggestion: Don’t explain all of the tools in the paint editor, just demonstrate how to draw a fidget spinner and encourage coders to experiment and share with others what the different tools do. Use the Paint Editor Guide if you are unfamiliar with the tools.
2. Discuss (3+ minutes):
Have coders talk with each other about what kind of fidget spinner they are going to create and what kind of blocks they’re going to use to make it move.
After the discussion, coders will begin working on their project as a class, in small groups, or at their own pace.
Practices reinforced:
- Communicating about computing
Note: Discussions might include full class or small groups, or individual responses to discussion prompts. These discussions which ask coders to predict how a project might work, or think through how to create a project, are important aspects of learning to code. Not only does this process help coders think logically and creatively, but it does so without giving away the answer.
Example discussion questions:
- What would we need to know to make something like this in ScratchJr?
- What kind of blocks might we use?
- What else could you add or change in a project like this?
- What code from our previous projects might we use in a project like this?
- What kind of sprites might we use with our fidget spinner?
- What kind of code might they have?
Project Work (30+ minutes; 1+ classes)
Suggested sequence
3. Create a fidget spinner sprite (10+ minutes):
Ask coders to create their own fidget spinner sprite and encourage them to try out different tools in the paint editor. Facilitate by walking around and asking questions and encouraging coders to try out new tools and creating more than one fidget spinner.
Resources, suggestions, and connections
Practices reinforced:
- Testing and refining computational artifacts
- Creating computational artifacts
Facilitation suggestion: If coders complete their fidget spinner early, encourage them to add code to their fidget spinner or create different kinds of fidget spinners.
4. Code a fidget spinner (20+ minutes):
1 minute intro demonstration
Demonstrate your fidget spinner (or the sample project) without displaying the code. Point out that when you press the spinner, it spins very fast and then stops after spinning for a little while.
4+ minute reverse engineering and peer-to-peer coaching
Ask coders to see if they can figure out how to use their code blocks to create an algorithm that makes a fidget spinner do something similar to what was demonstrated. Facilitate by walking around and asking guiding questions.
1 minute explanation demonstration
If coders figured out how to get their sprite to do something similar, have them document in their journal, share with a partner, or have a volunteer show the class their code and thought processes that led to the code. Otherwise, reveal the code, walk through each step of the algorithm, and explain any new blocks.
14+ minute application and exploration
Encourage coders to try something similar, and leave your code up on display while they work. Facilitate by walking around and asking questions about how coders might change their code so it’s not the same as yours.
Standards reinforced:
- 1A-AP-10 Develop programs with sequences and simple loops, to express ideas or address a problem
- 1A-AP-11 Decompose (break down) the steps needed to solve a problem into a precise sequence of instructions.
- 1A-AP-14 Debug (identify and fix) errors in an algorithm or program that includes sequences and simple loops.
Practices reinforced:
- Communicating about computing
- Testing and refining computational artifacts
- Creating computational artifacts
Concepts reinforced:
- Algorithms
- Control
Video: Suggestions for reverse engineering (4:25)
Alternative suggestion: If reverse engineering is too difficult for the coders you work with, you could display the source code and have coders predict what will happen.
Suggested guiding questions:
- What kind of blocks do you think you might need to do something like that?
- Do you see a pattern where we might use a repeat?
- What trigger blocks do you think I used for that sprite?
- Did I use one trigger block or more than one?
- What makes you think that?
- How can you speed up or slow down a sprite?
Potential discussion: There is not always one way to recreate something with code, so coders may come up with alternative solutions to your own code. When this occurs, it can open up an interesting discussion or journal reflection on the affordances and constraints of such code.
Suggested application and exploration questions:
- What other code blocks could you use?
- What other sprites might use similar code?
- What else could you add or change in a project like this?
- How many different fidget spinners can you make?
- When might we use a start on tap and when might we use start on green flag trigger?
Assessment
Standards reinforced:
- 1A-AP-15 Using correct terminology, describe steps taken and choices made during the iterative process of program development
Practices reinforced:
- Communicating about computing
Although opportunities for assessment in three different forms are embedded throughout each lesson, this page provides resources for assessing both processes and products. If you would like some example questions for assessing this project, see below:
Summative (Assessment of Learning)
The debugging exercises, commenting on code, and projects themselves can all be forms of summative assessment if a criteria is developed for each project or there are “correct” ways of solving, describing, or creating.
For example, ask the following after a project:
- Did coders create a project similar to the project preview?
- Note: The project preview and sample projects are not representative of what all grade levels should seek to emulate. They are meant to generate ideas, but expectations should be scaled to match the experience levels of the coders you are working with.
- Can coders debug the debugging exercises?
- Can coders explain the difference between the start on tap trigger and start on green flag trigger blocks?
- Did coders create at least ## unique fidget spinners that can spin for a limited amount of time when tapped?
- Choose a number appropriate for the coders you work with and the amount of time available.
Formative (Assessment for Learning)
The 1-on-1 facilitating during each project is a form of formative assessment because the primary role of the facilitator is to ask questions to guide understanding; storyboarding can be another form of formative assessment.
For example, ask the following while coders are working on a project:
- What are three different ways you could change that sprite’s algorithm?
- What happens if we change the order of these blocks?
- What could you add or change to this code and what do you think would happen?
- How might you use code like this in everyday life?
- How did you make the fidget spinner rotate?
- See the suggested questions throughout the lesson and the assessment examples for more questions.
Ipsative (Assessment as Learning)
The reflection and sharing section at the end of each lesson can be a form of ipsative assessment when coders are encouraged to reflect on both current and prior understandings of concepts and practices.
For example, ask the following after a project:
- How is this project similar or different from previous projects?
- What new code or tools were you able to add to this project that you haven’t used before?
- How can you use what you learned today in future projects?
- What questions do you have about coding that you could explore next time?
- See the reflection questions at the end for more suggestions.