AP Computer Science Principles

Curriculum/Content Area: Computer Science Course Length: 2 Terms

Course Title: Computer Date last reviewed: November 2019 Science Principles

Prerequisites: none Board approval date:TBD

Desired Results

Course description and purpose: The Advanced Placement Computer Science Principles course provides students with the opportunity to develop computational thinking skills, an understanding of the real-world impact of computing, and programming literacy. The course exposes students to the breadth and relevance of computer science across many fields of study that incorporate computer science knowledge. A strong focus on creativity as it applies to the creation of computational artifacts allows a broader range of students to discover where computer science could fit in their lives, and it prepares more students for success in computer science and other related STEM fields.

Enduring Understandings (EUs): Essential Questions (EQs): 1. Creative development can be an 1. How can a creative development essential process for creating process affect the creation of computational artifacts. computational artifacts?

2. Computing enables people to use 2. How can computing and the use of creative development processes to computational tools foster creative create computational artifacts for expression? creative expression or to solve a problem. 3. How can computing extend traditional forms of human expression and 3. Computing can extend traditional experience? forms of human expression and experience. 4. How are vastly different kinds of data, physical phenomena, and 4. A variety of abstractions built on mathematical concepts represented binary sequences can be used to on a computer? represent all digital data. 5. How does abstraction help us in 5. Multiple levels of abstraction are used writing programs, creating to write programs or create other computational artifacts, and solving computational artifacts. problems?

6. Models and simulations use 6. How can computational models and abstraction to generate new simulations help generate new understanding and knowledge. understandings and knowledge?

7. People use computer programs to 7. How can computation be employed to process information to gain insight help people process data and and knowledge. information to gain insight and knowledge? 8. Computing facilitates exploration and the discovery of connections in 8. How can computation be employed to information. facilitate exploration and discovery when working with data? 9. There are trade-offs when representing information as big data. 9. What considerations and trade-offs arise in the computational 10. Algorithms are precise sequences of manipulation of large data sets? instructions for processes that can be executed by a computer and are 10. What is an algorithm? implemented using programming languages? 11. What kinds of problems are easy, what kinds are difficult, and what 11. Algorithms can solve many, but not kinds are impossible to solve all, computational problems. algorithmically?

12. Programs can be developed for 12. How are programs developed to help creative expression, to satisfy people, organizations, or society solve personal curiosity, to create new problems? knowledge, or to solve problems(to help people, organizations, and 13. How do computer programs society) implement algorithms?

13. People write programs to execute 14. How does abstraction make the algorithms. development of computer programs possible? 14. Programming is facilitated by appropriate abstractions. 15. How do people develop and test computer programs? 15. Programs are developed, maintained, and used by people for different 16. Which mathematical and logical purposes. concepts are fundamental to computer programming? 16. Programming uses mathematical and logical concepts. 17. What is the Internet?

17. The Internet is a network of 18. What aspects of the Internet's design autonomous systems. and development have helped it scale

and flourish? 18. Characteristics of the Internet influence the system built on it. 19. How is Cybersecurity impacting the ever-increasing number of Internet 19. Cybersecurity is an important concern users? for the Internet and the systems built on it. 20. How does computing enhance human communication, interaction,and 20. Computing enhances communication, cognition? interaction, and cognition. 21. How does computing enable 21. Computing enables innovation in innovation? nearly every field. 22. How do economic, social, and cultural 22. Computing has global effects both influence innovation and the use of beneficial and harmful on people and computing? society.

Assessment Evidence

Performance assessments: Other assessments:

Performance assessments including class Formative and summative assessments design, method creation, and the writing of including programming opportunities and programs will be used to evaluate a student's sample AP exam questions will be used to comprehensive knowledge of course content. evaluate a student's level of mastery on individual topics.

Unit Title: The Internet

A. Personal Innovations B. Sending Binary Messages C. Sending Binary Messages with Internet Simulator D. Number Systems E. Binary Numbers F. Sending Numbers G. Encoding and Sending Formatted Text H. The Internet is for Everyone I. The Need for Addressing J. Routers and Redundancy K. Packets and Making a reliable Internet L. The need for DNS

M. HTTP and Abstraction on the Internet N. The Internet and Society

Standards:

Computer Science Teachers Association Standards: CI.L3A:10 - Describe security and privacy issues that relate to computer networks. ​ CI.L3B:2 - Analyze the beneficial and harmful effects of computing innovations. ​ CI.L3B:4 - Summarize how computation has revolutionized the way people build real ​ and virtual organizations and infrastructures. CL.L2:3 - Collaborate with peers, experts and others using collaborative practices ​ such as pair programming, working in project teams and participating in-group active learning activities. CL.L2:4 - Exhibit dispositions necessary for collaboration: providing useful feedback, ​ integrating feedback, understanding and accepting multiple perspectives, socialization. CT.L2:7 - Represent data in a variety of ways including text, sounds, pictures and ​ numbers. CT.L2:8 - Use visual representations of problem states, structures and data (e.g., ​ graphs, charts, network diagrams, flowcharts). CT.L2:9 - Interact with content-specific models and simulations (e.g., ecosystems, ​ epidemics, molecular dynamics) to support learning and research. CT.L2:13 - Understand the notion of hierarchy and abstraction in computing including ​ high level languages, translation, instruction set and logic circuits. CT.L2:14 - Examine connections between elements of mathematics and computer ​ science including binary numbers, logic, sets and functions. CT.L3A:6 - Analyze the representation and trade-offs among various forms of digital ​ information. CD.L2:6 - Describe the major components and functions of computer systems and ​ networks. CD.L3A:8 - Explain the basic components of computer networks (e.g., servers, file ​ protection, routing, spoolers and queues, shared resources, and fault-tolerance). CD.L3A:9 - Describe how the Internet facilitates global communication. ​ CD.L3B:4 - Describe the issues that impact network functionality (e.g., latency, ​ bandwidth, firewalls, server capability). CPP.L3A:9 - Explain the principles of security by examining encryption, cryptography, ​ and authentication techniques.

WI Standards for Literacy in All Subjects: CCSS.ELA-LITERACY.RST.11-12.4: Determine the meaning of symbols, key terms, ​ ​ and other domain-specific words and phrases as they are used in a specific scientific or technical context relevant to grades 11-12 texts and topics. CCSS.ELA-LITERACY.RST.11-12.7: Integrate and evaluate multiple sources of ​

information presented in diverse formats and media (e.g., quantitative data, video, multimedia) in order to address a question or solve a problem. b: Synthesize information from a range of sources (e.g., texts, experiments, simulations) into a coherent understanding of a process, phenomenon, or concept, resolving conflicting information when possible.

Learning Targets:

I can: ● Explain the abstractions in the Internet and how the Internet functions. ● Explain characteristics of the Internet and the systems built on it. ● Explain how binary sequences are used to represent digital data. ● Use models and simulations to formulate, refine, and test hypotheses. ● Explain how the characteristics of the Internet influence the systems built on it. ● Identify existing cybersecurity concerns and potential options to address these issues with the Internet and the systems built on it.

Unit Title: Digital Information

A. Bytes and File Siizes B. Text Compression C. Encoding B&W Images D. Encoding Color Images E. Lossy Compression and File Formats

Standards:

Computer Science Teachers Association Standards: CT.L2:7 - Represent data in a variety of ways including text, sounds, pictures and ​ numbers. CT.L2:8 - Use visual representations of problem states, structures and data (e.g., ​ graphs, charts, network diagrams, flowcharts). CT.L2:9 - Interact with content-specific models and simulations (e.g., ecosystems, ​ epidemics, molecular dynamics) to support learning and research. CT.L2:13 - Understand the notion of hierarchy and abstraction in computing including ​ high level languages, translation, instruction set and logic circuits. CT.L2:14 - Examine connections between elements of mathematics and computer ​ science including binary numbers, logic, sets and functions. CT.L3A:6 - Analyze the representation and trade-offs among various forms of digital ​ information. CT.L3A:7 - Describe how various types of data are stored in a computer system. ​

CT.L3B:8 - Use models and simulations to help formulate, refine, and test scientific ​ hypotheses. CT.L3B:9 - Analyze data and identify patterns through modeling and simulation. ​ CL.L2:3 - Collaborate with peers, experts and others using collaborative practices ​ such as pair programming, working in project teams and participating in-group active learning activities. CPP.L2:4 - Demonstrate an understanding of algorithms and their practical ​ application. CD - Computers & Communication Devices CD.L2:4 - Use developmentally appropriate, accurate terminology when ​ communicating about technology.

WI Standards for Literacy in All Subjects: CCSS.ELA-LITERACY.RST.11-12.4: Determine the meaning of symbols, key terms, ​ ​ and other domain-specific words and phrases as they are used in a specific scientific or technical context relevant to grades 11-12 texts and topics. CCSS.ELA-LITERACY.RST.11-12.7: Integrate and evaluate multiple sources of ​ information presented in diverse formats and media (e.g., quantitative data, video, multimedia) in order to address a question or solve a problem. CCSS.ELA-LITERACY.RST.11-12.9: Synthesize information from a range of sources ​ (e.g., texts, experiments, simulations) into a coherent understanding of a process, phenomenon, or concept, resolving conflicting information when possible.

Learning Targets:

I can: ● Apply a creative development process when creating computational artifacts. ● Create a computational artifact for creative expression. ● Create a computational artifact using computing tools and techniques to solve a problem. ● Create a new computational artifact by combining or modifying existing artifacts. ● Collaborate in the creation of computational artifacts. ● Analyze the correctness, usability, functionality, and suitability of computational artifacts. ● Use computing tools and techniques for creative expression.

Unit Title: Algorithms and Programming

A. The Need for Programming Languages

B. The Need for Algorithms C. Creativity in Algorithms D. Using Simple Commands E. Creating Functions F. Functions and Top-Down Design G. API's and Using Functions with Parameters H. Creating Functions with Parameters I. Looping and Random Numbers J. Design a Digital Scene

Standards:

Computer Science Teachers Association Standards: CL.L2:2 - Collaboratively design, develop, publish and present products (e.g., videos, ​ podcasts, websites) using technology resources that demonstrate and communicate curriculum. concepts. CL.L2:3 - Collaborate with peers, experts and others using collaborative practices ​ such as pair programming, working in project teams and participating in-group active learning activities. CPP.L1:6-06 - Implement problem solutions using a block based visual programming ​ language. CPP.L2:4 - Demonstrate an understanding of algorithms and their practical ​ application. CPP.L2:5 - Implement problem solutions using a programming language, including: ​ looping behavior, conditional statements, logic, expressions, variables and functions. CPP.L2:8 - Demonstrate dispositions amenable to open-ended problem solving and ​ programming (e.g., comfort with complexity, persistence, brainstorming, adaptability, patience, propensity to tinker, creativity, accepting challenge). CT.L2:12 - Use abstraction to decompose a problem into sub problems. ​ CPP.L3A:3 - Use various debugging and testing methods to ensure program ​ correctness (e.g., test cases, unit testing, white box, black box, integration testing) CPP.L3A:4 - Apply analysis, design, and implementation techniques to solve ​ problems (e.g., use one or more software lifecycle models). CT.L1:6-01 - Understand and use the basic steps in algorithmic problem-solving (e.g., ​ problem statement and exploration, examination of sample instances, design, implementation and testing). CT.L2:1 - Use the basic steps in algorithmic problem-solving to design solutions (e.g., ​ problem statement and exploration, examination of sample instances, design, implementing a solution, testing and evaluation). CT.L2:3 - Define an algorithm as a sequence of instructions that can be processed by ​ a computer. CT.L2:12 - Use abstraction to decompose a problem into sub problems. ​ CT.L2:4 - Evaluate ways that different algorithms may be used to solve the same ​ problem.

CT.L2:6 - Describe and analyze a sequence of instructions being followed (e.g., ​ describe a character's behavior in a video game as driven by rules and algorithms). CT.L3A:1 - Use predefined functions and parameters, classes and methods to divide ​ a complex problem into simpler parts. CT.L3A:3 - Explain how sequence, selection, iteration, and recursion are building ​ blocks of algorithms. CT.L3A:4 - Compare techniques for analyzing massive data collections. ​

WI Standards for Literacy in All Subjects: CCSS.ELA-LITERACY.RST.11-12.4: Determine the meaning of symbols, key terms, ​ ​ and other domain-specific words and phrases as they are used in a specific scientific or technical context relevant to grades 11-12 texts and topics. CCSS.ELA-LITERACY.RST.11-12.7: Integrate and evaluate multiple sources of ​ information presented in diverse formats and media (e.g., quantitative data, video, multimedia) in order to address a question or solve a problem. CCSS.ELA-LITERACY.RST.11-12.9: Synthesize information from a range of sources ​ (e.g., texts, experiments, simulations) into a coherent understanding of a process, phenomenon, or concept, resolving conflicting information when possible.

Learning Targets:

I can: ● Find patterns and test hypotheses about digitally processed information to gain insight and knowledge. ● Extract information from data to discover and explain connections or trends. ● Develop an algorithm for implementation in a program. ● Express an algorithm in a language. ● Explain the difference between algorithms that run in a reasonable time and those that do not run in a reasonable time. ● Explain the difference between solvable and unsolvable problems in computer science. ● Explain the existence of undecidable problems in computer science. ● Evaluate algorithms analytically and empirically for efficiency, correctness, and clarity.

Unit Title: Big Data and Privacy

A. What is Big Data? B. Rapid Research: Data Innovations C. Identifying People with Data D. The Cost of "Free" E. The Need for Encryption

F. Cracking the Code G. Keys and Passwords H. The Traveling Salesperson Problem I. The WIFI Hotspot Problem J. Asymmetric Keys - Cups and Beans K. Public Key Cryptography

Standards:

Computer Science Teachers Association Standards: CT.3B-1. Classify problems as tractable, intractable, or computationally unsolvable. ​ CT.3B-2. Explain the value of heuristic algorithms to approximate solutions for ​ intractable problems. CT.3B-3. Critically examine classical algorithms and implement an original algorithm. ​ CT.3B-4. Evaluate algorithms by their efficiency, correctness, and clarity. ​ CT.3B-5. Use data analysis to enhance understanding of complex natural and human ​ systems. CPP.3A-9. Explain the principles of security by examining encryption, cryptography, ​ and authentication techniques. CPP.3B-5. Deploy principles of security by implementing encryption and ​ authentication strategies. CL.2-2. Collaboratively design, develop, publish, and present products (e.g., videos, ​ podcasts, websites) using technology resources that demonstrate and communicate curriculum concepts. CI.3A-10. Describe security and privacy issues that relate to computer networks. ​

WI Standards for Literacy in All Subjects: CCSS.ELA-LITERACY.RST.11-12.4: Determine the meaning of symbols, key terms, ​ ​ and other domain-specific words and phrases as they are used in a specific scientific or technical context relevant to grades 11-12 texts and topics. CCSS.ELA-LITERACY.RST.11-12.7: Integrate and evaluate multiple sources of ​ information presented in diverse formats and media (e.g., quantitative data, video, multimedia) in order to address a question or solve a problem. CCSS.ELA-LITERACY.RST.11-12.9: Synthesize information from a range of sources ​ (e.g., texts, experiments, simulations) into a coherent understanding of a process, phenomenon, or concept, resolving conflicting information when possible.

Learning Targets:

I can: ● Explain how computing innovations affect communication, interaction, and cognition. ● Explain how people participate in a problem-solving process that scales.

● Explain how computing has impacted innovations in other fields. ● Analyze the beneficial and harmful effects of computing. ● Explain the connections between computing and real world contexts, including economic, social, and cultural contexts. ● Access, manage, and attribute information using effective strategies. ● Evaluate online and print sources for appropriateness and credibility.

Unit Title: Building Apps

A. Events Unplugged B. Event-Driven Programming and Debugging C. Beyond Buttons Toward Apps D. Introducing Design Mode E. Multi-screen Apps F. Controlling Memory with Variables G. Using Variables in Apps H. User Input and Strings I. Introduction to Digital Assistant Project J. Understanding Program Flow and Logic K. Introduction to Conditional Logic L. Compound Conditional Logic M. Digital Assistant Project N. While Loops O. Looping and Simulation P. Introduction to Arrays Q. Image Scroller with Key Events R. Processing Arrays S. Functions with Return Values T. Canvas and Arrays in Apps

Standards:

Computer Science Teachers Association Standards: CL.2-3. Collaborate with peers, experts, and others using collaborative practices such ​ as pair programming, working in project teams, and participating in group active learning activities. CL.2-4. Exhibit dispositions necessary for collaboration; providing useful feedback, ​ integrating feedback, understanding and accepting multiple perspectives, socialization. CL.3A-1. Work in a team to design and develop a software artifact. ​ Computational Thinking (CT) CL.2-1. Use the basic steps in algorithmic problem solving to design solutions (e.g., ​ problem statement and exploration, examination of sample instances, design,

implementing a solution, testing, evaluation) CL.2-3. Define an algorithm as a sequence of instructions that can be processed by a ​ computer CL.2-6. Describe and analyze a sequence of instructions being followed. ​ CL.2-8. Use visual representations of problem states, structures, and data (e.g., ​ graphs, charts, network diagrams, flowcharts). CL.2-12. Use abstraction to decompose a problem into subproblems. ​ CL.2-14. Examine connections between elements of mathematics and computer ​ science including binary numbers, logic, sets and functions. CL.3A-1. Use predefined functions and parameters, classes, and methods to divide a ​ complex problem into simpler parts. CL.3A-3. Explain how sequence, selection, iteration, and recursion are building blocks ​ of algorithms. CL.3A-4. Evaluate algorithms by their efficiency, correctness, and clarity. ​ CPP.2-5. Implement problem solutions using a programming language, including: ​ looping behavior, conditional statements, logic,expressions, variables, and functions. CPP.3A-3. Use various debugging and testing methods to ensure program ​ correctness. CPP.3A-4. Apply analysis, design, and implementation techniques to solve problems ​ CPP.3A-5. Use APIs and libraries to facilitate programming solutions. ​ CI.2-2. Demonstrate knowledge of changes in information technologies over time and ​ the effects those changes may have on education, the workplace, and society.

WI Standards for Literacy in All Subjects: CCSS.ELA-LITERACY.RST.11-12.4: Determine the meaning of symbols, key terms, ​ ​ and other domain-specific words and phrases as they are used in a specific scientific or technical context relevant to grades 11-12 texts and topics. CCSS.ELA-LITERACY.RST.11-12.7: Integrate and evaluate multiple sources of ​ information presented in diverse formats and media (e.g., quantitative data, video, multimedia) in order to address a question or solve a problem. CCSS.ELA-LITERACY.RST.11-12.9: Synthesize information from a range of sources ​ (e.g., texts, experiments, simulations) into a coherent understanding of a process, phenomenon, or concept, resolving conflicting information when possible.

Learning Targets:

I can: ● Develop a program for creative expression, to satisfy personal curiosity, or to create new knowledge. ● Develop a correct program to solve a problem. ● Collaborate to develop a program. ● Explain how programs implement algorithms.

● Use abstraction to manage complexity in programs. ● Evaluate the correctness of a program. ● Employ appropriate mathematical and logic concepts in programming.