K-12 Computer Science Standards

Arizona Software and App Design 2024

138 Standards

1

1.1

Identify common computer threats (e.g., viruses, phishing, suspicious email, social engineering, spoofing, identity theft, spamming, and AI)

2

1.2

Describe potential vulnerabilities and risk management for information security [i.e., SIEM (security information and event management) software, OWASP’s Top 10, CVEs (common vulnerabilities and exposure), etc.)

3

1.3

Identify procedures to maintain data integrity and security (e.g., lock the screen; report and delete unrecognized, suspicious emails; use trustworthy USB flash drives; and use approved software)

4

1.4

Explain best practices to maintain integrity and security in software development (e.g., encryption, hashing, code signing, sandboxes, virtual machine (VM) containers, code versioning systems, and digital signatures)

5

1.5

Describe methods for sanitizing user input to prevent issues (e.g., buffer overflows and SQL injection)

6

1.6

Analyze the CIA (confidentiality, integrity, and availability) triad

7

1.7

Explain how software defects relate to software security (e.g., buffer overflows and cross-site scripting)

8

2.1

Identify hazards and unsafe practices that can lead to serious accidents or injuries (i.e., electrostatic discharge hazards, poor ergonomic practices, etc.)

9

2.2

Describe OSHA and other state and national regulations designed to reduce safety risks and workplace injuries

10

2.3

Explain environmental considerations when disposing of computer/network components (i.e., disposing of batteries, devices with lithium batteries, etc.)

11

2.4

Manage power consumption in the networked environment (i.e., wattage usage, green methods such as climate batteries and energy efficiency methods, cloud-based software, etc.)

12

3.1

Differentiate among numeric, Boolean, character, string variables, and float and double

13

3.2

Select the appropriate data type for a given situation

14

3.4

Identify the correct syntax and usage for constants and variables (e.g., variable scope) in a program

15

3.5

Determine the correct syntax and safe functions for operations on strings, arrays, and data structures, including length, substring, and concatenation

16

3.6

Explain complications of storing and manipulating data (i.e., the Big-O notation used to analyze storage and efficiency concerns, etc.)

17

3.7

Discuss data structure size concerns and memory management, including stack and heap

18

3.8

Implement file storage operations, including reading, writing, and creating files

19

4.1

Apply basic mathematics to hardware and software design, logic, and variable scope (e.g., bits, bytes, kilobytes, megabytes, gigabytes, terabytes, and petabytes) including kilohertz, megahertz, and gigahertz

20

4.2

Calculate binary conversions (e.g., decimal, hexadecimal, and binary) to solve hardware and software problems

21

4.3

Identify and correctly use arithmetic operations applying the order of operations (precedence) for programming

22

4.4

Interpret and construct mathematical formulas used in code [i.e., y=n*x+b2-n*(a+b)]

23

4.5

Identify correct and problematic uses of integers, floating-point numbers, and fixed-point numbers in arithmetic

24

4.6

Emphasize the importance of precision and accuracy in numerical computations to mitigate errors in software development

25

4.7

Investigate bit-shift left/right and bit-wise operations

26

5.1

Compare values using relational operators (e.g., =, >, <, >=, <=, and not equal)

27

5.2

Evaluate Boolean expressions (e.g., AND, OR, NOT, NOR, and XOR)

28

5.3

Demonstrate and diagram conditional structures

29

5.4

Determine the correct syntax and nesting for decision structures (e.g., if/else, if, and switch case)

30

5.5

Create and utilize functions and methods

31

6.1

Demonstrate basic uses of arrays including initialization, storage, retrieval of values, and how to use them as arguments

32

6.2

Distinguish between arrays and hash maps (associative arrays)

33

6.3

Identify techniques for declaring, initializing, and modifying user-defined data types

34

6.4

Search and sort data in an array

35

6.5

Diagram, create, and use two-dimensional arrays

36

6.6

Describe the efficiency of different sorting algorithms (e.g., bubble, insertion, and merge)

37

6.7

Describe the efficiency of linear vs. binary searches [e.g., O(n) and O(log n)]

38

6.8

Investigate more advanced data structures like trees and graphs

39

7.1

Identify various types of iteration structure (e.g., while, for, for-each, and recursion)

40

7.2

Explain how loops are controlled (variable conditions and exits)

41

7.3

Employ the correct syntax for nested loops

42

7.4

Compute the values of variables involved with nested loops (i.e., variable changes throughout a loop)

43

7.5

Diagram iterative structures and use in writing programs

44

8.1

Explain the benefits of cloud-based computing

45

8.2

Classify the components and functions of the common internet protocols (e.g., HTTP, HTTPS, SSH, SFTP, FTPS, IP addresses, IPV6, and IMAP)

46

8.3

Determine services run by web servers [e.g., scripting languages (client- and server-side scripting), serverless architectures, cloud computing, databases, and media]

47

8.4

Identify performance issues (e.g., bandwidth, internet connection types, pages loading slowly, resolution, and size graphics)

48

8.5

Compare different cloud service models [Software as a Service (SaaS), Platform as a Service (PaaS), Infrastructure as a Service (IaaS), and Function as a Service (FaaS)]

49

9.1

Examine key components and functions of the internet and web browsers

50

9.2

Identify client collaboration sources/platforms (e.g., GitHub, Google Drive, Dropbox, JSFiddle, Visual Studio Live Share, and browser developer tools)

51

9.3

Analyze remote computing tools and services and their application [e.g., SSH (secure shell)]

52

9.4

Explore Modern Web and Application Frameworks (i.e., Node.js, Next.js, React, Django, GoLang, Flutter, etc.)

53

9.5

Discuss Containerization and Microservices in the context of Internet-based software architectures

54

10.1

Develop a maintenance plan to prioritize and schedule network security tasks (i.e., Cron Jobs)

55

10.2

Describe the purpose and benefits of network utilities [i.e., Network Statistics (Netstat), Name Server Lookup(NsLookup), Ping, Traceroute, etc.]

56

10.3

Demonstrate the use of visual indicators and diagnostic utilities (i.e., Wireshark, etc.) to interpret problems

57

10.4

Evaluate connectivity issues in various node environments (i.e., smartphones, switches, tablets, Linux/UNIX, Windows, etc.)

58

10.5

Identify and resolve network issues (i.e., cable failure, connection failure, environmental, misconfigurations, power, user error, etc.)

59

10.6

Research common tools and methods for monitoring a network

60

10.7

Describe AI and machine learning-based tools for network maintenance and issue resolution (i.e., LLM)

61

11.1

Discuss common editors and add-ins

62

11.2

Use a program editor to enter and modify code

63

11.3

Identify correct input/output statements

64

11.4

Choose the correct method of assigning input to variables including data sanitization (i.e., input text to numbers)

65

11.5

Determine the correct method of outputting data with formatting and escaping (e.g., ANSI escape code)

66

11.6

Differentiate between interpreted and compiled code and run executable code

67

11.7

Identify the purpose of a build system (e.g., make, rake, ant, maven, SCons, and grunt)

68

11.8

Apply industry standards to program documentation (e.g., self-documenting code; function-level, program-level, and user-level documentation)

69

11.9

Name identifiers and formatting code by applying recognized conventions (e.g., camel casing)

70

11.10

Perform refactoring techniques to reduce repetitious code and improve maintainability

71

11.11

Use parameters to pass data into program modules and return values from modules

72

11.12

Discuss the use of random number generators, including concepts of true randomness and seeding

73

12.1

Explain errors in program modules

74

12.2

Identify boundary cases and generate appropriate test data

75

12.3

Perform integration testing, including tests within a program, to protect execution from bad input or other run-time errors (e.g., CI (continuous integration) and automated testing)

76

12.4

Categorize, identify, and correct errors in code, including syntax, semantic, logic, and runtime

77

12.5

Practice different methods of debugging (e.g., hand-trace code and real-time debugging tools)

78

13.1

Integrate standard library functions

79

13.2

Design code that incorporates third-party libraries (e.g., web-based and package managers)

80

13.3

Explain and interact with an Application Program Interface (API)

81

13.4

Investigate using community information to solve problems (e.g., stack overflow, forum post, etc.)

82

13.5

Create a README markdown file (.md) to document and explain basic install and usage steps

83

14.1

Compare version control system (e.g., Git and Mercurial)

84

14.2

Identify the purpose and types of version control systems (e.g., local, centralized, and distributed)

85

14.3

Create new repositories and perform basic operations (e.g., adding, pushing, and pulling source code from repositories)

86

14.4

Explain version control branching and its uses

87

14.5

Restore previous versions of code from the repository

88

14.6

Research the principles of DevOps, DevSecOps, and Continuous Integration/Continuous Deployment (CI/CD) as part of version control and software development lifecycle

89

14.7

Integrate version control workflows (i.e., continuous deployment) using collaborative development practices

90

14.8

Demonstrate document version control (i.e., commit messages, recovery from common errors, release notes, etc.)

91

15.1

Investigate user-centered design (UCD), prototyping, and wireframing used during the design process

92

15.2

Apply W3C standards and style conventions (e.g., HTML, CSS, and JavaScript)

93

15.3

Construct web pages and applications that are compliant with ADA (Americans with Disabilities Act) and sections 504 and 508 standards (e.g., emphasize accessibility and inclusive design in user interface development)

94

15.4

Explain the concept of responsive design and applications (i.e., loading times)

95

15.5

Employ graphics methods to create images at specified locations

96

15.6

Choose correct GUI (graphical user interface) objects for input and output of data to the GUI interface (e.g., text boxes, labels, radio buttons, check boxes, dropdowns, and list boxes)

97

15.7

Apply UI/UX design for multiple platforms including computers, mobile devices, and browsers

98

15.8

Incorporate SEO (search engine optimization) and web optimization techniques

99

15.9

Integrate user testing and feedback loops to refine interface designs and improve user experience

100

15.10

Analyze feature limitations and compatibility issues between different browsers and their versions

101

15.11

Discuss framework and component libraries for CSS (cascading style sheets)and JavaScript

102

16.1

Identify different data storage types (e.g., RAID, Cloud, SSD, HDD, Flash, tape, etc.) and explain how they relate to designing and developing software applications

103

16.2

Discuss data backup and recovery, data integrity, and data privacy (e.g., blockchain, edge computing, and quantum storage

104

16.3

Read/write data from/to a sequential file or database [i.e., handling sequential files, database operations, CRUD (create, read, update, delete) operations]

105

16.4

Differentiate among cloud storage, software storage, defined storage, file storage, block storage, object storage, memory, and cache storage in software applications

106

16.5

Demonstrate creating, reading, updating, and dropping a database

107

16.6

Employ the proper use of database applications that work with different languages (e.g., MongoDB MQL, Microsoft Access SQL, and Oracle Databases SQL)

108

16.7

Use, update, and manage data storage (i.e., local, cloud, NAS, RAID, SANs, etc.)

109

16.8

Review relational and NoSQL databases, covering normalization and schema design

110

16.9

Discuss data migration and synchronization to simulate real-world data management scenarios (i.e., banking transactions)

111

17.1

Identify the differences between primitive and non-primitive data structures

112

17.2

Differentiate between an object instance and a class

113

17.3

Discuss the roles of inheritance, composition, and class relationships

114

17.4

Instantiate objects from existing classes

115

17.5

Interpret the state of an object by invoking accessor methods (i.e., getter)

116

17.6

Change the state of an object by invoking a modifier method (i.e., setter)

117

17.7

Determine the requirements for constructing new objects by reading the documentation

118

17.8

Create a user-defined class and a subclass of an existing class

119

17.9

Identify the use of an abstract class as opposed to an interface

120

17.10

Explore advanced programming concepts (i.e., splitting files into different source files, principles of Inheritance, encapsulation, and polymorphism)

121

17.11

Investigate data representations in project creation (e.g., JSON and XML)

122

17.12

Explain the implementation and use of arguments, pointers, and references in programming

123

17.13

Demonstrate the principles of SOLID design and design patterns in object-oriented programming (OOPs)

124

18.1

Investigate debugging techniques, error propagation and handling, and graceful degradation

125

18.2

Research causes for compilation and logical errors

126

18.3

Identify and resolve runtime errors

127

18.4

Describe error handling strategies based on severity

128

18.5

Identify and resolve unexpected return values

129

18.6

Investigate standard exception classes and their uses

130

18.7

Develop custom exception classes (i.e., throw)

131

19.1

Discuss software development methods (i.e., waterfall, agile, etc.) and ownership rights

132

19.2

Explore the basics of app markets, including popular platforms (i.e., Google Play Store and Apple App Store) and identify components of a successful app

133

19.3

Identify components of a successful app

134

19.4

Discuss the cost in developing and launching an app

135

19.5

Research monetization strategies for apps (i.e., ads, in-app purchases, and premium features)

136

19.6

Investigate basic project management concepts in the software development process

137

19.7

Evaluate the importance of customer feedback in the software development cycle

138

19.8

Research trends in the technology sector (i.e., blockchain, quantum computing, edge computing mobile apps, cloud computing, AI, etc.)

Ready to Start Learning?

Explore our courses aligned with these standards

View School Program