One of the eight Next Generation Science Standards (NGSS) scientific practices is using mathematics and computational thinking (CT). CT is not merely a data analysis tool, but also a problem-solving tool. By utilizing computing concepts, people can sequentially and logically solve complex science and engineering problems. In this article, we share a successful lesson using protein synthesis to teach CT. This lesson focuses primarily on modeling and simulation practices with an extension activity focusing on the computational problem-solving practices of CT. We identify and define five CT concepts within the aforementioned practices that form the foundation of CT: algorithm, abstraction, iteration, branching, and variable. In this lesson, we utilize a game to familiarize students with CT basics, and then use their new CT foundation to design, construct, and evaluate algorithms within the context of protein synthesis. As an optional extension to the lesson, students enter the problem-solving environment to create a program that translates mRNA triplet codons to an amino acid chain. We argue that biology classrooms are ideal contexts for CT learning because biological processes function as a system, and understanding how the system functions requires algorithmic thinking and problem-solving skills.

Introduction

The Next Generation Science Standards (NGSS) call for engaging students in science and engineering practices (NGSS Lead States, 2013). One of the eight practices is using mathematics and computational thinking, defined as tools for evaluating data and creating simulations (Schweingruber et al., 2012). However, experts in the field of computer science, such as Jeannette Wing, the corporate vice president of Microsoft Research, have an expanded definition. Wing (2006) defines computational thinking (CT) as “the thought processes involved in formulating a problem and expressing its solution in a way that a computer—human or machine—can effectively carry out” (p. 7). This definition is widely held in the engineering and computer science fields. CT is not merely a data analysis tool, but also a problem-solving tool. By utilizing computing concepts, people can sequentially and logically solve complex science and engineering problems. In this article, we share a successful lesson using protein synthesis to teach CT.

Computational Thinking: Algorithms

Weintrop et al. (2016) place computational thinking in science and mathematics into four taxa: data practices, modeling and simulation practices, computational problem-solving practices, and systems thinking practices. Although there is overlap among the taxa, this lesson focuses primarily on modeling and simulation practices with an extension activity focusing on computational problem-solving practices of CT. Modeling and simulation practices include assessing, designing, and constructing computational models; using computational models to understand a concept; and finding and testing solutions. Problem-solving practices include programming, troubleshooting and debugging, preparing problems for computational solutions, choosing effective computational tools, assessing different approaches or solutions to a problem, developing modular computational solutions, and creating computational abstractions.

In Table 1, we identify and define five CT concepts within the aforementioned practices that form the foundation of CT: algorithm, abstraction, iteration, branching, and variable. In this lesson, we utilize a game to familiarize students with CT basics, and then use their new CT foundation to design, construct, and evaluate algorithms within the context of protein synthesis. As an optional extension to the lesson, students enter the problem-solving environment to create a program that translates mRNA triplet codons to an amino acid chain.

Table 1.
CT concept definitions.
CT ConceptDefinitionExample
Algorithm A sequence of steps to solve a problem A recipe is an algorithm for how to make a particular food. 
Abstraction Simplifying information; displaying only the information that is needed When someone asks you what you did yesterday, you tell them you stayed at home and watched Netflix, not that you woke up, took a shower, got dresses, ate breakfast, fed your dog…, etc. 
Iteration Repeating a sequence of steps until a condition is met When you eat a meal, you put food in your mouth, chew, swallow, and repeat until the food is gone. 
Branching Choosing a path, if/then/else statements Driving through traffic lights: IF the light is green, THEN you go, ELSE you slow down and stop. 
Variable A value that can change; used in programming to make programs universal If you were writing an algorithm for your morning routine, you would write: wake up, get out of bed, shower, put on clothes, eat breakfast. In this algorithm, “clothes” is a variable, and its value (what you actually wear each day) changes. Maybe on Monday, clothes = a dress, and on Tuesday, clothes = a shirt and jeans. 
CT ConceptDefinitionExample
Algorithm A sequence of steps to solve a problem A recipe is an algorithm for how to make a particular food. 
Abstraction Simplifying information; displaying only the information that is needed When someone asks you what you did yesterday, you tell them you stayed at home and watched Netflix, not that you woke up, took a shower, got dresses, ate breakfast, fed your dog…, etc. 
Iteration Repeating a sequence of steps until a condition is met When you eat a meal, you put food in your mouth, chew, swallow, and repeat until the food is gone. 
Branching Choosing a path, if/then/else statements Driving through traffic lights: IF the light is green, THEN you go, ELSE you slow down and stop. 
Variable A value that can change; used in programming to make programs universal If you were writing an algorithm for your morning routine, you would write: wake up, get out of bed, shower, put on clothes, eat breakfast. In this algorithm, “clothes” is a variable, and its value (what you actually wear each day) changes. Maybe on Monday, clothes = a dress, and on Tuesday, clothes = a shirt and jeans. 

CT is an essential skill for navigating today's complex technological world. Students will need to be technologically literate to become contributing members of society, and many scholars believe that CT is a key component of technological literacy (Barr & Stephenson, 2011; NRC, 2010; Sanford & Naidu, 2016; Wing, 2006). Additionally, scholars believe that students need to learn CT as a problem–solving skill to be utilized across disciplines (Barr & Stephenson, 2011; Bundy, 2007; Mishra et al., 2013). As such, CT should be integrated into K-12 curricula to familiarize students with its problem-solving power. We argue that biology classrooms are ideal contexts for CT learning because biological processes function as a system, and understanding how the system functions requires algorithmic thinking and problem-solving skills.

Many biological processes can be represented as algorithms to complete a task, which is a form of a computational model. For example, in protein synthesis, the problem is that the body needs to make proteins from DNA code; the solution is transcription, translation, and protein folding, which are steps to create an active protein from DNA. As such, biological processes are perfect contexts for CT integration through algorithmic modeling. In this lesson, students begin learning CT through writing algorithms for familiar processes, and then these CT basics can scaffold future learning about complex processes. Once students have a CT foundation, they can utilize these computational modeling skills to understand new biological processes. The following lesson is designed to be an introduction to CT through protein synthesis, but this lesson can be altered to fit many biological processes.

A Classroom Implementation

The following protein synthesis and CT lesson was piloted in two high school Advanced Placement (AP) biology classes at the end of the year, after students had taken their AP exams. Three 90-minute class periods were needed to implement the full lesson, which is outlined in Table 2. This lesson was designed to scaffold CT experiences by first introducing students to CT, then asking students to apply CT skills to protein translation, and finally asking students to extend their CT skills to programming. This lesson can be shortened and completed in fewer class periods, if desired. Students can be tasked with playing Lightbot as homework, and Day 3 is an optional extension. The Lightbot game was chosen because it was successfully used to introduce CT to undergraduate students in a small pilot implementation carried out by the authors.

Table 2.
Lesson outline.
DayLearning ActivityObjective
1 Introduction to CT Using Lightbot Students will problem-solve in a programming game to explore basic CT concepts. 
2 Applying CT: Writing Translation Algorithms Students will write an algorithm to simulate how the system of the translation process functions. 
3 Extending CT: Programming Translation with Scratch (optional) Students will design a program to simulate the patterns associated with the translation process. 
DayLearning ActivityObjective
1 Introduction to CT Using Lightbot Students will problem-solve in a programming game to explore basic CT concepts. 
2 Applying CT: Writing Translation Algorithms Students will write an algorithm to simulate how the system of the translation process functions. 
3 Extending CT: Programming Translation with Scratch (optional) Students will design a program to simulate the patterns associated with the translation process. 

Materials

The following materials are needed: computers or iPads/tablets, Internet access, translation video: https://www.youtube.com/watch?v=TfYf_rPWUdY, LightBot app for tablets or https://lightbot.com/hocflash.html, whiteboards, markers, erasers, and sticky notes.

Optional materials for Day 3 include: Scratch program: https://scratch.mit.edu/projects/100898229/#editor, and a Scratch Account: www.scratch.mit.edu

Day 1: Introduction to CT Using Lightbot

Students begin by either downloading the Lightbot: Code Hour app or going to this URL: https://lightbot.com/hocflash.html. This game introduces students to computational thinking basics (algorithms, iterations, and abstractions), and we suggest that teachers become familiar with the game before using it. Rather than writing code, users engage in drag-and-drop programming where they click and drag blocks to create a program. Students should work through the challenges in the first level either individually or in pairs. The objective of the game is to light all of the dark squares using the robot, and in order to do so, the player combines different block commands to make the robot move and light the squares (Figure 1). After completing all the challenges in the first level, students share their strategies for each challenge.

Figure 1.

Lightbot game.

Figure 1.

Lightbot game.

The combination of blocks placed inside the MAIN box on the right side of the screen is the algorithm the robot follows. Students build their algorithm by dragging blocks from the lower portion of the screen. Once students create an algorithm that lights all the dark squares, they can go to the next challenge. Students will create different algorithmic solutions to each game level, which is a great opportunity to discuss the creativity needed to design solutions and problem-solve. The game saves the students’ programs, so they can go back and look at their algorithms at any time. After the students play a few levels, the teacher leads a discussion on algorithms, giving definitions and examples. The CT concept definitions and examples discussed in the implementation are found in Tables 1 and 3. We continue to play the different levels of the Lightbot game, pausing to discuss and take notes on abstraction and iteration. Throughout this lesson, students experience and discover the CT concept as they play the game, and then the teacher provides the technical term and definition as part of a discussion of the tasks in the game. As seen in Figure 2, the main program has only three blocks, which calls the PROC1 program three times. This is an abstraction because the P1 is a simplification of the PROC1 blocks, and without this abstraction, the main program would have 15 blocks instead of three. This abstraction simplifies the main program and reduces the programming time as well as the main program space.

Table 3.
CT concept examples for student notes.
CT ConceptExamples
Algorithm Game example (MAIN blocks): In every level you build an algorithm to light the colored squares.
Real life example: When someone asks you for directions to your house, you give them an algorithm. 
Abstraction Game example (Procedure): The procedures were abstractions of the steps in the main program
Real life example: When someone asks you what you are doing tonight, you tell them you're going to eat spaghetti, not that you are going to boil water, put the noodles in for 10 minutes, heat the sauce, brown the meat…, etc. 
Iteration Game example (loops): The loops in the games were examples of iteration. They repeated the sequence until all the squares were lit.
Real life example: Each day is an iteration, each week, each month, each year. 
Branching Real life example: Choosing what to wear each day: if it is cold outside, then wear a sweater, else don't wear a sweater. 
Variable Real life example:
Set variable1 = 5 (program user decides each time they run the program)
Set variable2 = 6 (program user decides each time they run the program)
Program: variable1 + variable2 = 11 (the sum of the two values set by the program user) 
CT ConceptExamples
Algorithm Game example (MAIN blocks): In every level you build an algorithm to light the colored squares.
Real life example: When someone asks you for directions to your house, you give them an algorithm. 
Abstraction Game example (Procedure): The procedures were abstractions of the steps in the main program
Real life example: When someone asks you what you are doing tonight, you tell them you're going to eat spaghetti, not that you are going to boil water, put the noodles in for 10 minutes, heat the sauce, brown the meat…, etc. 
Iteration Game example (loops): The loops in the games were examples of iteration. They repeated the sequence until all the squares were lit.
Real life example: Each day is an iteration, each week, each month, each year. 
Branching Real life example: Choosing what to wear each day: if it is cold outside, then wear a sweater, else don't wear a sweater. 
Variable Real life example:
Set variable1 = 5 (program user decides each time they run the program)
Set variable2 = 6 (program user decides each time they run the program)
Program: variable1 + variable2 = 11 (the sum of the two values set by the program user) 
Figure 2.

Abstraction (left) and Iteration (right).

Figure 2.

Abstraction (left) and Iteration (right).

The right-hand side of Figure 2 depicts an iteration level in the Lightbot game. While abstraction is still being utilized with the P1 command and PROC1 blocks, this level adds iteration by introducing repetition. In this program, PROC1 calls itself in the last step of the algorithm, which results in the PROC1 steps being on a continuous loop and repeating until all of the dark squares have been lit by the robot. Without the use of iteration in this level, the main program would be six blocks long because it would have to call the PROC1 blocks six times to light all of the blocks, thus iteration also saves time and space. Experiencing these CT basics in a game environment helps students engage in programming logic without having to learn any code. The last levels of procedures and loops are challenging, and students and teachers might struggle with completing the algorithm. If this is the case, the solutions can be looked up on Youtube.

Next we discuss branching and variable usage in algorithms. Although branching and variables are not part of the Lightbot game, they are essential CT components that are less complex than the previous concepts. Branching is an if/then/else operation that allows the algorithm to check a condition and choose a path to follow based on that condition. For example, IF the weather says it will rain today, THEN I will carry my umbrella, ELSE I will leave my umbrella at home. Branching allows flexibility in algorithms, so students can adjust the steps based on important conditions.

Variables are used in algorithms to make the steps universal. For example, if we write a program that adds 5 and 6, that program will only be useful to someone who needs to add those two specific numbers. We can make it universal by making the program add any two numbers together, utilizing variables. The program will say: variable1 + variable2, and the user will set the values to any numbers they choose. Then the user can enter the two values they need added and the program will calculate it. Once students have this CT foundation, we engage them in a transfer task of writing a translation algorithm, allowing students to apply the skills developed in the Lightbot game to the biological process of protein synthesis.

Day 2: Applying CT by Writing Translation Algorithms

Once students have learned about CT in LightBot, we then apply these concepts to the translation process of protein synthesis. Students watch the translation video and, working in groups of two to four, write a translation algorithm (see http://www.hhmi.org/biointeractive/translation-basic-detail). We urge students to use all of the CT principles discussed in the previous activity in their translation algorithms. We use whiteboards and dry erase markers to construct the algorithms, but other materials can be used, such as poster board or butcher paper. Students should refer back to the video to create their algorithms. Algorithms can take many forms. They can be paragraphs, flow charts, pictures, lists, or any combination of these. It is important to make sure students remember that this is a creative process, and there is no right or wrong algorithm as long as the steps make sense and result in the correct product, which, in this case, is a polypeptide chain.

After the groups finish constructing their algorithms, we engage students in a gallery walk so they can evaluate each other's algorithms. In the gallery walk, students walk to other groups’ algorithms, read them, and provide constructive feedback on sticky notes. This allows students to see how other groups constructed their algorithms and gives them the opportunity to think about ways to improve other groups’ algorithms and their own algorithms. Next, students read the feedback they received and make adjustments to their algorithms. Students in this pilot struggled with variables more than the other CT concepts, and we had to pause before the gallery walk to scaffold their variable understandings by discussing how codons and anticodons can be used as variables in their programs. Figure 3 shows two final algorithms created by the students in the AP biology class. Each algorithm looks different, but both have abstraction, iteration, branching, and variables, and contain correct translation processes.

Figure 3.

Two examples of student-generated algorithms.

Figure 3.

Two examples of student-generated algorithms.

In Figure 3, Example 1, P1 (the second box) is an abstraction of the main program (the first box), and the last command of P1 calls itself (P1) until the stop codon, which is iteration. Example 2 also shows abstractions of the main program with P1 and P2 steps and iteration when P1 calls itself in Step 3. To show branching, Example 1 utilized multiple if/then/else statements in both the main program and the P1 program. In Example 2, there are multiple branching exemplars with if/then/else statements in Step 3 of P1 and Step 1 of P2. Both examples use codon and anticodon as variables within the algorithm.

The depth of this activity is flexible, and can be adapted for any level of biology. It can also be applied to any biological process and can be used to scaffold body modeling and/or paper modeling. With body modeling, students act out processes utilizing props. For paper modeling, students will need paper cutouts of the necessary components (ribosome, mRNA, amino acids, tRNA), and they perform the process with the cutouts. Utilizing these modeling strategies, students can test the correctness of the algorithms by performing the steps of their algorithms. This particular instantiation was used to review the translation material. We recommend that when introducing CT and writing algorithms for the first time, it should be connected with a process students already know. Under these conditions, students can use their knowledge of the biological process to make sense of CT. This review activity is also a great formative assessment because it is easy to see where students struggle with the biological process and where they have an accurate grasp of the process. Students can use their knowledge of CT to make sense of most biological processes, so CT is a powerful sense-making technique in biology classrooms.

Day 3: Extending CT By Programming Translation with Scratch (optional)

When implementing this lesson, teachers can continue with applying CT concepts through computational modeling, or they can extend the application into problem solving in a visual programming environment. In this classroom implementation, we continued the lesson with the visual programming extension. We review triplet codons and their corresponding amino acids by showing students the triplet codon table, and reviewing how to read it. In the next activity, students will create a program that reads triplet codons and returns the corresponding amino acid sequence to the user. To do this, students use a visual programming tool, Scratch at www.scratch.mit.edu. We use one Scratch account per class section and have students save their programs with their names in the title. To become familiar with Scratch, teachers are encouraged to watch video tutorials and explore Scratch guides (https://scratch.mit.edu/help/). Instructors may find it useful to go through tutorials with students before the activity as well.

Once students have logged into their Scratch accounts, we introduce the various aspects and vocabulary of the program and practice using it (Figure 4). To program using Scratch, the user clicks on blocks and drags them into the script screen, where the blocks are attached to make an algorithm. The blocks are color-coded in the tool box under motion, looks, sound, pen, data (variables), events, control, sensing, operators, and more blocks. Scratch is commonly used to program animations and game-like environments, but in this lesson we will use Scratch to compute an output utilizing logic and variables.

Figure 4.

Scratch layout and vocabulary.

Figure 4.

Scratch layout and vocabulary.

Next, we build the first few sets of blocks together with the students (while projecting the computer screen) and talk through all of the blocks used. Figure 5 demonstrates how to create the blocks necessary for the program. We tie the blocks to CT concepts whenever possible (Figure 6). For example, using the if/then block is utilizing branching, and utilizing the data blocks, or orange blocks, is applying variables. See https://scratch.mit.edu/projects/100898229/#editor for the complete Scratch program used in this lesson. The amino acids in this program are grouped by the first two nucleotides in the triplet codon, but there are multiple ways to program this information, and the grouping of amino acids is not necessary for correct code.

Figure 5.

How to create blocks.

Figure 5.

How to create blocks.

Figure 6.

Scratch and CT connections.

Figure 6.

Scratch and CT connections.

Next, students work in pairs or individually to finish the codon algorithm. We tell students that when they encounter a problem, they should do their best to solve the problem on their own by trying different blocks. When we do help students, we refrain from giving them the answer, and attempt to lead them to the solution by asking leading questions and giving suggestions, such as, “What do you want to happen? Tell me what you want your program to do.” Often, if we can get the student to say the right code, they can find the corresponding blocks. As such, we often ask them to explain what they are trying to do, and lead them to using the language on the blocks so they can figure it out on their own.

If the teacher chooses not to use the Scratch programming extension, the same content can be covered utilizing computational modeling. In accordance with the procedures from Day 2, students can write an algorithm that takes in mRNA codons and translates them into amino acids, resulting in an amino acid sequence. In this activity, students would be modeling the Scratch program without having to use computers or program. Figure 7 depicts an example algorithm for translating mRNA to amino acids (AA).

Figure 7.

Example mRNA to amino acid sequence algorithm.

Figure 7.

Example mRNA to amino acid sequence algorithm.

Student Feedback

After implementation, nine of the ten participating students filled out a short survey about their experiences during the lesson. Prior to this lesson, only one student had experience with CT. When asked what they liked about these activities, students said they enjoyed playing Lightbot and “liked that it allowed creativity in the process and there was not one single right answer to how to solve the problems” (Student 3). Another student liked that the activities “let you see that there are connections between each activity and how they tie and apply into translation. It also helps you see translation in a bigger picture” (Student 2). Although these activities were rigorous and new to the students, most enjoyed the challenge and thought the activities were appropriate and attainable. “I liked how simple and approachable each activity was. The activities were games that I found easy to do, yet challenging like a game on my phone. Each activity was something that I could do outside of class by myself” (Student 1). One student did indicate that they did not enjoy the Scratch activity because of “personal interest reasons” (Student 8), and other students said that the Scratch program was repetitive and tedious, which can be a very common programming trait.

When asked if the activities helped them review and understand translation, students responded positively. Some students felt like the activities were a good review of the process, and others said it helped them solidify some of the process details. “[There] was so much stuff that was [occurring] in translation, when [I] first learned about it 2 years ago, the process was murky, couldn't really touch base on what happened in what order and the scale of everything” (Student 6). “[It's] easier to see translation when you work through it and have to apply it to programming. It helps you see the patterns and the bigger picture so that you can get past the basic idea of translation and focus on the smaller detailed things” (Student 4). Students also said that programming with Scratch helped them understand the codon to amino acid translation.

When asked if the activities helped them understand CT, students also responded positively. “I've never had much experience with programming or computation thinking, so I found this very interesting. The activities were simple and easy to grasp as well, so I understood the basics of computational thinking pretty well” (Student 1). Students thought the scaffolding that Lightbot provided aided them in their foundational CT understanding. “The app helped a lot. It made it not intimidating and the knowledge transferred well to the whiteboard activity” (Student 5).

In addition to CT understandings, we wanted to know if students could identify CT applications and usefulness. When asked if they thought CT was useful, students responded with a variety of applications. Students mentioned programming and making programming more efficient, data analysis applications, and various problem-solving applications. “Computational thinking helps one see the significance of all possible outcomes and be a more acute thinker in general. Also, with the increasingly technological world, programming-like skills will become more useful” (Student 1). CT “organizes things so that a student isn't seeing everything as one step, but can see operations that have patterns” (Student 2). CT “forces us to think about the cause and effects of all events. Sometimes, in a lot of businesses even, the steps are overlooked and then a problem or an error results” (Student 9).

Conclusion

This implementation was a successful pilot of a series of lessons that introduced students to CT through engagement with the protein synthesis translation process. Students played the Lightbot game to develop a foundation in CT concepts. These skills were transferred to the translation process as students designed, constructed, and evaluated translation algorithms. Finally, students engaged in visual programming to create a program that translated an mRNA strand to an amino acid chain. We also introduced an alternative activity to the Scratch extension that continued with algorithmic modeling of translation. Throughout the lesson, students learn about and apply algorithms, abstraction, iteration, branching, and variables. Students who experienced the three-day lesson responded very positively and self-reported CT learning and a deeper understanding of translation. After this lesson students were also able to see the varied applications and usefulness of CT. We argue that biological processes are ideal contexts for CT integration, and this lesson is an example. As biology teachers consider incorporating CT into their classrooms, we encourage them to share this article with their computer science teachers and collaborate on other projects using CT in biology.

References

References
Barr, V., & Stephenson, C. (
2011
).
Bringing Computational Thinking to K-12: What is Involved and What is the Role of the Computer Science Education Community?
Acm Inroads
,
2
(
1
),
48
54
.
Bundy, A. (
2007
).
Computational Thinking is Pervasive
.
Journal of Scientific and Practical Computing
,
1
(
2
),
67
69
.
Mishra, P., Yadav, A., &
Deep-Play Research Group
. (
2013
).
Rethinking Technology and Creativity in the 21st Century: Of Art and Algorithms
.
TechTrends
,
57
,
10
14
.
National Research Council (NRC)
. (
2010
).
Report of a Workshop on the Scope and Nature of Computational Thinking
.
Washington, DC
:
National Academies Press
.
NGSS Lead States
. (
2013
).
Next Generation Science Standards: For States, by States
.
Washington, DC
:
National Academies Press
.
Sanford, J. F., & Naidu, J. T. (
2016
).
Computational Thinking Concepts for Grade School
.
Contemporary Issues in Education Research
,
9
(
1
),
23
32
.
Schweingruber, H., Keller, T., & Quinn, H. (Eds.). (
2012
).
A Framework for K-12 Science Education: Practices, Crosscutting Concepts, and Core Ideas
.
Washington, DC
:
National Academies Press
.
Weintrop, D., Beheshti, E., Horn, M., Orton, K., Jona, K., Trouille, L., & Wilensky, U. (
2016
).
Defining Computational Thinking for Mathematics and Science Classrooms
.
Journal of Science Education and Technology
,
25
(
1
),
127
147
.
Wing, J. M. (
2006
).
Computational thinking
.
Communications of the ACM
,
49
(
3
),
33
35
.