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.
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.
By "programming" one another to draw pictures, students get an opportunity to experience some of the core concepts of programming in a fun and accessible way. The class will start by having students use symbols to instruct each other to color squares on graph paper in an effort to reproduce an existing picture. If there’s time, the lesson can conclude with images that the students create themselves.
The goal of this activity is to build critical-thinking skills and excitement for the course while introducing some of the fundamental programming concepts that will be used throughout the course. By introducing basic concepts like sequencing and algorithms to the class in an unplugged activity, students who are intimidated by computers can still build a foundation of understanding on these topics. In this lesson, students will learn how to develop an algorithm and encode it into a program.
Students will be able to:- reframe a sequence of steps as an encoded program.- explain the constraints of translating problems from human language to machine language.
Note: You will need to create a free account on code.org before you can view this resource.
This activity will begin with a short lesson on debugging and persistence and then will quickly move to a race against the clock as students break into teams and work together to write a program one instruction at a time.
Teamwork is very important in computer science. Teams write and debug code with each other, instead of working as individuals. In this lesson, students will learn to work together while being as efficient as possible.
This activity also provides a sense of urgency that will teach students to balance their time carefully and avoid mistakes without falling too far behind. This experience can be stressful (which is expected)! Make sure you provide students with the tools to deal with potential frustration.
Students will be able to:- define ideas using code and symbols.- verify work done by teammates.- identify signs of frustration.
In this online activity, students will practice debugging in the "collector" environment. Students will get to practice reading and editing code to fix puzzles with simple algorithms, loops, and nested loops.
The purpose of this lesson is to teach students that failure is normal when learning a new skill. Students will be given pre-written programs that do NOT work. They will be asked to fix these programs. This process, called "debugging", teaches students essential problem solving and critical thinking skills. These skills transfer over as students proceed to harder and harder programming projects.
Students will be able to:- read and comprehend the given code.- identify a bug and the problems it causes in a program.- describe and implement a plan to debug a program.
In this online activity, students will learn what events are and how computers use them in programs like video games. Students will work through puzzles making the program react to events (like arrow buttons being pressed). At the end of the puzzle, students will have the opportunity to customize their game with different speeds and sounds.
In this lesson, students will develop their understanding of events by making a sports-based game. Students will learn to make their paddle move according to arrow keys and make noises when objects collide. At the very end, they will get to customize their game to make it more unique!
Students will be able to:- identify actions that correlate to input events.- create an interactive game using sequence and event-handlers.- share a creative artifact with other students.
As a quick update (or introduction) to using loops, this stage will have students using the repeat block to get Scrat to the acorn more efficiently.
repeat
In this lesson, students will be learning more about loops and how to implement them in Blockly code. Using loops is an important skill in programming because manually repeating commands is tedious and inefficient. With these Code.org puzzles, students will learn to add instructions to existing loops, gather repeated code into loops, and recognize patterns that need to be repeated.
Students will be able to:- construct a program using structures that repeat areas of code.- improve existing code by finding areas of repetition and moving them into looping structures.
This lesson builds on the understanding of loops from previous lessons and gives students a chance to be truly creative. This activity doubles as a debugging exercise for extra problem-solving practice.
This series highlights the power of loops with an array of puzzles meant to get students thinking about why repeat loops are superior to longhand.
Students will be able to:- identify the benefits of using a loop structure instead of manual repetition.- differentiate between commands that need to be repeated in loops and commands that should be used on their own.
By the time students reach this lesson, they should already have plenty of practice using repeat loops, so now it's time to mix things up.
While loops are loops that continue to repeat commands while a condition is met. While loops are used when the programmer doesn't know the exact number of times commands need to be repeated but does know what condition needs to be true in order for the loop to continue repeating. For example, students will be working to fill holes and dig dirt in Farmer. They will not know the size of the holes or the height of the mountains of dirt, but the students will know they need to keep filling the holes and digging the dirt as long as the ground is not flat.
While
As your students continue to deepen their knowledge of loops, they will come across problems where a command needs to be repeated, but it is unknown how many times it needs to be repeated. This is where while loops come in. In today's lesson, students will develop a beginner's understanding of condition-based loops and also expand their knowledge of loops in general.
while
Students will be able to:- distinguish between loops that repeat a fixed number of times and loops that repeat as long as a condition is true.- use a while loop to create programs that can solve problems with unknown values.
In this lesson, students will learn about until loops. Students will build programs that have the main character repeat actions until they reach their desired stopping point.
until
This set of puzzles will work to solidify and build on the knowledge of loops by adding the until conditional. By pairing these concepts together, students will be able to explore the potential for creating complex and innovative programs.
Students will be able to:- build programs with the understanding of multiple strategies to implement conditionals.- translate spoken language conditional statements and loops into a program.
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.