Students will understand:
- Compare and refine multiple algorithms for the same task and determine which is the most appropriate.
- Decompose (break down) problems into smaller, manageable subproblems to facilitate the program development process.
- Take on varying roles, with teacher guidance, when collaborating with peers during the design, implementation and review stages of program development.
- Describe how internal and external parts of computing devices function to form a system.
- Model how computer hardware and software work together as a system to accomplish tasks.
- Use flowcharts and/or pseudocode to address complex problems as algorithms.
- Systematically test and refine programs using a range of test cases
- Compare trade offs associated with computing technologies that affect people's everyday activities and career options.
- Distribute tasks and maintain a project timeline when collaboratively developing computational artifacts.
- Design projects that combine hardware and software components to collect and exchange data.
- Seek and incorporate feedback from team members and users to refine a solution that meets user needs.
- Discuss issues of bias and accessibility in the design of existing technologies.
- Decompose problems and subproblems into parts to facilitate the design, implementation, and review of programs.
- Document programs in order to make them easier to follow, test, and debug.
- Create clearly named variables that represent different data types and perform operations on their values.
- Incorporate existing code, media, and libraries into original programs, and give attribution.
- Design and iteratively develop programs that combine control structures, including nested loops and compound conditionals.