Please enable JavaScript to use CodeHS

Praxis 5652 Framework

Standards

Standard Description
I.A.1 Understand computing as a way of expressing creativity, solving problems, enabling communication, and fostering innovation in a variety of fields and careers Lessons
I.A.1.a recognize that computers can be used to showcase creativity Lessons
I.A.1.b recognize the benefits of using computers to solve problems Lessons
I.A.1.c provide examples of how computers enable communication and collaboration Lessons
I.A.1.d provide examples of how computers foster innovation Lessons
I.A.2 Know the obstacles to equal access to computing among different groups and the impact of those obstacles Lessons
I.A.2.a identify obstacles to equal access to computing among different groups (e.g., groups defined by gender, socioeconomic status, disability/accessibility needs) and the impact of those obstacles Lessons
I.A.2.b identify factors that contribute to the digital divide Lessons
I.A.2.c match obstacles to equal access with effective solutions Lessons
I.A.3 Understand beneficial and harmful effects of computing innovations and the trade-offs between them Lessons
I.A.3.a analyze computing innovations in terms of their social, economic, and cultural impacts, both beneficial and harmful Lessons
I.A.3.b identify trade-offs between beneficial and harmful effects of computer innovations Lessons
I.B.1 Know different methods of protecting intellectual property rights and the trade-offs between them in a variety of contexts (e.g., Creative Commons, open source, copyright) Lessons
I.B.1.a using correct vocabulary, describe how different methods of protecting intellectual property rights work Lessons
I.B.1.b given a context, identify appropriate methods of protecting intellectual property rights Lessons
I.B.1.c identify and compare trade-offs between different methods of protecting intellectual property rights Lessons
I.B.2 Understand ethical and unethical computing practices and their social, economic, and cultural implications Lessons
I.B.2.a identify ethical and unethical computing practices in context Lessons
I.B.2.b describe the social, economic, and cultural implications of ethical and unethical computing practices Lessons
I.B.2.c identify the conditions under which a given computing practice is ethical or legal Lessons
I.B.3 Know privacy and security issues regarding the acquisition, use, and disclosure of information in a digital world Lessons
I.B.3.a using correct vocabulary, describe privacy and security issues Lessons
I.B.3.b using correct vocabulary, describe privacy and security issues Lessons
I.B.3.c describe trade-offs between local and cloud-based data storage Lessons
I.B.3.d identify methods that digital services use to collect information about users Lessons
II.A.1 Understand abstraction as a foundation of computer science Lessons
II.A.1.a identify, create, or complete the correct ordering, from low to high, of an abstraction hierarchy Lessons
II.A.1.b identify abstractions in context Lessons
II.A.1.c identify details that can be removed from a solution in order to generalize it Lessons
II.A.2 Know how to use pattern recognition, problem decomposition, and abstraction to develop an algorithm Lessons
II.A.2.a given a table of values or other data source, identify the patterns in the data and identify algorithms that could produce the patterns Lessons
II.A.2.b identify components that could be part of an algorithm to solve a problem Lessons
II.A.2.c identify actions and actors when decomposing a problem Lessons
II.A.2.d identify appropriate decomposition strategies Lessons
II.A.3 Understand number base conversion and binary, decimal, and hexadecimal number systems Lessons
II.A.3.a convert between number bases Lessons
II.A.3.b analyze and compare representations of numbers in different bases Lessons
II.A.4 Understand how to develop and analyze algorithms expressed in multiple formats (e.g., natural language, flowcharts, pseudocode) Lessons
II.A.4.a interpret diagrams that describe algorithms, given an explanation of the symbols used Lessons
II.A.4.b compare algorithms written in multiple formats Lessons
II.A.4.c trace and analyze algorithms written in different formats Lessons
II.A.4.d identify correct sequencing of steps in an algorithm and errors in sequencing Lessons
II.B.1 Be familiar with the limitations of computing in terms of time, space, and solvability as well as with the use of heuristic solutions that can address these limitations Lessons
II.B.1.a identify and compare algorithms that are linear, quadratic, exponential, or logarithmic Lessons
II.B.1.b recognize the existence of problems that cannot be solved by a computer Lessons
II.B.1.c in context, identify factors that prevent a problem from being solvable Lessons
II.B.1.d identify situations where heuristic solutions are useful Lessons
II.B.1.e in context, identify space and time limitations of computational solutions to problems Lessons
II.B.2 Understand searching and sorting algorithms; can analyze sorting algorithms for correctness and can analyze searching algorithms for correctness and efficiency Lessons
II.B.2.a trace algorithms and predict output and intermediate results Lessons
II.B.2.b calculate the number of comparisons required for linear and binary search algorithms Lessons
II.B.3 Understand simple recursive algorithms (e.g., n factorial, sum of first n integers) Lessons
II.B.3.a trace simple recursive algorithms Lessons
II.B.3.b provide missing steps in incomplete simple recursive algorithms Lessons
II.B.3.c identify parts of a recursive algorithm (e.g., base or stopping condition, recursive call) Lessons
II.B.3.d identify errors in simple recursive algorithms Lessons
II.B.3.e identify an iterative algorithm that is equivalent to a recursive algorithm Lessons
II.B.4 Be familiar with the use of randomization in computing Lessons
II.B.4.a identify appropriate uses of randomization in a variety of applications Lessons
II.B.4.b identify the difference between random and pseudorandom numbers Lessons
III.A.1 Understand how to write and modify computer programs in a text-based programming language Lessons
III.A.1.a describe what a program does or be able to choose the code segment that correctly implements a given intended purpose Lessons
III.A.1.b identify missing code in a code segment with a stated intended purpose Lessons
III.A.1.c place statements in appropriate order to create a correct program Lessons
III.A.1.d identify how changing one part of a code segment will affect the output Lessons
III.A.2 Understand how to analyze computer programs in terms of correctness Lessons
III.A.2.a trace code and indicate the output printed or the value of variables after code segment execution Lessons
III.A.2.b indicate the inputs that produce given outputs for a code segment Lessons
III.A.2.c describe what a program does or choose the code segment that correctly implements a given intended purpose Lessons
III.A.2.d identify valid preconditions and postconditions Lessons
III.A.2.e compare two code segments or algorithm Lessons
III.A.2.f identify the type of error produced by a code segment (i.e., syntax, runtime, compile-time, overflow, round-off, logic) Lessons
III.A.2.g identify errors in incorrect code and changes that can be made to correct them Lessons
III.A.3 Know the concepts of extensibility, modifiability, and reusability Lessons
III.A.3.a identify the meaning of the terms Lessons
III.A.3.b identify functionally equivalent statements or code segments that differ in one of these three ways Lessons
III.A.3.c identify situations where the use of constants or variables would be preferred over hard-coded values Lessons
III.A.3.d identify opportunities for parameterization Lessons
III.A.3.e choose code that improves on given code by making it more extensible, modifiable, or reusable Lessons
III.A.3.f identify changes that would improve a given code segment Lessons
III.A.4 Understand the three basic constructs used in programming: sequence, selection, and iteration Lessons
III.A.4.a trace code and indicate the output printed or the value of variables after code segment execution Lessons
III.A.4.b indicate inputs that produce given outputs for a code segment Lessons
III.A.4.c describe what a program does or choose the code segment that correctly implements a given intended purpose Lessons
III.A.4.d identify missing code in a code segment with a stated intended purpose Lessons
III.A.4.e identify equivalent statements or code segments Lessons
III.A.4.f identify the three constructs when used in code Lessons
III.A.4.g identify which of the constructs are needed to implement given functionality Lessons
III.A.4.h convert code that does not use iteration to equivalent code that uses iteration Lessons
III.A.5 Understand how to use standard operators (i.e., assignment, arithmetic, relational, logical) and operator precedence to write programs Lessons
III.A.5.a trace code and indicate the output displayed or the value of variables after code segment execution Lessons
III.A.5.b indicate inputs that produce given outputs for a code segment Lessons
III.A.5.c describe what a program does or choose the code segment that correctly implements a stated intended purpose Lessons
III.A.5.d identify missing code in a code segment with a stated intended purpose Lessons
III.A.5.e identify equivalent statements or code segments Lessons
III.A.5.f place statements in appropriate order to create a correct program Lessons
III.A.5.g use Boolean algebra to identify equivalent Boolean expressions Lessons
III.A.5.h write a Boolean expression equivalent to given code, or identify code equivalent to a given Boolean expression or English description Lessons
III.A.5.i identify the correct implementation of a given formula, including formulas with fractions Lessons
III.A.5.j evaluate expressions that include arithmetic operations Lessons
III.A.6 Understand how to use variables and a variety of data types Lessons
III.A.6.a identify variables and data types (e.g., integers, floating point, string, Booleans, arrays/lists) Lessons
III.A.6.b identify the need for type conversion Lessons
III.A.6.c trace code and indicate the output printed or the value of variables after code segment execution Lessons
III.A.6.d indicate the inputs that produce given outputs for a code segment Lessons
III.A.6.e describe what a program does or choose the code segment that correctly implements a stated intended purpose Lessons
III.A.6.f identify missing code in a code segment with a stated intended purpose Lessons
III.A.6.g identify equivalent statements or code segment Lessons
III.A.6.h place statements in appropriate order to create a correct program Lessons
III.A.6.i describe the difference between integer and floating point numeric data types Lessons
III.A.6.j describe the difference between integer and floating point division Lessons
III.A.6.k describe the benefits of the use of each data type Lessons
III.A.6.l distinguish between global and local scope Lessons
III.A.6.m identify the most appropriate data type in a given context Lessons
III.A.6.n identify the correct sequence of string operations to produce a given output Lessons
III.B.1 Understand how to write and call procedures with parameters and return values Lessons
III.B.1.a trace code and indicate the output printed or the value of variables after code segment execution Lessons
III.B.1.b indicate inputs that produce given outputs for a code segment Lessons
III.B.1.c describe what a program does or choose the code segment that correctly implements a stated intended purpose Lessons
III.B.1.d identify missing code in a code segment with a stated intended purpose Lessons
III.B.1.e identify equivalent statements or code segments Lessons
III.B.1.f place statements in appropriate order to create a correct program Lessons
III.B.1.g trace code when references to objects and arrays are passed to procedures Lessons
III.B.1.h trace code that includes nested procedure calls Lessons
III.B.10 Be familiar with the features and capabilities of integrated development environments (IDEs) Lessons
III.B.10.a identify components of IDEs Lessons
III.B.10.b identify benefits and drawbacks of using IDEs Lessons
III.B.10.c identify the costs and benefits of context editors Lessons
III.B.11 Be familiar with the differences between low- and high-level programming languages Lessons
III.B.11.a identify characteristics of low- and high-level languages Lessons
III.B.12 Be familiar with different programming paradigms Lessons
III.B.12.a identify the terminology of procedural programming Lessons
III.B.12.b identify the terminology of object-oriented programming Lessons
III.B.12.c compare programming paradigms Lessons
III.B.13 Know object-oriented programming concepts Lessons
III.B.13.a identify classes, instance variables, and methods given a diagram Lessons
III.B.13.b identify the benefits of inheritance and encapsulation Lessons
III.B.13.c identify distinctions between overloading and overriding Lessons
III.B.14 Be familiar with program compilation and program interpretation Lessons
III.B.14.a identify differences between compilation and interpretation Lessons
III.B.14.b identify differences between source code and object code Lessons
III.B.2 Know the concepts of event-driven programs that respond to external events (e.g., sensors, messages, clicks) Lessons
III.B.2.a trace code and indicate the output printed or the value of variables after code segment execution Lessons
III.B.2.b indicate inputs that produce given outputs for a code segment Lessons
III.B.2.c describe what a program does or choose the code segment that correctly implements a stated intended purpose Lessons
III.B.2.d identify missing code in a code segment with a stated intended purpose Lessons
III.B.2.e identify possible errors due to asynchronous events Lessons
III.B.2.f identify aspects of concurrency in event-driven programming Lessons
III.B.3 Be familiar with usability and user experience (e.g., ease of use and accessibility) Lessons
III.B.3.a identify code that improves on given code in terms of usability or user experience Lessons
III.B.3.b identify meaningful error messages Lessons
III.B.3.c identify features that improve accessibility Lessons
III.B.4 Be familiar with dictionaries/maps, stacks, and queues Lessons
III.B.4.a identify a data structure based on a description of behavior or appropriate use Lessons
III.B.4.b given goals, constraints, or context, identify the most appropriate data structure Lessons
III.B.4.c trace code that uses a particular data structure Lessons
III.B.5 Understand how to use debugging techniques and appropriate test cases Lessons
III.B.5.a identify which test cases are most useful for given code Lessons
III.B.5.b differentiate between different types of errors (e.g., overflow, round-off, syntax, runtime, compile-time, logic) Lessons
III.B.5.c describe useful debugging techniques (e.g., where to put print statements) Lessons
III.B.5.d differentiate between empirical testing and proof Lessons
III.B.5.e identify errors in code and solutions to those errors Lessons
III.B.6 Be familiar with characteristics of well-documented computer programs that are usable, readable, and modular Lessons
III.B.6.a identify characteristics of good documentation Lessons
III.B.6.b identify good and poor documentation practices in context Lessons
III.B.7 Be familiar with techniques to obtain and use feedback to produce high-quality code (e.g., code reviews, peer feedback, end user feedback) Lessons
III.B.7.a identify situations in which each of the three listed techniques are useful Lessons
III.B.8 Know how to use libraries and APIs Lessons
III.B.8.a identify correct call(s) and use of return values given an A P I definition Lessons
III.B.8.b identify reasons to use or not use libraries in place of writing original code Lessons
III.B.8.c identify applications (e.g., math libraries, random number generation) that use APIs Lessons
III.B.9 Understand programming techniques to validate correct input and detect incorrect input Lessons
III.B.9.a identify effective input data validation strategies Lessons
III.B.9.b compare data validation (proper range and format) and data verification (e.g., password verification) Lessons
III.B.9.c identify improvements to code for which data validation is required Lessons
IV.A.1 Understand bits as the universal medium for expressing digital information Lessons
IV.A.1.a perform calculations, using bits and bytes Lessons
IV.A.1.b determine the number of bits and bytes required to store a given amount of data Lessons
IV.A.1.c given the description of an encoding scheme, encode or decode data Lessons
IV.A.1.d describe lossy and lossless data compression Lessons
IV.A.1.e explain why binary numbers are fundamental to the operation of computer systems Lessons
IV.A.2 Be familiar with concepts of data encryption and decryption Lessons
IV.A.2.a distinguish between encoding and encryption Lessons
IV.A.2.b identify trade-offs in the use of data encryption Lessons
IV.A.3 Know how to use computational tools, including spreadsheets, to analyze data in order to discover, explain, and visualize patterns, connections, and trends Lessons
IV.A.3.a transform data to make it more useful Lessons
IV.A.3.b identify specific data or characteristics of specific data that need to be removed or modified before an entire data set can be used Lessons
IV.A.3.c describe the use of spreadsheet operations (e.g., formulas, filters, sorts, charts, graphs) to analyze and visualize data Lessons
IV.B.1 Be familiar with the use of computing in simulation and modeling Lessons
IV.B.1.a describe questions that can be answered with a given simulation, or explain what data and process are required in a simulation in order to answer a given question Lessons
IV.B.1.b trace code in a simulation context Lessons
IV.B.1.c identify missing code in a simulation context Lessons
IV.B.1.d identify the impact of changes to simulations (e.g., more or fewer variables, more or less data) Lessons
IV.B.1.e identify applications of simulation and modeling Lessons
IV.B.2 Be familiar with methods to store, manage, and manipulate data Lessons
IV.B.2.a use terminology and concepts of files and databases Lessons
IV.B.2.b identify measures of file size (e.g., byte, kilo, mega, giga, tera, peta) Lessons
IV.B.2.c identify issues connected with the storage requirements of computing applications, including scale, redundancy, and backup Lessons
IV.B.3 Be familiar with a variety of computational methods for data collection, aggregation, and generation Lessons
IV.B.3.a identify the benefits of working with publicly available data sets Lessons
IV.B.3.b identify the types of data generated by surveys and sensors Lessons
IV.B.3.c identify examples of crowdsourcing and citizen science Lessons
IV.B.3.d identify appropriate data-collection methods for a given context and purpose Lessons
V.A.1 Know that operating systems are programs that control and coordinate interactions between hardware and software components Lessons
V.A.1.a identify hardware components and their functions Lessons
V.A.1.b identify software components and their functions Lessons
V.A.1.c identify common operating systems tasks Lessons
V.A.1.d identify resource issues that have an impact on functionality Lessons
V.A.2 Be familiar with computing systems embedded in everyday objects (e.g., Internet of Things [IoT], ATMs, medical devices) Lessons
V.A.2.a describe what an embedded system is Lessons
V.A.2.b define what the IoT is and how it is used Lessons
V.A.2.c describe how sensors are used in embedded systems Lessons
V.A.3 Know the capabilities, features, and uses of different types of computing systems (e.g., desktop, mobile, cluster) Lessons
V.A.3.a identify capabilities, features, and uses for each type of computer system Lessons
V.A.3.b identify criteria to evaluate and compare computing systems Lessons
V.A.4 Be familiar with computers as layers of abstraction from hardware (e.g., logic gates, chips) to software (e.g., system software, applications) Lessons
V.A.4.a identify appropriate abstraction layers for hardware and software components Lessons
V.A.5 Be familiar with the steps required to execute a computer program (fetch-decode-execute cycles) Lessons
V.A.5.a describe what happens during fetch, decode, and execute, including the order of the steps in the cycle Lessons
V.A.6 Be familiar with trade-offs between local, network, and cloud computing and storage Lessons
V.A.6.a identify advantages and disadvantages in terms of performance, cost, security, reliability, and collaboration Lessons
V.A.6.b identify means of storing binary data Lessons
V.A.7 Be familiar with communication between devices Lessons
V.A.7.a identify and compare wireless communication systems Lessons
V.A.7.b identify and compare wired communication systems Lessons
V.A.7.c identify and compare network types Lessons
V.B.1 Know components of networks Lessons
V.B.1.a identify network hardware devices and their functions Lessons
V.B.1.b describe possible abstraction models of networks Lessons
V.B.2 Be familiar with factors that have an impact on network functionality Lessons
V.B.2.a define basic terminology (e.g., bandwidth, load, latency) Lessons
V.B.2.b estimate necessary bandwidth and data size for a given situation Lessons
V.B.2.c identify critical resources for a given situation Lessons
V.B.3 Be familiar with how Internet and Web protocols work Lessons
V.B.3.a describe the purpose of protocols and identify common Internet and Web protocols Lessons
V.B.3.b compare IPv4 and IPv6 Lessons
V.B.3.c identify and describe the basic parts of a U R L (e.g., protocol, subdomain, domain name, port, path) Lessons
V.B.3.d describe the hierarchical structure of names in the domain name system (DNS) Lessons
V.B.3.e describe the purpose and function of I P addressing Lessons
V.B.3.f identify how Internet protocols address reliability, redundancy, and error handling Lessons
V.B.4 Be familiar with digital and physical strategies for maintaining security Lessons
V.B.4.a identify characteristics of strong passwords (e.g., length, bits per character) Lessons
V.B.4.b identify digital and physical security strategies Lessons
V.B.4.c identify trade-offs in the use of security measures (e.g., encryption, decryption, digital signatures and certificates) Lessons
V.B.5 Be familiar with concepts of cybersecurity Lessons
V.B.5.a identify and define the five pillars of cybersecurity: confidentiality, integrity, availability, nonrepudiation, and authentication Lessons
V.B.6 Be familiar with the components that make up the Web (e.g., HTTP, HTML, browsers, servers, clients) Lessons
V.B.6.a identify the uses of markup languages Lessons
V.B.6.b identify the purposes of browsers, servers, and clients Lessons