## Subtitles section Play video

• Algorithm Design

• If you have ever baked brownies, you know that you first have to gather the ingredients,

• then measure them, mix them together, prepare the pan, heat the oven and cook them. If you

• forget the sugar they don’t taste good and you have to start over. If the oven is too

• hot you may burn them. Determining the right steps, following them correctly and completely

• and learning from mistakes are all part of the process of algorithm design.

• Algorithms are step by step instructions to get something done or the set of rules describing

• how something works. A recipe, or a set of dance steps, or the storyboard for an animation

• are all algorithms.

• Throughout the three previous steps in the Computational Thinking processdecomposition,

• pattern recognition and abstraction you have been working toward the design of an algorithm,

• or “a set of instructions for completing a task.” Algorithmic design moves the problem

• from the modelling phase, to the operation stage. Algorithms take the form of a recipe

• or list of instructions that utilize efficiency and are written in such a way that they could

• allow for automation, or use of computers to execute tasks, or they could simply be

• followed by a human. This set of instructions should be sequential, complete, accurate and

• have a clear end point. If written for a computer the algorithm must be comprised of a series

• of tasks written in a way that a computer is able to perform.

• In this video we will focus first on algorithms that don’t necessarily involve computers,

• and secondly on some of the key understandings necessary to prepare an algorithm so that

• it could be executed by a computer.

• Although the termalgorithmmight strike fear into the hearts of some who last encountered

• it in high school or college math classes, the definition of this term is simply “a

• set of rules for solving a problem in a finite number of steps.” An algorithm is a set

• of instructions and may or may not involve mathematics.

• For example, a simple, digestible algorithm that we all use is a recipe. The sequence

• of steps in a recipe must be followed in a certain order for the final product to taste

• good. You wouldn’t bake brownies before you mix the ingredients together. Or grease

• the pan after the batter has been poured in.

• Another simple example is getting dressed in the morning. If you put your jeans on before

• your underwear you might draw some funny looks!

• We have been working with this necklace example problem throughout the course, one step at

• a time:

• A necklace is constructed from 20 blue beads and 14 red beads. Each blue bead costs \$0.22

• while the red beads cost \$0.33 each. The cost of the thread is \$0.14 per inch, and 24 inches

• are required. What is the total cost of materials for the necklace?

• To create an algorithm, let's write down all the steps it takes to solve this problem:

• amounts 2. Identify subproblems that need to be solved.

• Determine the cost of each quantity of material (cost of blue beads, cost of red beads, cost

• of thread.), then add the costs of all three materials together.

• 3. Recognize patterns between subproblems--in this case, the first three subproblems can

• be solved in parallel, they don’t have to be solved in a particular order. The second

• subproblem is sequential--meaning the costs for each material must be calculated before

• they are added together. 4. Set up an operation that can be used for

• the first subproblems. (material quantity x material cost)

• 5. Calculate the cost for each type of material using the appropriate variables

• 6. Add the costs for each of the three materials together to determine the total cost of the

• example. We first decomposed the monsters into parts (eyes, nose, mouth, etc.) and then

• found similarities between the features of the three monsters. We then used abstraction

• to replace the specific types of body parts with blanks so that any type of feature could

• be inserted. We have now created a recipe to use for our algorithm. We can use it to

• instruct other students to recreate the same or design new monsters based on the feature

• types. For example, if you provide this algorithm, you come up with this new monster.

• When we were discussing decomposition we took some time to explore Bee-bot, the bee that

• moves a step at a time towards its destination. We looked at how its overall path was broken

• down into steps. Now we will focus on Bee-bot in terms of algorithms. Can you give Bee-bot

• the correct set of instructions to move from the start to the flower for Level 3? How about

• for Level 5? Level 6?

• Similar to Bee-bot, write out a set of instructions and have someone else follow your instructions

• exactly to complete a task. You can emulate Bee-bot by finding a tiled floor or using

• chalk on pavement to draw a grid. Take turns writing out instructions for each other to

• follow to move from square A to square B. Students must enact instructions exactly as

• they are written to see if all steps are correct. The person who wrote the instructions may

• need to revise them if they don’t work.

• Here is another similar activity, but in this one the instructions are for building a structure

• rather than moving around. Students work in groups to develop algorithms to recreate models

• Algorithmic design is critical in the Computational Thinking process. If a computer is not involved,

• algorithmic design provides a recipe or instructions to solve the problem. If a computer is involved,

• a human has to be able to tell it, in a language it can understand, how to solve the problem.

• For a computer to be able to aid in the efficiency of solving your problem, the algorithm must

• be comprised of a series of tasks written in a way that a computer is able to understand

• and perform. This involves a translation between the language of humans and the high level

• language of computers. Humans speak languages like English, Spanish, or Arabic. Computers

• speak in bits, the basic unit of information in computing. You may have heard of the binary

• system, where the numbers 0 and 1 are used to communicate information. These are bits.

• Without getting too deep into Computer Science, suffice it to say that computers speak many

• different kinds of high level languages---such as HTML or Javascript which are comprised

• of bits. Computer programmers work to create instructions through coding that are born

• from human ideas but translated for a computer to understand.

• WISIWYG (What You See Is What You Get) interfaces can help you understand this concept--these

• are designed so that non-computer science savvy people can use computers to build what

• they need in their human language, but see how that translates to computer code.

• Here are a few necessary understandings when thinking about designing algorithms for computing

• (or otherwise).

• Your instructions need to be unambiguous. For example, when baking it is more clear

• to say bake until a toothpick comes out clean rather than just bake until done. An example

• for a computer could bechoose a number between 1000 and 2000” instead of justchoose

• a large number.”

• You need defined inputs and outputs. The input for the Make a Monster example is one name

• for each feature. The output of the algorithm is a new monster’s face. For the Bee-bot

• it is a series of directional steps using forward, backward, left turn and right turn.

• The output is the motion performed by the Bee-bot.

• You need to have a defined end point. Your algorithm should answer a question or produce

• a result and be clear when it has finished.

• Your instructions must be sequenced in the correct order to complete the task at hand.

• Flowcharts can help identify actions and the order in which they need to

• occur. You may find you have sets or pieces of the instructions that need to happen over

• and over again. This is called a loop or iteration.

• You may have conditional statements that affect the variables (if/then, yes/no, true/false).

• In these cases, the first condition dictates the second.

• You need to be able to interpret the computer’s results. When designing an algorithm, it may

• be difficult to know if it is working and the outputs are correct. Different algorithms

• are developed to solve the same problems and they can produce different results. This is

• why testing and revising algorithms is important. You can’t depend on the computer or machine

• to do all the work--you have to interpret the results you get, think critically and

• determine whether or not they make sense.

• You have now experienced all the steps involved in Computational Thinking--you have decomposed

• problems, identified patterns, abstracted information and designed algorithms or instructions

• to solve a problem--using a computer...or not.

• But how do you know when the process is finished? How do you know when you are done? It can

• be difficult to know if you have accounted for all the important factors and if you are

• truly solving the problem.

• Steps and skills involved in Computational Thinking can and should be iterated (repeated).

• Testing is the way to determine if it works or needs refinement. More often than not a

• model that arises through Computational Thinking that is put into operation through algorithmic

• design must be reevaluated and refined through testing. If your solution doesn’t quite

• work or make sense, you have to return to the earlier steps in the process and try to

• identify where a mistake may have occurred. This process of testing and identifying and

• learning from mistakes is the key to solving big problems.

• Just because you haven’t learned how to write computer code doesn’t mean you can’t

• try creating algorithms for computers and programming! Several free online platforms

• allow you and your students to manipulate pre-written blocks of code that represent

• different tasks or actions. By sequencing, grouping, copying, repeating code, disguised

• as colorful blocks, you are capable of creating and playing your own unique computer animations

• and games! So you don’t have to know how to program (write code) but you do have to

• understand algorithms (creating a logical set of instructions). In fact, doing this

• is a fun way to introduce algorithms to your students. Creating a game or animation in

• this way is an excellent method for learning how algorithms work.

• Well use Scratch as an example of one of these programs. You can play with Scratch

• without creating an account (via the Create tab), or, if you set up a free account on

• the Scratch website you will be able to save your projects. You are immediately able to

• start to experiment with creating algorithms. You can choose a “sprite” (character)

• and and create and/or control its motion, looks, sounds, and other variables by dragging

• and stacking coded boxes. Concepts such as loops or iteration can be explored using the

• boxes in thecontrolsection. You can access operators to create conditional clauses

• you can create and add in your own coded blocks for any functionality you can dream up!

• Scratch is open source which means you can see and share your creations and also explore,

• try out and remix the creations of others. In fact, the Bee-bot online program we have

• been using during this PD was created in Scratch!

• The ultimate goal for using computational power in solving problems is to solve seemingly

• unsolvable problems, and to solve them as efficiently as possible. Figuring out what

• instructions to give a computer for it to solve a problem efficiently means thinking

• creatively.

• Computational Thinking has led to many of the incredible tools that have become indispensable

• in our everyday lives. Without Computational Thinking today’s cars wouldn’t run and

• today’s planes wouldn’t fly as they are controlled by computers. Computational Thinking

• has and continues to streamline and optimize efficiency in manufacturing processes to provide

• you with the products you buy. Computational Thinking has led to such useful inventions

• as Google Maps and virtual reality.

• We as humans can learn from our mistakes and advance our understanding and knowledge to

• solve bigger and more difficult problems. We can work together and it helps to have

• a systematic method like the steps of Computational Thinking to help us tackle seemingly impossible

• problems. Now especially, when solving problems can be greatly advanced by taking advantage

• of the efficiency of machines and computers it is increasingly important to plan our problem

• solving methods to address their incorporation. Today’s students are tomorrow’s problem