## Standards

Standard Description
CS.1.1.1 Create prototypes that use algorithms to solve computational problems by leveraging prior student knowledge and personal interests Lessons
CS.1.1.2 Describe how artificial intelligence drives many software and physical systems Lessons
CS.1.1.3 Implement an artificial intelligence algorithm to play a game against a human opponent or solve a problem Lessons
CS.1.1.4 Use and adapt classic algorithms to solve computational problems Lessons
CS.1.1.5 Develop classic algorithms in code to solve computational problems Lessons
CS.1.1.6 Evaluate algorithms in terms of their efficiency, correctness, and clarity Lessons
CS.1.2.1 Justify the selection of specific control structures when tradeoffs involve implementation, readability, and program performance, and explain the benefits and drawbacks of choices made Lessons
CS.1.2.2 Design and iteratively develop computational artifacts for practical intent, personal expression, or to address a societal issue by using events to initiate instructions Lessons
CS.1.2.3 Illustrate the flow of execution of a recursive algorithm Lessons
CS.1.2.4 Implement conditional controls in code Lessons
CS.1.2.5 Implement recursive algorithms in code Lessons
CS.1.3.1 Demonstrate the use of both linked lists and arrays to simplify solutions, generalizing computational problems instead of repeatedly using simple variables Lessons
CS.1.3.2 Compare and contrast fundamental data structures and their uses Lessons
CS.1.3.3 Implement arrays in code Lessons
CS.1.3.4 Implement ArrayLists and LinkedLists in code Lessons
CS.1.4.1 Decompose problems into smaller components through systematic analysis, using constructs such as procedures, modules, and/or objects Lessons
CS.1.4.2 Create artifacts by using procedures within a program, combinations of data and procedures, or independent but interrelated programs Lessons
CS.1.4.3 Construct solutions to problems using student-created components, such as procedures, modules and/or objects Lessons
CS.1.4.4 Analyze a large-scale computational problem and identify generalizable patterns that can be applied to a solution Lessons
CS.1.4.5 Demonstrate code reuse by creating programming solutions using libraries and APIs Lessons
CS.1.5.1 Systematically design and develop programs for broad audiences by incorporating feedback from users Lessons
CS.1.5.2 Evaluate licenses that limit or restrict the use of computational artifacts when using resources such as libraries Lessons
CS.1.5.3 Evaluate and refine computational artifacts to make them more usable by all and accessible to people with disabilities Lessons
CS.1.5.4 Design and develop computational artifacts while working in team roles and using collaborative tools Lessons
CS.1.5.5 Document design decisions using text, graphics, presentations, and/or demonstrations in the development of complex programs Lessons
CS.1.5.6 Plan and develop programs for broad audiences using a software life cycle process Lessons
CS.1.5.7 Explain security issues that might lead to compromised computer programs Lessons
CS.1.5.8 Develop programs for multiple computing platforms Lessons
CS.1.5.9 Use version control systems, integrated development environments (IDEs), and collaborative tools and practices (code documentation) in a group software project Lessons
CS.1.5.10 Develop and use a series of test cases to verify that a program performs according to its design specifications Lessons
CS.1.5.11 Modify an existing program to add additional functionality and discuss intended and unintended implications, e.g., breaking other functionality Lessons
CS.1.5.12 Evaluate key qualities of a program through a process such as a code review Lessons
CS.1.5.13 Compare multiple programming languages and discuss how their features make them suitable for solving different types of problems Lessons
CS.2.1.1 Explain how abstractions hide the underlying implementation details of computing systems embedded in everyday objects Lessons
CS.2.2.1 Compare levels of abstraction and interactions between application software, system software, and hardware layers Lessons
CS.2.2.2 Categorize the roles of operating system software Lessons
CS.2.3.1 Develop guidelines that convey systematic troubleshooting strategies that others can use to identify and fix errors Lessons
CS.2.3.2 Illustrate ways computing systems implement logic, input, and output through hardware components Lessons
CS.3.1.1 Translate between different bit representations of real-world phenomena, such as characters, numbers, and images, e.g., convert hexadecimal colors to decimal percentages, ASCII/Unicode representation Lessons
CS.3.1.2 Evaluate the tradeoffs in how data elements are organized and where data is stored Lessons
CS.3.1.3 Demonstrate the ability to store bit representation of real-world phenomena, characters, numbers, and images Lessons
CS.3.2.1 Create interactive data visualizations or alternative representations using software tools to help others better understand real-world phenomena Lessons
CS.3.2.2 Use data analysis tools and techniques to identify patterns in data representing complex systems Lessons
CS.3.2.3 Select data collection tools and techniques to generate data sets that support a claim or communicate information Lessons
CS.3.3.1 Create computational models that represent the relationships among different elements of data collected from a phenomenon, process, or model Lessons
CS.3.3.2 Evaluate the ability of models and simulations to test and support the refinement of hypotheses Lessons
CS.4.1.1 Evaluate the ways computing impacts personal, ethical, social, economic, and cultural practices Lessons
CS.4.1.2 Test and refine computational artifacts to reduce bias and equity deficits Lessons
CS.4.1.3 Demonstrate ways a given algorithm applies to problems across disciplines Lessons
CS.4.1.4 Explain the potential impacts of artificial intelligence on society Lessons
CS.4.1.5 Evaluate computational artifacts to maximize their beneficial effects and minimize harmful effects on society Lessons
CS.4.1.6 Create computational artifacts to maximize their beneficial effects and minimize harmful effects on society Lessons
CS.4.1.7 Evaluate the impact of equity, access, and influence on the distribution of computing resources in a global society Lessons
CS.4.1.8 Predict how computational innovations that have revolutionized aspects of our culture might evolve Lessons
CS.4.2.1 Use tools and methods for collaboration on a project to increase connectivity of people in different cultures and career fields Lessons
CS.4.2.2 Use tools and methods for collaboration to increase the productivity of a team Lessons
CS.4.3.1 Explain the beneficial and harmful effects that intellectual property laws can have on innovation Lessons
CS.4.3.2 Explain the privacy concerns related to the collection and generation of data through automated processes that may not be evident to users Lessons
CS.4.3.3 Evaluate the social and economic implications of privacy in the context of safety, law, or ethics Lessons
CS.4.3.4 Discuss the role of ethics in emerging technologies Lessons
CS.4.3.5 Debate laws and regulations that impact the development and use of software Lessons
CS.5.1.1 Evaluate the scalability and reliability of networks, by describing the relationship between routers, switches, servers, topology, and addressing Lessons
CS.5.1.2 Describe the issues that impact network functionality, e.g., bandwidth, load, delay, topology Lessons
CS.5.2.1 Illustrate how sensitive data can be affected by malware and other attacks Lessons
CS.5.2.2 Recommend security measures to address various scenarios based on factors such as efficiency, feasibility, and ethical impacts Lessons
CS.5.2.3 Compare various security measures, considering tradeoffs between the usability and security of a computing system Lessons
CS.5.2.4 Explain tradeoffs when selecting and implementing cybersecurity recommendations Lessons
CS.5.2.5 Compare ways software developers protect devices and information from unauthorized access Lessons