When developing computing innovations, developers can use a formal, iterative design process or experimentation. While using either approach, developers will encounter phases of investigating and reflecting, designing, prototyping, and testing. Additionally, collaboration is an important tool to use at any phase of development because considering multiple perspectives allows for improvement of innovations.
Incorporating multiple perspectives through collaboration improves computing innovations as they are developed.
CRD-1.A - Explain how computing innovations are improved through collaboration.
CRD-1.B - Explain how computing innovations are developed by groups of people
CRD-1.C - Demonstrate effective interpersonal skills during collaboration.
Developers create and innovate using an iterative design process that is user-focused, that incorporates implementation/feedback cycles, and that leaves ample room for experimentation and risk-taking.
CRD-2.A - Describe the purpose of a computing innovation.
CRD-2.B - Explain how a program or code segment functions.
CRD-2.C - Identify input(s) to a program.
CRD-2.D - Identify output(s) produced by a program.
CRD-2.E - Develop a program using a development process.
CRD-2.F - Design a program and its user interface.
CRD-2.G - Describe the purpose of a code segment or program by writing documentation.
CRD-2.H - Acknowledge code segments used from other sources
CRD-2.I - For errors in an algorithm or program: a) Identify the error. b) Correct the error
CRD-2.J - Identify inputs and corresponding expected outputs or behaviors that can be used to check the correctness of an algorithm or program.
Data are central to computing innovations because they communicate initial conditions to programs and represent new knowledge. Computers consume data, transform data, and produce new data, allowing users to create new information or knowledge to solve problems through the interpretation of these data. Computers store data digitally, which means that the data must be manipulated in order to be presented in a useful way to the user.
The way a computer represents data internally is different from the way the data are interpreted and displayed for the user. Programs are used to translate data into a representation more easily understood by people.
DAT-1.A - Explain how data can be represented using bits.
DAT-1.B - Explain the consequences of using bits to represent data.
DAT-1.C - For binary numbers: a) Calculate the binary (base 2) equivalent of a positive integer (base 10) and vice versa. b) Compare and order binary numbers.
DAT-1.D - Compare data compression algorithms to determine which is best in a particular context.
Programs can be used to process data, which allows users to discover information and create new knowledge.
DAT-2.A - Describe what information can be extracted from data.
DAT-2.B - Describe what information can be extracted from metadata.
DAT-2.C - Identify the challenges associated with processing data.
DAT-2.D - Extract information from data using a program.
DAT-2.E - Explain how programs can be used to gain insight and knowledge from data.
Programmers integrate algorithms and abstraction to create programs for creative purposes and to solve problems. Using multiple program statements in a specified order, making decisions, and repeating the same process multiple times are the building blocks of programs. Incorporating elements of abstraction, by breaking problems down into interacting pieces, each with their own purpose, makes writing complex programs easier. Programmers need to think algorithmically and use abstraction to define and interpret processes that are used in a program.
To find specific solutions to generalizable problems, programmers represent and organize data in multiple ways.
AAP-1.A - Represent a value with a variable.
AAP-1.B - Determine the value of a variable as a result of an assignment.
AAP-1.C - Represent a list or string using a variable.
AAP-1.D - For data abstraction: a) Develop data abstraction. b) Explain how the use of data abstraction manages complexity in program code.
The way statements are sequenced and combined in a program determines the computed result. Programs incorporate iteration and selection constructs to represent repetition and make decisions to handle varied input values.
AAP-2.A - Express an algorithm that uses sequencing without using a programming language.
AAP-2.B - Represent a step-by-step algorithmic process using sequential code statements.
AAP-2.C - Evaluate expressions that use arithmetic operators.
AAP-2.D - Evaluate expressions that manipulate strings.
AAP-2.E - For relationships between two variables, expressions, or values: a) Write expressions using relational operators. b) Evaluate expressions that use relational operators.
AAP-2.F - For relationships between Boolean values: a) Write expressions using logical operators. b) Evaluate expressions that use logical operators.
AAP-2.G - Express an algorithm that uses selection without using a programming language.
AAP-2.H - For selection: a) Write conditional statements. b) Determine the result of conditional statements.
AAP-2.I - For nested selection: a) Write nested conditional statements b) Determine the result of nested conditional statements.
AAP-2.J - Express an algorithm that uses iteration without using a programming language.
AAP-2.K - For iteration: a) Write iteration statements. b) Determine the result or side effect of iteration statements.
AAP-2.L - Compare multiple algorithms to determine if they yield the same side effect or result.
AAP-2.M - For algorithms: a) Create algorithms. b) Combine and modify existing algorithms.
AAP-2.N - For list operations: a) Write expressions that use list indexing and list procedures. b) Evaluate expressions that use list indexing and list procedures.
AAP-2.O - For algorithms involving elements of a list: a) Write iteration statements to traverse a list. b) Determine the result of an algorithm that includes list traversals.
AAP-2.P - For binary search algorithms: a) Determine the number of iterations required to find a value in a data set. b) Explain the requirements necessary to complete a binary search.
Programmers break down problems into smaller and more manageable pieces. By creating procedures and leveraging parameters, programmers generalize processes that can be reused. Procedures allow programmers to draw upon existing code that has already been tested, allowing them to write programs more quickly and with more confidence.
AAP-3.A - For procedure calls: a) Write statements to call procedures. b) Determine the result or effect of a procedure call.
AAP-3.B - Explain how the use of procedural abstraction manages complexity in a program.
AAP-3.C - Develop procedural abstractions to manage complexity in a program by writing procedures.
AAP-3.D - Select appropriate libraries or existing code segments to use in creating new programs.
AAP-3.E - For generating random values: a) Write expressions to generate possible values. b) Evaluate expressions to determine the possible results.
AAP-3.F - For simulations: a) Explain how computers can be used to represent real-world phenomena or outcomes. b) Compare simulations with real-world contexts.
There exist problems that computers cannot solve, and even when a computer can solve a problem, it may not be able to do so in a reasonable amount of time.
AAP-4.A - For determining the efficiency of an algorithm: a) Explain the difference between algorithms that run in reasonable time and those that do not. b) Identify situations where a heuristic solution may be more appropriate.
AAP-4.B - Explain the existence of undecidable problems in computer science.
Computer systems and networks are used to transfer data. One of the largest and most commonly used networks is the Internet. Through a series of protocols, the Internet can be used to send and receive information and ideas throughout the world. Transferring and processing information can be slow when done on a single computer but leveraging multiple computers to do the work at the same time can significantly shorten the time it takes to complete tasks or solve problems.
Computer systems and networks facilitate the transfer of data.
CSN-1.A - Explain how computing devices work together in a network.
CSN-1.B - Explain how the Internet works.
CSN-1.C - Explain how data are sent through the Internet via packets.
CSN-1.D - Describe the differences between the Internet and the World Wide Web.
CSN-1.E - For fault-tolerant systems, like the Internet: a) Describe the benefits of fault tolerance. b) Explain how a given system is fault-tolerant. c) Identify vulnerabilities to failure in a system.
Parallel and distributed computing leverage multiple computers to more quickly solve complex problems or process large data sets.
CSN-2.A - For sequential, parallel, and distributed computing: a) Compare problem solutions. b) Determine the efficiency of solutions.
CSN-2.B - Describe benefits and challenges of parallel and distributed computing.
Computers and computing have revolutionized our lives. To use computing safely and responsibly, we need to be aware of privacy, security, and ethical issues. As programmers, we need to understand the potential impacts of our programs and be responsible for the consequences. As computer users, we need to understand any potential beneficial or harmful effects and how to protect ourselves and our privacy when using a computer.
While computing innovations are typically designed to achieve a specific purpose, they may have unintended consequences.
IOC-1.A - Explain how an effect of a computing innovation can be both beneficial and harmful.
IOC-1.B - Explain how a computing innovation can have an impact beyond its intended purpose.
IOC-1.C - Describe issues that contribute to the digital divide.
IOC-1.D - Explain how bias exists in computing innovations.
IOC-1.E - Explain how people participate in problem-solving processes at scale.
IOC-1.F - Explain how the use of computing can raise legal and ethical concerns.
The use of computing innovations may involve risks to personal safety and identity.
IOC-2.A - Describe the risks to privacy from collecting and storing personal data on a computer system.
IOC-2.B - Explain how computing resources can be protected and can be misused.
IOC-2.C - Explain how unauthorized access to computing resources is gained.