Prototype learning trajectories for computer science at grades K-5.
This trajectory focuses on ideas that will support elementary students in creating sequences of instructions that are both interpretable by a computer and produce a desired outcome. The trajectory is designed to guide the development of activities that support growth in student thinking around two core ideas that relate to this overall goal. One idea is that the order in which instructions are written and carried out can have an impact on the final result. Another idea is that instructions must be precise to lead to the desired outcome. The trajectory is designed to support students in exploring these core ideas in unplugged, then progress to applying the ideas to programming.
This trajectory focuses on how elementary students’ common understandings of repetition can be used as a starting point to develop an understanding of iteration and loops. The trajectory suggests that students can begin instruction on looping by exploring situations in everyday life where actions are repeated. Next, they can consider key questions about different examples of repetition: Does the repetition stop? If so, what makes it stop? The trajectory suggests building on students’ explorations of why repetitions stop to discuss the difference between infinite loops, counted loops, and conditional loops. Students can also ask, What is the effect of the repetition? to think about the cumulative effects that make loops such a powerful programming construct.
The overall goal of this trajectory is to help students develop the skills and understanding needed to be fluent and flexible users of conditional statements. The two earliest subgoals in the trajectory focus on the two parts of a conditional -- a condition that can be true or false, and an action that is associated with some particular event or cause -- and then suggests guiding students to think about those two parts can be systematically coordinated in an if-then statement, using examples from everyday life. The trajectory also includes a goal about attending to both possible states of a binary condition and considering whether each state should have an associated action. After students map these basic ideas onto the conditional construct in programming, the trajectory suggests that they explore how complex conditions can be used to create more sophisticated conditionals and how conditionals can be situated within a program to create branches in execution.
This trajectory focuses on building understanding of the utility of thinking about systems, including problems and programs, as being made up of several smaller parts. There are two interrelated strands in the trajectory. The upper part of the trajectory focuses on top-down thinking, or decomposing problems into smaller subproblems. The lower part of the trajectory focuses on bottom-up thinking, or putting together a complex solution from smaller parts. The trajectory is designed to suggest multiple ways that students could progress in their thinking on each strand and make productive connections between strands. For example, as students create solutions in a bottom-up manner, the trajectory suggests encouraging them to think about how components of their solutions could be used in other programs. As students decompose problems, the trajectory suggests encouraging them to think about whether a piece of the problem could be solved with an existing piece of code.
The overall goal of this trajectory is to support students in developing multiple strategies and techniques for debugging and the knowledge necessary to apply those techniques efficiently and strategically. The trajectory includes attention to five specific debugging strategies, including iterative refinement through trial and error and attending to intermediate results. There are also subgoals about two types of errors: small errors (e.g., in case or punctuation) and errors of omission. We expect that further research will suggests further strategies and error types that could be added. Lastly and importantly, the trajectory also includes subgoals about the overall role of errors in problem solving, noting that they can be useful, rather than always being seen as failures. We believe this disposition-oriented goal will be important to include in debugging instruction for young children.