Placeholder Image

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:

  • 1. Break the problem down into its componentsblue beads, red beads, thread, their costs and

  • 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

  • necklace Let’s return to and review the Make a Monster

  • 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

  • made from plastic bricks.

  • 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

  • within your algorithms in both thecontrolandoperatorssections (operators are

  • the conditional terms we talked about earlier). As you or your student’s understanding advances,

  • 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