Creating a robot capable of safely navigating its environment without human intervention has been a goal of engineers ever since they first conceived of robots nearly 50 years ago. Despite rapid advancements in technology, however, engineers did not succeed in the task of designing autonomous robots until recently. This video segment adapted from NOVA follows two teams as they push their engineering design skills to the limit to develop systems that allow cars to drive themselves in the 2005 DARPA Grand Challenge. This video comes with discussion questions. This video can be played during a lesson on creating an algorithm to solve a problem as a collaborative team.
This activity introduces the idea of “divide and conquer” using a fictitious but serious problem – a pair of dirty socks have accidentally been wrapped in one of the presents that Santa is about to deliver, and he needs to figure out which one to avoid a child getting a nasty surprise.
You can either play the video (linked in the activity) or download the PDF of the book (see the PDF files in the link to the activity) to read aloud or give to students.
The solution in the story points out that when there are 1024 boxes to test, instead of having to open all of them until the socks are found, one half can be eliminated at a time, and repeatedly halving the problem very quickly narrows it down to one box (the size of the problem starts at 1024, then with one weighing there are 512 boxes, then 256, 128, 64, 32, 16, 8, 4, 2 and 1.) This idea comes up frequently in the design of fast computer algorithms.
Computer programs often need to process a sequence of symbols such as letters or words in a document, or even the text of another computer program. Computer scientists often use a finite-state automaton to do this. A finite-state automaton (FSA) follows a set of instructions to see if the computer will recognize the word or string of symbols. We will be working with something equivalent to a FSA—treasure maps!
The goal of the students is to find Treasure Island. Friendly pirate ships sail along a fixed set of routes between the islands in this part of the world, offering rides to travelers. Each island has two departing ships, A and B, which you can choose to travel on. You need to find the best route to Treasure Island. At each island you arrive at you may ask for either ship A or B (not both). The person at the island will tell you where your ship will take you to next, but the pirates don’t have a map of all the islands available. Use your map to keep track of where you are going and which ship you have traveled on.
Computers are often used to put lists into some sort of order, for example, names into alphabetical order, appointments or e-mail by date, or items in numerical order. Sorting lists helps us find things quickly, and also makes extreme values easy to see. If you sort the marks for a class test into numeric order, the lowest and highest marks become obvious.
If you use the wrong method, it can take a long time to sort a large list into order, even on a fast computer. Fortunately, several fast methods are known for sorting. In this activity, children will discover different methods for sorting and see how a clever method can perform the task much more quickly than a simple one.
To make computers go faster, it can be a lot more effective to have several slower computers working on a problem than a single fast one. This raises questions about how much of the computation can be done at the same time.
Here we use a fun team activity to demonstrate an approach to parallel sorting. It can be done on paper, but we like to get students to do it on a large scale, running from node to node in the network.
Networks are everywhere in modern society: roads, wires, water and gas pipes all connect one place to another. Computers are built of networks at many levels, from the microscopic connections between transistors in a chip to the cables and satellites that link the internet around the world. People who build networks often need to work out the most efficient way to make connections, which can be a difficult problem.
This puzzle shows students the decisions involved in linking a network between houses in a muddy city. It can lead to a discussion of minimal spanning tree algorithms for optimizing networks.
In Fashion & Design, students learn how computer science and technology are used in the fashion industry while building fashion-themed programs, like a fashion walk, a stylist tool, and a pattern maker.
Fashion & Design is a complete theme designed to be completed over eight, 45-75 minute, sessions. For each Activity, students will watch a series of videos and create one coding project with opportunities to personalize their work using “Add-Ons”, which are mini-coding challenges that build on top of the core project.
This unit contains eight lessons which culminate in a unit project. Lessons can be completed individually if students have some experience with Scratch.
Be sure to review the Materials tab for the lesson plan, starter guide, and more.
Users will need a Google account to use this resource.
Students use computer science to simulate extreme sports, make their own fitness gadget commercial, and create commentary for a big sporting event.
Sports is a complete theme designed to be completed over eight, 45-75 minute, sessions. For each activity, students will watch a series of videos and create one coding project with opportunities to personalize their work using “Add-Ons,” which are mini-coding challenges that build on top of the core project.
Users will need a Google account to use this resource.
In each of the “Create your own Google logo” activities, students code and design their own versions of the Google logo. These activities introduce students to computer science and the programming language Scratch. These activities are most appropriate for students ages 9-14 and take 15-60 minutes to run.
Be sure to review the Materials tab for the lesson plan, starter guide, and more.
Users will need a Google account to use this resource.
In Art, students create animations, interactive artwork, photograph filters, and other exciting, artistic projects.
Art is a complete theme designed to be completed over eight, 45-75 minute, sessions. For each Activity, students will watch a series of videos and create one coding project with opportunities to personalize their work using “Add-Ons”, which are mini-coding challenges that build on top of the core project.
This sample activity is a collaboration between Cartoon Network and CS First. Students will tell a story using the characters from “The Amazing World of Gumball". This activity introduces students to computer science and the programming language Scratch. Students will use different Scratch blocks to create their own unique stories.
Gumball’s Coding Adventure is a simple activity designed to be completed within 45-75 minutes. Students will watch a series of videos and create one coding project with opportunities to personalize their work using “Add-Ons”, which are mini-coding challenges that build on top of the core project.
In Storytelling, students use computer science to tell fun and interactive stories. Storytelling emphasizes creativity by encouraging students to tell a unique story each day.
Storytelling is a complete theme designed to be completed over eight, 45-75 minute sessions. For each Activity, students will watch a series of videos and create one coding project with opportunities to personalize their work using “Add-Ons”, which are mini-coding challenges that build on top of the core project.
This Unit Plan consists of eight activities to be completed over multiple days or weeks.
In Music & Sound, students use the computer to play musical notes, create a music video, and build an interactive music display while learning how programming is used to create music.
Music is a complete theme designed to be completed over eight, 45-75 minute, sessions. For each activity, students will watch a series of videos and create one coding project with opportunities to personalize their work using “Add-Ons,” which are mini-coding challenges that build on top of the core project.
In Game Design, students learn basic video game coding concepts by making different types of games, including racing, platform, launching, and more!
Game Design is a complete theme designed to be completed over eight, 45-75 minute, sessions. For each activity, students will watch a series of videos and create one coding project with opportunities to personalize their work using “Add-Ons”, which are mini-coding challenges that build on top of the core project.
Using a predefined symbol key, your students will guide one another to accomplish specific tasks without using any verbal commands. This segment teaches students the connection between symbols and actions, the difference between an algorithm and a program, and the valuable skill of debugging.
This unplugged lesson brings the class together as a team with a simple task to complete: get a "robot" to stack cups in a specific design. Students will work to recognize real-world actions as potential instructions in code. The designing of precise instructions will also be practiced, as students work to translate worded instructions into the symbols provided. If problems arise in the code, students should work together to recognize bugs and build solutions.
Students will be able to:- gain an understanding of the need for precision in coding.- learn how to recognize a bug and how to debug the malfunctioning code.
Note: You will need to create a free account on code.org before you can view this resource.
In this set of puzzles, students will begin with an introduction (or review depending on the experience of your class) of Code.org's online workspace. There will be videos pointing out the basic functionality of the workspace including the Run, Reset, and Step buttons. Also discussed in these videos: dragging Blockly blocks, deleting Blockly blocks, and connecting Blockly blocks. Next, students will practice their sequencing and debugging skills in a maze.
We recognize that every classroom has a spectrum of understanding for every subject. Some students in your class may be computer wizards, while others haven't had much experience at all. In order to create an equal playing (and learning) field, we have developed these ramp-up lessons. This can be used as either an introduction or a review of how to use Code.org and basic computer science concepts.
Students will be able to:- order movement commands as sequential steps in a program.- modify an existing program to solve errors.- break down a long sequence of instructions into the largest repeatable sequence.
New and unsolved problems are often pretty hard. If we want to have any chance of making something creative, useful, and clever, then we need to be willing to attack hard problems even if it means failing a few times before we succeed. In this lesson, students will be building a structure with common materials. The structure will be tested on its ability to hold a textbook for more than ten seconds. Most students will not get this right the first time, but it's important they push through and keep trying.
This lesson teaches that failure is not the end of a journey, but a hint for how to succeed. The majority of students will feel frustrated at some point in this lesson, but it's important to emphasize that failure and frustration are common steps to creativity and success.
Students will be able to:- outline steps to complete a structural engineering challenge.- predict and discuss potential issues in structure creation.- build a structure based on a team plan.- revise both the plan and the structure until they satisfy the challenge.
Debugging is an essential element of learning to program. In this lesson, students will encounter puzzles that have been solved incorrectly. They will need to step through the existing code to identify errors, including incorrect loops, missing blocks, extra blocks, and blocks that are out of order.
Students in your class might become frustrated with this lesson because of the essence of debugging. Debugging is a concept that is very important to computer programming. Computer scientists have to get really good at facing the bugs in their own programs. Debugging forces the students to recognize problems and overcome them while building critical thinking and problem-solving skills.
Students will be able to:- predict where a program will fail.- modify an existing program to solve errors.- reflect on the debugging process in an age-appropriate way.
In this lesson, students will take control of the Artist to complete drawings on the screen. This Artist stage will allow students to create images of increasing complexity using new blocks like move forward by 100 pixels and turn right by 90 degrees.
move forward by 100 pixels
turn right by 90 degrees
Building off of the students' previous experience with sequencing, this lesson will work to inspire more creativity with coding. The purpose of this lesson is to solidify knowledge of sequencing by introducing new blocks and goals. In this case, students learn more about pixels and angles using the new blocks, while still practicing their sequencing skills. Also, students will be able to visualize new goals such as coding the Artist to draw a square.
Students will be able to:- create a program to complete an image using sequential steps.- break complex shapes into simple parts.
Building on the initial "My Robotic Friends" activity, students learn to use loops when programming their robots in order to build bigger structures more efficiently.
This lesson serves as a reintroduction to loops, using the now-familiar set of "robot" programming instructions. Students will develop critical thinking skills by looking for patterns of repetition in the movements of classmates and determining how to simplify those repeated patterns using loops.
Students will be able to:- identify repeated patterns in code that could be replaced with a loop.- write instructions that use loops to repeat patterns.
This lesson demonstrates how conditionals can be used to tailor a program to specific information. We don’t always have all of the information we need when writing a program. Sometimes you will want to do something different in one situation than in another, even if you don't know what situation will be true when your code runs. That is where conditionals come in. Conditionals allow a computer to make a decision, based on the information that is true any time your code is run.
One of the best parts of teaching conditionals is that students already understand the concept from their everyday lives. This lesson merges computer science into the real world by building off of their ability to tell if a condition is true or false. Students will learn to use if statements to declare when a certain command should be run, as well as if / else statements to declare when a command should be run and what do run otherwise. Students may not recognize the word conditionals, but most students will understand the idea of using "if" to make sure that some action only occurs when it is supposed to.
if / else
Students will be able to:- define circumstances when certain parts of a program should run and when they shouldn't.- determine whether a conditional is met based on criteria.- traverse a program and predict the outcome, given a set of input.
This lesson introduces students to while loops, until loops, and if / else statements. While loops are loops that continue to repeat commands as long as a condition is true. While loops are used when the programmer doesn't know the exact number of times the commands need to be repeated, but the programmer does know what condition needs to be true in order for the loop to continue looping. Until loops keep going until something specific is true. If / Else statements offer flexibility in programming by running entire sections of code only if something is true, otherwise, it runs something else.
If / Else
A basic understanding of conditionals is a recommended prerequisite for Course E. We created this introduction to give a review for the students already familiar to conditionals and allow practice for the students that are just learning. If you find that the understanding of conditionals varies widely in your classroom, we recommend a strategic pairing of students when completing this online lesson.
Students will be able to:- define circumstances when certain parts of a program should run and when they shouldn't.- determine whether a conditional is met based on criteria.
Students will begin to understand how functions can be helpful in this fun and interactive Minecraft adventure!
Students will discover the versatility of programming by practicing functions in different environments. Students will recognize reusable patterns and be able to incorporate named blocks to call pre-defined functions.
Students will be able to:- use functions to simplify complex programs.- use pre-determined functions to complete commonly repeated tasks.
In this lesson, students will learn about the two concepts at the heart of Sprite Lab: sprites and behaviors. Sprites are characters or objects on the screen that students can move, change, and manipulate. Behaviors are actions that sprites will take continuously until they are stopped.
his lesson is designed to introduce students to the core vocabulary of Sprite Lab, and allow them to apply concepts they learned in other environments to this tool. By creating a fish tank, students will begin to form an understanding of the programming model of this tool and explore ways they can use it to express themselves.
Students will be able to:- define “sprite” as a character or object on the screen that can be moved and changed.- create a new sprite and choose its appearance.
This lesson features Sprite Lab, a platform where students can create their own alien dance party with interactions between characters and user input. Students will work with events to create game controls.
Students will use events to make characters move around the screen, make noises, and change backgrounds based on user input. This lesson offers a great introduction to events in programming and even gives a chance to show creativity! At the end of the puzzle sequence, students will be presented with the opportunity to share their projects.
Students will be able to:- identify actions that correlate to input events.- create an animated, interactive game using sequence and events.
In this activity students work in small groups to write the steps to an everyday task or the steps in a "how to" scenario. The steps the groups write serve as an algorithm. The groups will then swap their writing for the teams to now "debug" each other's work to make the steps more precise.
This activity was demonstrated during the Exploring Today's Classroom (ETC) Summit.