After getting started with Scratch last week, this week we are well into the swing of things! By this stage in the project, my first graders are familiar with some of the language of computer science and some of the possibilities it offers. However, this was our most challenging session yet, with a couple of personal and technological problems to solve. But we also learned that overcoming challenges is part of coding! Click the thumbnails and follow the links to get all the resources you will need to teach this session in your classroom.
Today’s learning: The importance of clear instructions.
If you’ve been following our progress, you’ll know that each week we focus on learning something new about how software engineers work. This week’s learning outcome is particularly important. I wanted students to understand that unlike a person, a computer cannot interpret vaguely written commands. In order to give clear commands, students had to first be clear themselves about what exactly they wanted the computer to do. This ties in nicely to other first grade skills, such as planning their writing, thinking before speaking, and solving math problems.
Step 1: Learn about coordinates
To demonstrate the importance of clear instructions, I gathered the students on the mat and called one up to the board to be my ‘computer’. I explained that I was going to give the computer some instructions, and we would see whether the computer could follow them. I drew a large square on the board, and asked the ‘computer’ to draw a Fuzz sprite in the square. Each time the ‘computer’ drew the sprite, I would say ‘no, no, not there, higher up, further left’ etc. We discussed how the computer wasn’t able to understand exactly where I wanted the sprite, because my instructions were too vague.
Next, I drew a grid on the board and labeled the x-axis and y-axis with numbers. After a quick demonstration of coordinates and how they work, I called a second ‘computer’ up to the board. This ‘computer’ had no problem understanding exactly where on the square I wanted the sprite placed, and got it right every time. I placed my coordinates visual aid on the board to remind the students how to use coordinates throughout the lesson. Although my first graders hadn’t used coordinates before, they understood the concept very quickly. However, I think we could easily have spent a whole lesson on coordinates alone if we’d had more time.
Step 2: Using coordinates in Scratch
I showed the students my progress on the game I have been making. This week, I had added several extra sprites (the bug’s food), and added some code to ensure that no matter where I move the bug to, he always returns to his start position when the green flag is pressed. Looking inside the game code, the students could see that the code for setting a sprites’ coordinates is fairly simple. The trickiest part is hovering the mouse over the sprite and reading it’s x and y coordinates from the display at the bottom of the preview box. I displayed printable code blocks on the board for students to refer to throughout the session.
Step 3: Working together
Students split into their groups and worked together to add new sprites, and set a starting position for each sprite. This was definitely the most challenging task for students so far. Although the code was not difficult, sharing a computer was. Some students had better physical control over the mouse than others, and this sometimes caused frustration among group members. To minimize conflict, students decided to add one new sprite each while the rest of their group members watched. We also used ‘talk tokens’ to figure out who had had a turn, and who was still waiting for their turn. Each student received a token, which they handed in once their turn was up. After the session was up, I sat down with the other teachers to work on how we could support student cooperation next time. Hit follow at the top of the page, or follow me on Twitter to stay up to date with our progress!
In our next lesson, we learn about some different roles in software engineering, and the importance of testing our code. Continue to part 5, hit follow at the top of the page, or follow me on Twitter to stay up to date with our progress!