Please enable JavaScript to use CodeHS

Standards Framework

for Arizona Software and App Design 2024

138

Standards in this Framework

Standard Description
1.1 Identify common computer threats (e.g., viruses, phishing, suspicious email, social engineering, spoofing, identity theft, spamming, and AI)
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.)
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)
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)
1.5 Describe methods for sanitizing user input to prevent issues (e.g., buffer overflows and SQL injection)
1.6 Analyze the CIA (confidentiality, integrity, and availability) triad
1.7 Explain how software defects relate to software security (e.g., buffer overflows and cross-site scripting)
2.1 Identify hazards and unsafe practices that can lead to serious accidents or injuries (i.e., electrostatic discharge hazards, poor ergonomic practices, etc.)
2.2 Describe OSHA and other state and national regulations designed to reduce safety risks and workplace injuries
2.3 Explain environmental considerations when disposing of computer/network components (i.e., disposing of batteries, devices with lithium batteries, etc.)
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.)
3.1 Differentiate among numeric, Boolean, character, string variables, and float and double
3.2 Select the appropriate data type for a given situation
3.4 Identify the correct syntax and usage for constants and variables (e.g., variable scope) in a program
3.5 Determine the correct syntax and safe functions for operations on strings, arrays, and data structures, including length, substring, and concatenation
3.6 Explain complications of storing and manipulating data (i.e., the Big-O notation used to analyze storage and efficiency concerns, etc.)
3.7 Discuss data structure size concerns and memory management, including stack and heap
3.8 Implement file storage operations, including reading, writing, and creating files
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
4.2 Calculate binary conversions (e.g., decimal, hexadecimal, and binary) to solve hardware and software problems
4.3 Identify and correctly use arithmetic operations applying the order of operations (precedence) for programming
4.4 Interpret and construct mathematical formulas used in code [i.e., y=n*x+b2-n*(a+b)]
4.5 Identify correct and problematic uses of integers, floating-point numbers, and fixed-point numbers in arithmetic
4.6 Emphasize the importance of precision and accuracy in numerical computations to mitigate errors in software development
4.7 Investigate bit-shift left/right and bit-wise operations
5.1 Compare values using relational operators (e.g., =, >, <, >=, <=, and not equal)
5.2 Evaluate Boolean expressions (e.g., AND, OR, NOT, NOR, and XOR)
5.3 Demonstrate and diagram conditional structures
5.4 Determine the correct syntax and nesting for decision structures (e.g., if/else, if, and switch case)
5.5 Create and utilize functions and methods
6.1 Demonstrate basic uses of arrays including initialization, storage, retrieval of values, and how to use them as arguments
6.2 Distinguish between arrays and hash maps (associative arrays)
6.3 Identify techniques for declaring, initializing, and modifying user-defined data types
6.4 Search and sort data in an array
6.5 Diagram, create, and use two-dimensional arrays
6.6 Describe the efficiency of different sorting algorithms (e.g., bubble, insertion, and merge)
6.7 Describe the efficiency of linear vs. binary searches [e.g., O(n) and O(log n)]
6.8 Investigate more advanced data structures like trees and graphs
7.1 Identify various types of iteration structure (e.g., while, for, for-each, and recursion)
7.2 Explain how loops are controlled (variable conditions and exits)
7.3 Employ the correct syntax for nested loops
7.4 Compute the values of variables involved with nested loops (i.e., variable changes throughout a loop)
7.5 Diagram iterative structures and use in writing programs
8.1 Explain the benefits of cloud-based computing
8.2 Classify the components and functions of the common internet protocols (e.g., HTTP, HTTPS, SSH, SFTP, FTPS, IP addresses, IPV6, and IMAP)
8.3 Determine services run by web servers [e.g., scripting languages (client- and server-side scripting), serverless architectures, cloud computing, databases, and media]
8.4 Identify performance issues (e.g., bandwidth, internet connection types, pages loading slowly, resolution, and size graphics)
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)]
9.1 Examine key components and functions of the internet and web browsers
9.2 Identify client collaboration sources/platforms (e.g., GitHub, Google Drive, Dropbox, JSFiddle, Visual Studio Live Share, and browser developer tools)
9.3 Analyze remote computing tools and services and their application [e.g., SSH (secure shell)]
9.4 Explore Modern Web and Application Frameworks (i.e., Node.js, Next.js, React, Django, GoLang, Flutter, etc.)
9.5 Discuss Containerization and Microservices in the context of Internet-based software architectures
10.1 Develop a maintenance plan to prioritize and schedule network security tasks (i.e., Cron Jobs)
10.2 Describe the purpose and benefits of network utilities [i.e., Network Statistics (Netstat), Name Server Lookup(NsLookup), Ping, Traceroute, etc.]
10.3 Demonstrate the use of visual indicators and diagnostic utilities (i.e., Wireshark, etc.) to interpret problems
10.4 Evaluate connectivity issues in various node environments (i.e., smartphones, switches, tablets, Linux/UNIX, Windows, etc.)
10.5 Identify and resolve network issues (i.e., cable failure, connection failure, environmental, misconfigurations, power, user error, etc.)
10.6 Research common tools and methods for monitoring a network
10.7 Describe AI and machine learning-based tools for network maintenance and issue resolution (i.e., LLM)
11.1 Discuss common editors and add-ins
11.2 Use a program editor to enter and modify code
11.3 Identify correct input/output statements
11.4 Choose the correct method of assigning input to variables including data sanitization (i.e., input text to numbers)
11.5 Determine the correct method of outputting data with formatting and escaping (e.g., ANSI escape code)
11.6 Differentiate between interpreted and compiled code and run executable code
11.7 Identify the purpose of a build system (e.g., make, rake, ant, maven, SCons, and grunt)
11.8 Apply industry standards to program documentation (e.g., self-documenting code; function-level, program-level, and user-level documentation)
11.9 Name identifiers and formatting code by applying recognized conventions (e.g., camel casing)
11.10 Perform refactoring techniques to reduce repetitious code and improve maintainability
11.11 Use parameters to pass data into program modules and return values from modules
11.12 Discuss the use of random number generators, including concepts of true randomness and seeding
12.1 Explain errors in program modules
12.2 Identify boundary cases and generate appropriate test data
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)
12.4 Categorize, identify, and correct errors in code, including syntax, semantic, logic, and runtime
12.5 Practice different methods of debugging (e.g., hand-trace code and real-time debugging tools)
13.1 Integrate standard library functions
13.2 Design code that incorporates third-party libraries (e.g., web-based and package managers)
13.3 Explain and interact with an Application Program Interface (API)
13.4 Investigate using community information to solve problems (e.g., stack overflow, forum post, etc.)
13.5 Create a README markdown file (.md) to document and explain basic install and usage steps
14.1 Compare version control system (e.g., Git and Mercurial)
14.2 Identify the purpose and types of version control systems (e.g., local, centralized, and distributed)
14.3 Create new repositories and perform basic operations (e.g., adding, pushing, and pulling source code from repositories)
14.4 Explain version control branching and its uses
14.5 Restore previous versions of code from the repository
14.6 Research the principles of DevOps, DevSecOps, and Continuous Integration/Continuous Deployment (CI/CD) as part of version control and software development lifecycle
14.7 Integrate version control workflows (i.e., continuous deployment) using collaborative development practices
14.8 Demonstrate document version control (i.e., commit messages, recovery from common errors, release notes, etc.)
15.1 Investigate user-centered design (UCD), prototyping, and wireframing used during the design process
15.2 Apply W3C standards and style conventions (e.g., HTML, CSS, and JavaScript)
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)
15.4 Explain the concept of responsive design and applications (i.e., loading times)
15.5 Employ graphics methods to create images at specified locations
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)
15.7 Apply UI/UX design for multiple platforms including computers, mobile devices, and browsers
15.8 Incorporate SEO (search engine optimization) and web optimization techniques
15.9 Integrate user testing and feedback loops to refine interface designs and improve user experience
15.10 Analyze feature limitations and compatibility issues between different browsers and their versions
15.11 Discuss framework and component libraries for CSS (cascading style sheets)and JavaScript
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
16.2 Discuss data backup and recovery, data integrity, and data privacy (e.g., blockchain, edge computing, and quantum storage
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]
16.4 Differentiate among cloud storage, software storage, defined storage, file storage, block storage, object storage, memory, and cache storage in software applications
16.5 Demonstrate creating, reading, updating, and dropping a database
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)
16.7 Use, update, and manage data storage (i.e., local, cloud, NAS, RAID, SANs, etc.)
16.8 Review relational and NoSQL databases, covering normalization and schema design
16.9 Discuss data migration and synchronization to simulate real-world data management scenarios (i.e., banking transactions)
17.1 Identify the differences between primitive and non-primitive data structures
17.2 Differentiate between an object instance and a class
17.3 Discuss the roles of inheritance, composition, and class relationships
17.4 Instantiate objects from existing classes
17.5 Interpret the state of an object by invoking accessor methods (i.e., getter)
17.6 Change the state of an object by invoking a modifier method (i.e., setter)
17.7 Determine the requirements for constructing new objects by reading the documentation
17.8 Create a user-defined class and a subclass of an existing class
17.9 Identify the use of an abstract class as opposed to an interface
17.10 Explore advanced programming concepts (i.e., splitting files into different source files, principles of Inheritance, encapsulation, and polymorphism)
17.11 Investigate data representations in project creation (e.g., JSON and XML)
17.12 Explain the implementation and use of arguments, pointers, and references in programming
17.13 Demonstrate the principles of SOLID design and design patterns in object-oriented programming (OOPs)
18.1 Investigate debugging techniques, error propagation and handling, and graceful degradation
18.2 Research causes for compilation and logical errors
18.3 Identify and resolve runtime errors
18.4 Describe error handling strategies based on severity
18.5 Identify and resolve unexpected return values
18.6 Investigate standard exception classes and their uses
18.7 Develop custom exception classes (i.e., throw)
19.1 Discuss software development methods (i.e., waterfall, agile, etc.) and ownership rights
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
19.3 Identify components of a successful app
19.4 Discuss the cost in developing and launching an app
19.5 Research monetization strategies for apps (i.e., ads, in-app purchases, and premium features)
19.6 Investigate basic project management concepts in the software development process
19.7 Evaluate the importance of customer feedback in the software development cycle
19.8 Research trends in the technology sector (i.e., blockchain, quantum computing, edge computing mobile apps, cloud computing, AI, etc.)