An algorithm is a repeatable process that delivers an expected result. Computer scientists use algorithms to provide well-defined instructions to computers to solve a problem or perform a task.
However, students can define precise, repeatable processes for problem-solving in many classroom contexts. For example, teachers have utilized algorithms to help students discern whether an organism is alive and to identify phases of the moon.
We have identified three sub-practices of creating algorithms. These sub-practices may occur in combinations that connect with one another. For instance, if a student is programming, they are using code to define procedures as algorithms, so these are not necessarily distinct steps.
- Defining Procedure as Algorithms by identifying parts of a process and expressing the procedure in a manner that can be comprehended by computational tools (e.g., flow charts, pseudocode).
- Programming a computer program for a specific purpose using a language of your choice (text- or block-based).
- Testing and Debugging a computer program by identifying errors and repairing the errors to produce a functioning program that meets a designated purpose.
Explore the resources below to consider how to integrate algorithms in your classroom.
How algorithms can be used in the classroom
Learn how our partners Ashley Simpson and Niki Cosper, teachers in Talladega County Public Schools, helped students develop algorithms to identify, sort, and categorize objects in their middle school science classrooms.
“When we look at algorithmic thinking, we’re looking at that ‘step-by-step.’ We had our compounds, mixtures, and elements. My students had to organize them accordingly using questions to figure out where everything went into place.” – Ashley Simpson
“If you’re teaching a process like determining if things are living or non-living, that’s a great time to bring an algorithm because students can come up with the decision matrix, yes/no questions, and come up with their own ways to evaluate if something’s alive.” – Niki Cosper
Teachers will know that students are creating algorithms because they may observe the following student actions:
- Decomposing problems or tasks
- Identifying essential steps
- Identifying and repairing errors
- Considering efficiency
Ask students to engage in creating algorithms and/or reflect on their process or progress with these prompting questions:
- What do you need to know to be able to solve this problem/do this task?
- What should be the result of the problem or task?
- What is required to solve this problem/do this task?
- Why is each step required to solve the problem/task?
- Does adding/removing a step affect your results?
- Would you include additional words or details to explain this process to a partner?
- Does each step have the result you intend?
- Does a partner testing your algorithm get the same results as you?
- Are there certain inputs where you do not get the intended result?
- Can your algorithm have the same result with less steps?
- Do you notice any patterns in your procedure?
Resources and Examples
Explore examples of middle school science activities integrated with computational thinking practices. Although the examples are topic-specific, templates are available for you to design opportunities in different topics or contexts.
Identify, Sort, and Categorize Objects
Troubleshoot a Design Problem
Illustrate a Phenomenon
The following rubrics outline components of creating algorithms that can be utilized to assess student work.
Defining Procedures as Algorithms
Testing and Debugging
Explore this curated list of supports to implement, explore, and promote computational thinking practices in your classroom.
Defining Procedures as Algorithms:
- LucidChart: Platform to visualize processes with collaborative capabilities
- SmartDraw: Platform to create flowcharts, organizational charts, drawings and/or floorplans
- Draw.oi: Platform to create and share professional diagrams[/accordion-item][/accordion]
- See the CSforPGH Index for a curated list of programming tools and resources[/accordion-item][/accordion]