## Creating Algorithms

Educator supports students in using algorithmic thinking to formulate procedures as algorithms and compare different solutions to the same problem.
Made by Digital Promise Computational Thinking
APPLY

### Key Method

The educator guides students through expressing procedures as algorithms and then implementing, testing, and comparing algorithmic approaches.

### Method Components

#### Expressing procedures as algorithms

An algorithm is a description of how to do something in a precise and repeatable way. Algorithms do not need to be “high tech”—they can be written as a series of clearly defined steps just as they can be written as computer code. A recipe is an everyday example of an algorithm: it is a clearly defined set of steps that reliably delivers the expected result. In the same way, a bad recipe is an example of a bad algorithm: it leaves out important steps or assumes too much about its reader, and it doesn’t reliably lead to the intended dish. In either case—whether it’s a recipe for a cook or an algorithm for a computer—the same principles of precision and repeatability apply.

There are several educational reasons for thinking about procedures as algorithms. One advantage is that “teaching” a computer how to perform complicated procedures can be a powerful way for students to develop and demonstrate their understanding of the procedures. For example, programming a computer to find the average of a list of numbers is an excellent way for students to develop an understanding of how to calculate averages.

Another reason to think about procedures as algorithms is that they can help students notice similarities between different situations. When problems from different content areas are described in the same way, the same algorithms can be used to solve them. For example, sorting events by date to create a timeline in a history class and sorting substances by pH in a science class might use the same algorithm.

#### Testing and comparing algorithms

There are usually many different ways to go about solving a problem. When these different procedures are expressed as algorithms, students can use computers to compare the solutions to see which are more efficient, which are more robust, which can handle extreme situations, which can solve other similar problems, and which are simply incorrect. When students test and compare different algorithmic solutions to a problem, they also develop richer understandings of the underlying problem. Computational tools are well-suited to testing and comparing algorithms, as they can provide immediate feedback regarding the effectiveness of a possible solution. However, non-computational environments such as board games, flowcharts, and in-person simulations can also be effective.

#### Suggested implementation

1. Before teaching the lesson, carefully read the submission instructions and consider what evidence you will need to gather for your submission. If necessary, make arrangements to videotape the lesson or ask a colleague to observe and take notes. You may also want to plan to take notes immediately after the lesson to help you remember the details.
2. Choose an open-ended problem which is important to your subject area and relevant to your students.
3. Find (or build) a computational tool or a non-computational environment in which students can implement various solutions to the problem. For example, users of Scratch have built many simulations in which others can program characters to follow particular strategies. An example which does not involve programming would be having students write out and then try specific strategies for a simple game, such as tic-tac-toe or a board game.
4. Plan a lesson in which students implement, test, and compare algorithms to solve the problem. Suggested outline:
• If students are not already familiar with the environment, allow them time to play and develop intuitions.
• Facilitate a brief discussion of possible approaches to the problem.
• Introduce the computational model, demonstrating how a straightforward solution could be implemented. Run the algorithm to observe its result. Ideally, it will not be very successful.
• Ask students to discuss why the algorithm was not very successful and what might work better. Implement a small change to the algorithm and test it again.
• Allow students to work in small groups to build and test algorithms on their own. If students are programming, it is often helpful to ask them to first think through their algorithms in a less formal medium. Examples of this may include writing steps in prose, in pseudocode, using a graphic organizer, or creating a flowchart.
• If appropriate, allow students to compare the performance of their algorithms against each other.
• Ask students to share their algorithms, explain how they work, and evaluate their performance. (“Assessing Computational Thinking” in this stack focuses on strategies for assessing computational thinking.)

## Research & Resources

### Supporting Research

#### Implementing, testing, and comparing algorithms

• Papert, S. (1980). Computer-based microworlds as incubators for powerful ideas. Taylor, R, ed. The Computer in the School: Tutor, Tool, Tutee, 203-210.

## Submission Requirements

### Submission Guidelines & Evaluation Criteria

To earn the micro-credential, you must earn a “passing” evaluation for Parts 1 and 3, and a “Yes” for each component of Part 2. In the assessment of this micro-credential, an educator will plan and teach a lesson in which students explore an open-ended problem by testing and comparing algorithmic solutions. Students may implement algorithms with a computational tool or within an alternate environment such as a board game or an in-person simulation. The educator will analyze student learning in the lesson and reflect on the lesson’s successes and limitations. The three parts of the assessment should fit together as evidence of professional reflective practice.

#### Part 1. Overview Questions

(300-word limit total)

• Describe the open-ended problem students explored in this lesson. Why is it an important problem for students to explore in your subject
• Explain the computational tool or alternate environment (see description above) your students used to implement algorithms. What was your rationale for this decision? How did you support students in exploring the problem with algorithms?

#### Part 2. Work Examples / Artifacts

To earn this micro-credential, please submit the following:

1) Student artifacts

Submit artifacts from two different students (at least two artifacts per student), showing their algorithmic solutions (at multiple points along the way if possible), and evidence of testing and comparing different solutions. These may include code, screenshots, students’ notes and reflections, the teacher’s or another colleague’s observation notes, an interview, or other artifacts.

2) Analysis of student artifacts

(600-word limit total)

As you answer the following questions, refer to specific evidence from the artifacts submitted.

Note: If students worked in groups, you may choose to analyze one student’s learning within each group or the learning of the groups as wholes.

• Expressing procedures as algorithms
• Compare the approaches each student took to solving the problem. How do they reflect different ways of thinking about the problem?
• Drawing on examples from one or both students, explain how the process of developing the algorithmic solution helped the student better understand the problem. Were there moments of productive failure along the way?
• Testing and comparing algorithms
• Explain how the students tested and compared their algorithms with others’ or with previous versions of their own. What did they learn from comparing their solutions?
• How did testing and comparing algorithms to solve a problem contribute to a deeper understanding of the problem itself? How might students’ thinking in this lesson draw on prior learning and contribute to future learning in your subject area?

#### Part 3. Educator Reflection

(300-word limit)

Reflecting on the lesson, what might you change that would support one or more students (not necessarily the students whose work was considered in Part 2) to more effectively understand the problem by implementing, testing, and comparing algorithms?