Standards in this Framework
Standards Mapped
Mapped to Course
| Standard | Lessons | 
|---|---|
| 
                     1.1 
                     Establish objectives and outcomes for a task  | 
                
                    
                     | 
                
                
            
| 
                     1.2 
                     Explain the process of decomposing a large programming problem into smaller, more manageable procedures  | 
                
                    
                    
  | 
                
                
            
| 
                     1.3 
                     Explain “visualizing” as a problem-solving technique prior to writing code  | 
                
                    
                     | 
                
                
            
| 
                     1.4 
                     Describe problem-solving and troubleshooting strategies applicable to software development  | 
                
                    
                     | 
                
                
            
| 
                     2.1 
                     Identify common computer threats (e.g., viruses, phishing, suspicious email, social engineering, spoofing, identity theft, and spamming)  | 
                
                    
                     | 
                
                
            
| 
                     2.2 
                     Describe potential vulnerabilities in software (e.g., OWASP’s Top 10)  | 
                
                    
                     | 
                
                
            
| 
                     2.3 
                     Identify procedures to maintain data integrity and security (e.g., lock the screen, delete unrecognized emails, use trustworthy thumb drives, and use approved software)  | 
                
                    
                     | 
                
                
            
| 
                     2.4 
                     Explain best practices to maintain integrity and security in software development (e.g., encryption, hashing, and digital signatures)  | 
                
                    
                     | 
                
                
            
| 
                     2.5 
                     Describe methods for sanitizing user input to prevent issues (e.g., buffer overflows and SQL injection)  | 
                
                    
                     | 
                
                
            
| 
                     2.6 
                     Explain the CIA (confidentiality, integrity, and availability) triad  | 
                
                    
                     | 
                
                
            
| 
                     2.7 
                     Explain how software defects relate to software security (e.g., buffer overflows and cross-site scripting)  | 
                
                    
                     | 
                
                
            
| 
                     3.1 
                     Explore intellectual property rights including software licensing and software duplication [e.g., Digital Millennium Copyright Act (DMCA), software licensing, and software duplication]  | 
                
                    
                     | 
                
                
            
| 
                     3.2 
                     Compare and contrast open source and proprietary systems in relation to legal and ethical issues (e.g., data pricing, use of public and private networks, social networking, industry-related data, and data piracy)  | 
                
                    
                     | 
                
                
            
| 
                     3.3 
                     Identify issues and regulations affecting computers, other devices, the internet, and information privacy (e.g., HIPAA, COPPA, CISPA, FERPA, PCI, GDPR, and data brokers)  | 
                
                    
                     | 
                
                
            
| 
                     4.1 
                     Declare numeric, Boolean, character, string variables, and float and double  | 
                
                    
                    
  | 
                
                
            
| 
                     4.2 
                     Choose the appropriate data type for a given situation  | 
                
                    
                    
  | 
                
                
            
| 
                     4.3 
                     Identify the correct syntax and usage for constants and variables in a program  | 
                
                    
                    
  | 
                
                
            
| 
                     4.4 
                     Identify the correct syntax and safe functions for operations on strings, including length, substring, and concatenation  | 
                
                    
                    
  | 
                
                
            
| 
                     4.5 
                     Explain complications of storing and manipulating data (i.e., the Big-O notation for analyzing storage and efficiency concerns, etc.)  | 
                
                    
                     | 
                
                
            
| 
                     4.6 
                     Research industry relevant programming languages (i.e., Java, JavaScript, Python, etc.)  | 
                
                    
                    
  | 
                
                
            
| 
                     5.1 
                     Apply basic mathematics to hardware (e.g., bits, bytes, kilobytes, megabytes, gigabytes, and terabytes)  | 
                
                    
                     | 
                
                
            
| 
                     5.2 
                     Use binary to decimal, decimal to hexadecimal, hexadecimal to decimal, binary to hexadecimal, and binary to hexadecimal conversions to solve hardware and software problems  | 
                
                    
                     | 
                
                
            
| 
                     5.3 
                     Identify and correctly use arithmetic operations applying the order of operations (precedence) with respect to programming  | 
                
                    
                    
  | 
                
                
            
| 
                     5.4 
                     Interpret and construct mathematical formulas  | 
                
                    
                    
  | 
                
                
            
| 
                     5.5 
                     Identify correct and problematic uses of integers, floating-point numbers, and fixed-point numbers in arithmetic  | 
                
                    
                    
  | 
                
                
            
| 
                     6.1 
                     Use the correct syntax for decision statements (e.g., if/else, if, and switch case)  | 
                
                    
                    
  | 
                
                
            
| 
                     6.2 
                     Compare values using relational operators (e.g., =, >, <, >=, <=, and not equal)  | 
                
                    
                    
  | 
                
                
            
| 
                     6.3 
                     Evaluate Boolean expressions (e.g., AND, OR, NOT, NOR, and XOR)  | 
                
                    
                    
  | 
                
                
            
| 
                     6.4 
                     Use the correct nesting for decision structures  | 
                
                    
                    
  | 
                
                
            
| 
                     7.1 
                     Identify various types of iteration structure (e.g., while, for, for-each, and recursion)  | 
                
                    
                    
  | 
                
                
            
| 
                     7.2 
                     Identify how loops are controlled (variable conditions and exits)  | 
                
                    
                    
  | 
                
                
            
| 
                     7.3 
                     Use the correct syntax for nested loops  | 
                
                    
                    
  | 
                
                
            
| 
                     7.4 
                     Compute the values of variables involved with nested loops  | 
                
                    
                    
  | 
                
                
            
| 
                     8.1 
                     Demonstrate basic uses of arrays including initialization, storage, and retrieval of values  | 
                
                    
                    
  | 
                
                
            
| 
                     8.2 
                     Distinguish between arrays and hash maps (associative arrays)  | 
                
                    
                     | 
                
                
            
| 
                     8.3 
                     Identify techniques for declaring, initializing, and modifying user-defined data types  | 
                
                    
                    
  | 
                
                
            
| 
                     8.4 
                     Search and sort data in an array  | 
                
                    
                    
  | 
                
                
            
| 
                     8.5 
                     Create and use two-dimensional arrays  | 
                
                    
                    
  | 
                
                
            
| 
                     8.6 
                     Describe the efficiency of different sorting algorithms (e.g., bubble, insertion, and merge)  | 
                
                    
                     | 
                
                
            
| 
                     8.7 
                     Describe the efficiency of linear vs. binary searches [e.g., O(n) and O(log n)]  | 
                
                    
                    
  | 
                
                
            
| 
                     9.1 
                     Explain cloud-based computing and content delivery networks  | 
                
                    
                     | 
                
                
            
| 
                     9.2 
                     Identify the components and functions of the internet (e.g., HTTP, HTTPS, FTP, IP addresses, and IMAP)  | 
                
                    
                     | 
                
                
            
| 
                     9.3 
                     Identify services run by web servers [e.g., scripting languages (client- and server-side scripting), databases, and media]  | 
                
                    
                     | 
                
                
            
| 
                     9.4 
                     Identify performance issues (e.g., bandwidth, internet connection types, pages loading slowly, resolution, and size graphics)  | 
                
                    
                     | 
                
                
            
| 
                     9.5 
                     Differentiate among shared hosting, dedicated server, and virtual private server (VPS)  | 
                
                    
                     | 
                
                
            
| 
                     9.6 
                     Identify Internet of Things (IOT) and common communication interfaces (e.g., Bluetooth, NFC, Wi-Fi, and LTE)  | 
                
                    
                     | 
                
                
            
| 
                     10.1 
                     Identify key components and functions of internet and web specialty browsers  | 
                
                    
                     | 
                
                
            
| 
                     10.2 
                     Use client collaboration sources/platforms (e.g., GitHub, Google Drive, Dropbox, JSFiddle, and browser developer tools)  | 
                
                    
                     | 
                
                
            
| 
                     10.3 
                     Analyze remote computing tools and services and their application  | 
                
                    
                     | 
                
                
            
| 
                     11.1 
                     Implement the steps in the System Development Life Cycle (SDLC) (e.g., planning, analysis, design, development, testing, implementation, and maintenance)  | 
                
                    
                     | 
                
                
            
| 
                     11.2 
                     Develop program requirements/specifications and a testing plan (e.g., user stories, automated testing, and test procedures)  | 
                
                    
                     | 
                
                
            
| 
                     11.3 
                     Apply pseudocode or graphical representations to plan the structure of a program or module (e.g., flowcharting, whiteboarding, and UML)  | 
                
                    
                     | 
                
                
            
| 
                     11.4 
                     Create and implement basic algorithms  | 
                
                    
                    
  | 
                
                
            
| 
                     12.1 
                     Use a program editor to enter and modify code  | 
                
                    
                    
  | 
                
                
            
| 
                     12.2 
                     Identify correct input/output statements  | 
                
                    
                    
  | 
                
                
            
| 
                     12.3 
                     Choose the correct method of assigning input to variables including data sanitization  | 
                
                    
                    
  | 
                
                
            
| 
                     12.4 
                     Choose the correct method of outputting data with formatting and escaping  | 
                
                    
                    
  | 
                
                
            
| 
                     12.5 
                     Differentiate between interpreted and compiled code (e.g., steps necessary to run executable code)  | 
                
                    
                     | 
                
                
            
| 
                     12.6 
                     Identify the purpose of a build system (e.g., make, rake, ant, maven, SCons, and grunt)  | 
                
                    
                     | 
                
                
            
| 
                     12.7 
                     Apply industry standards in documentation (e.g., self-documenting code; function-level, program-level, and user-level documentation)  | 
                
                    
                    
  | 
                
                
            
| 
                     12.8 
                     Name identifiers and formatting code by applying recognized conventions  | 
                
                    
                    
  | 
                
                
            
| 
                     12.9 
                     Demonstrate refactoring techniques to reduce repetitious code and improve maintainability  | 
                
                    
                    
  | 
                
                
            
| 
                     12.10. 
                     Demonstrate the use of parameters to pass data into program modules  | 
                
                    
                    
  | 
                
                
            
| 
                     12.11 
                     Demonstrate the use of return values from modules  | 
                
                    
                    
  | 
                
                
            
| 
                     13.1 
                     Identify errors in program modules  | 
                
                    
                     | 
                
                
            
| 
                     13.2 
                     Identify boundary cases and generate appropriate test data  | 
                
                    
                     | 
                
                
            
| 
                     13.3 
                     Perform integration testing including tests within a program to protect execution from bad input or other run-time errors  | 
                
                    
                     | 
                
                
            
| 
                     13.4 
                     Categorize, identify, and correct errors in code, including syntax, semantic, logic, and runtime  | 
                
                    
                     | 
                
                
            
| 
                     13.5 
                     Perform different methods of debugging (e.g., hand-trace code and real time debugging tools)  | 
                
                    
                    
  | 
                
                
            
| 
                     14.1 
                     Use standard library functions  | 
                
                    
                    
  | 
                
                
            
| 
                     14.2 
                     Find and use third party libraries (e.g., web-based and package managers)  | 
                
                    
                     | 
                
                
            
| 
                     14.3 
                     Explain and interact with an Application Program Interface (API)  | 
                
                    
                     | 
                
                
            
| 
                     15.1 
                     Identify the purpose of version control systems (e.g., Git and Mercurial)  | 
                
                    
                     | 
                
                
            
| 
                     15.2 
                     Create a new repository  | 
                
                    
                     | 
                
                
            
| 
                     15.3 
                     Add, push, and pull source code from repository  | 
                
                    
                     | 
                
                
            
| 
                     15.4 
                     Explain branching and its uses  | 
                
                    
                     | 
                
                
            
| 
                     15.5 
                     Restore previous versions of code from the repository  | 
                
                    
                     | 
                
                
            
| 
                     16.1 
                     Apply W3C standards and style conventions  | 
                
                    
                     | 
                
                
            
| 
                     16.2 
                     Construct web pages and applications that are compliant with ADA and sections 504 and 508 standards  | 
                
                    
                     | 
                
                
            
| 
                     16.3 
                     Explain the concept of responsive design and applications  | 
                
                    
                     | 
                
                
            
| 
                     16.4 
                     Employ graphics methods to create images at specified locations  | 
                
                    
                     | 
                
                
            
| 
                     16.5 
                     Choose correct GUI objects for input and output of data to the GUI interface (e.g., text boxes, labels, radio buttons, check boxes, dropdowns, and list boxes)  | 
                
                    
                     | 
                
                
            
| 
                     17.1 
                     Input/output data from a sequential file or database  | 
                
                    
                     | 
                
                
            
| 
                     17.2 
                     Demonstrate creating, reading, updating, and dropping a database  | 
                
                    
                     | 
                
                
            
| 
                     17.3 
                     Demonstrate the proper use of SQL database applications that work with different languages (e.g., MongoDB, Microsoft Access, Oracle Databases, and Code.org’s App Lab)  | 
                
                    
                     | 
                
                
            
| 
                     18.1 
                     Make a distinction between an object and a class  | 
                
                    
                    
  | 
                
                
            
| 
                     18.2 
                     Differentiate among inheritance, composition, and class relationships  | 
                
                    
                    
  | 
                
                
            
| 
                     18.3 
                     Instantiate objects from existing classes  | 
                
                    
                    
  | 
                
                
            
| 
                     18.4 
                     Read the state of an object by invoking accessor methods  | 
                
                    
                    
  | 
                
                
            
| 
                     18.5 
                     Change the state of an object by invoking a modifier method  | 
                
                    
                    
  | 
                
                
            
| 
                     18.6 
                     Determine the requirements for constructing new objects by reading the documentation  | 
                
                    
                    
  | 
                
                
            
| 
                     18.7 
                     Create a user-defined class  | 
                
                    
                    
  | 
                
                
            
| 
                     18.8 
                     Create a subclass of an existing class  | 
                
                    
                    
  | 
                
                
            
| 
                     18.9 
                     Identify the use of an abstract class as opposed to an interface  | 
                
                    
                     | 
                
                
            
| 
                     18.10. 
                     Explain the object-oriented concepts of polymorphism, inheritance, and encapsulation  | 
                
                    
                    
  | 
                
                
            
| 
                     19.1 
                     Identify runtime errors  | 
                
                    
                     | 
                
                
            
| 
                     19.2 
                     Describe error handling strategies  | 
                
                    
                     | 
                
                
            
| 
                     19.3 
                     Handle unexpected return values  | 
                
                    
                     | 
                
                
            
| 
                     19.4 
                     Handle (catch) runtime errors and take appropriate action  | 
                
                    
                     | 
                
                
            
| 
                     19.5 
                     Throw standard exception classes  | 
                
                    
                     | 
                
                
            
| 
                     19.6 
                     Develop and throw custom exception classes  | 
                
                    
                     |