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.) |