Decompose (break down) the steps needed to solve a problem into a precise sequence of instructions.
Create programs that use variables to store and modify data.
Create programs that include sequences, events, loops, and conditionals.
Decompose (break down) problems into smaller, manageable subproblems to facilitate the program development process.
Modify, remix, or incorporate portions of an existing program into one's own work, to develop something new or add more advanced features.
Model the way programs store and manipulate data by using numbers or other symbols to represent information.
Develop programs with sequences and simple loops, to express ideas or address a problem.
Test and debug (identify and fix errors) a program or algorithm to ensure it runs as intended.
Debug (identify and fix) errors in an algorithm or program that includes sequences and simple loops.
Using correct terminology, describe steps taken and choices made during the iterative process of program development.
Model daily processes by creating and following algorithms (sets of step-by-step instructions) to complete tasks.
Compare and refine multiple algorithms for the same task and determine which is the most appropriate.
Demonstrate code reuse by creating programming solutions using libraries and APIs.
Plan and develop programs for broad audiences using a software life cycle process.
Develop programs for multiple computing platforms.
Use version control systems, integrated development environments (IDEs), and collaborative tools and practices (code documentation) in a group software project.
Develop and use a series of test cases to verify that a program performs according to its design specifications.
Modify an existing program to add additional functionality and discuss intended and unintended implications (e.g., breaking other functionality).
Evaluate key qualities of a program through a process such as a code review.
Compare multiple programming languages and discuss how their features make them suitable for solving different types of problems.
Describe how artificial intelligence drives many software and physical systems.
Implement an artificial intelligence algorithm to play a game against a human opponent or solve a problem.
Use and adapt classic algorithms to solve computational problems.
Evaluate algorithms in terms of their efficiency, correctness, and clarity.
Compare and contrast fundamental data structures and their uses.
Illustrate the flow of execution of a recursive algorithm.
Construct solutions to problems using student-created components, such as procedures, modules and/or objects.
Use an iterative process to plan the development of a program by including others' perspectives and considering user preferences.
Analyze a large-scale computational problem and identify generalizable patterns that can be applied to a solution.
Take on varying roles, with teacher guidance, when collaborating with peers during the design, implementation, and review stages of program development.
Distribute tasks and maintain a project timeline when collaboratively developing computational artifacts.
Document programs in order to make them easier to follow, test, and debug.
Use flowcharts and/or pseudocode to address complex problems as algorithms.
Create clearly named variables that represent different data types and perform operations on their values.
Design and iteratively develop programs that combine control structures, including nested loops and compound conditionals.
Decompose problems and subproblems into parts to facilitate the design, implementation, and review of programs.
Create procedures with parameters to organize code and make it easier to reuse.
Create prototypes that use algorithms to solve computational problems by leveraging prior student knowledge and personal interests.
Use lists to simplify solutions, generalizing computational problems instead of repeatedly using simple variables.
Justify the selection of specific control structures when tradeoffs involve implementation, readability, and program performance, and explain the benefits and drawbacks of choices made.
Design and iteratively develop computational artifacts for practical intent, personal expression, or to address a societal issue by using events to initiate instructions.
Decompose problems into smaller components through systematic analysis, using constructs such as procedures, modules, and/or objects.
Create artifacts by using procedures within a program, combinations of data and procedures, or independent but interrelated programs.
Systematically design and develop programs for broad audiences by incorporating feedback from users.
Document design decisions using text, graphics, presentations, and/or demonstrations in the development of complex programs.
Develop plans that describe a program’s sequence of events, goals, and expected outcomes.
Discuss computing technologies that have changed the world, and express how those technologies influence, and are influenced by, cultural practices.
Demonstrate ways a given algorithm applies to problems across disciplines.