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