Course Essential Questions:
- What are some strategies software developer teams use to design and maintain large and complex applications?
- How do we use large datasets to predict the outcome of future events to benefit society?
- How do we create apps to store and access data and what types of problems can be solved easily with a computer?
- How does the Internet function, even through power outages and storms?
- How can computing innovations affect society in beneficial and harmful ways?
Course Learning Objectives:
- Design and evaluate computational solutions for a purpose.
- Develop and implement algorithms.
- Develop programs that incorporate abstractions.
- Evaluate and test algorithms and programs.
- Investigate computing innovations.
- Contribute to an inclusive, safe, collaborative, and ethical computing culture.
Unit 1: Digital Information
Students will learn how to convert decimal numbers in binary. They will investigate how computers store complex information like numbers, images, and sound. Students will list the pros and cons of digitizing information and explore copyright and intellectual property issues. Students will consider the trade-offs of lossy vs lossless compression in digital images, sound, and videos.
Topic 1: Introduction to AP Computer Science Principles
- Establish a personal profile in the course.
- Log into the Code.org account and access the eBook.
- Examine the AP CSP Course Description and explore the exam structure and expectations.
Topic 2: Binary Numbers
- Explain why computers use the binary system to communicate and store information.
- Convert numbers from binary to decimal and back.
- Explain why most decimal numbers cannot be stored accurately and generate round-off errors.
- Calculate the largest number that can be stored in a given number of bits.
Topic 3: Compression
- Describe how letters and emoji are represented in binary.
- Break down pixels in binary format for black and white and color images.
- Explain the applications of lossless and lossy compression.
- Compare data compression algorithms to determine which is best in a particular context.
Topic 4: Intellectual Property
- State the implicit rights of copyright holders.
- Explain how creative commons allows apps to be distributed while retaining some rights.
- Articulate the pros and cons of open access research and open-source software.
- Explain how the use of computing can raise legal and ethical concerns.
Unit 2: The Internet
Students explore the fundamentals of TCP and UDP protocols. They learn how routers direct traffic and create a fault-tolerant network. At the end of the unit, students investigate an "Internet Dilemma," both from the standpoint of its technical background and its impact on different groups of people.
Topic 5: Addressing and Networks
- Explain how the Internet was created and who controls it.
- Determine how computers are assigned an address similar to the postal service.
- Describe how routers determine the best path for data through the Internet.
- Explain how computing devices work together in a network.
- Explain how data are sent through the Internet via packets.
- Describe the differences between the Internet and the World Wide Web.
Topic 6: Packets and Protocols
- Explain how computing devices work together in a network.
- Explain how the Internet works.
- Explain how data are sent through the Internet via packets.
- Describe the differences between the Internet and the World Wide Web.
- For fault-tolerant systems, like the Internet.
- Describe the benefits of fault tolerance.
- Explain how a given system is fault-tolerant.
- Identify vulnerabilities to failure in a system.
Unit 3: Introduction to App Design
In App Design, students will design their first app while learning basic programming concepts. They will use the web-based App Lab IDE to design user-interfaces and write simple event-driven programs. Students will use the debugger to identify and fix syntax and logic errors. The unit will conclude with an introduction to software development and an overview of the AP® Computer Science Principles Pseudocode reference sheet. Students will utilize this reference throughout the course.
Topic 7: App Design
- Analyze the input and output features of several mobile apps.
- Modify user interface elements of mobile apps.
- Use the AP Pseudocode programming language to command a robot to its destination.
- Describe the purpose of a computing innovation.
- Explain how a program or code segment functions.
Topic 8: Coding and Debugging
- Explain the difference between a high-level and low-level programming language.
- Fix programming glitches using the App Lab debugger.
- Use the AP Pseudocode programming language to command a robot to its destination.
- Develop a program using a development process.
- Identify and correct errors in an algorithm or program.
Unit 4: Variables, Conditionals, and Procedures
Students will explore the foundations for creating a program, including iteration, selection, and repetition. Through the process of building a new block, they will come to understand the use of conditional statements, variables, and abstraction within programming.
Topic 9: Variables
- Use variables to give an app the ability to store and retrieve values.
- Declare and assign JavaScript variables with both numerical and string values.
- Predict the output of AP Pseudocode involving variable assignment and concatenation.
- Represent a value with a variable.
- Determine the value of a variable as a result of an assignment.
- Evaluate expressions that manipulate strings.
Topic 10: Conditionals
- Express an algorithm that uses sequencing without using a programming language.
- Represent a step-by-step algorithmic process using sequential code statements.
- For relationships between two variables, expressions, or values: write expressions using relational operators and evaluate expressions that use relational operators.
- For selection and nested selection, write conditional statements and determine the result of conditional statements.
Topic 11: Procedures and Functions
- Define and call a function/procedure.
- Simplify programs with repeated code with functions/procedures.
- For procedure calls, write statements to call procedures and determine the result or effect of a procedure call.
- Explain how the use of procedural abstraction manages complexity in a program.
- For generating random values, write expressions to generate possible values and evaluate expressions to determine the possible results.
Unit 5: Lists and Loops
Students will build apps that use and process lists of data. They will use loops and conditional statements to traverse and filter list information and are introduced to tools that allow them to import tables of real-world data. Students will design an app around a goal of their choosing that uses one of these data sets.
Topic 12: Lists
- Define a list in JavaScript and AP Pseudocode.
- Use indices to access and change elements in a list.
- Represent a list or string using a variable.
- For data abstraction, develop data abstraction using lists to store multiple elements and explain how the use of data abstraction manages complexity in program code.
- For list operations, write expressions that use list indexing and list procedures and evaluate expressions that use list indexing and list procedures.
Topic 13: Loops
- Use a for-loop and a while loop to solve code that has repetition.
- Utilize REPEAT and REPEAT UNTIL loops in AP Pseudocode.
- Use CAN_MOVE to have a robot avoid crashing into a wall.
- Express an algorithm that uses iteration without using a programming language.
- For iteration, write iteration statements and determine the result or side effect of iteration statements.
Topic 14: Traversals
- Write a loop to traverse elements in a list.
- Filter information from a list using a loop.
- Use the AP Pseudocode FOR EACH loop to traverse a list.
- For algorithms involving elements of a list, write iteration statements to transverse a list and determine the results of an algorithm that includes list traversals.
Topic 15: Creative Development
- Explain how computing innovations are improved through collaboration.
- Explain how computing innovations are developed by groups of people.
- Demonstrate effective interpersonal skills during collaboration.
- Develop a program using a development process.
- Design a program and its user interface.
- For errors in an algorithm or program, identify and correct the error.
Unit 6: Algorithms
Students will complete a miniature create performance task using a limited subset of the App Lab IDE. Students explore concepts such as undecidable problems, and the advantages of parallel and distributed computing. They will get an intuitive sense of the differences between how quickly different algorithms run and the pros and cons of various algorithms.
Topic 16: Hackathon I
- Prepare for the spring Create Performance Task by creating a smaller version of an app.
- Design a new app from scratch utilizing loops, lists, and variables.
- Explain how computing innovations are improved through collaboration.
- Describe the purpose of a code segment or program by writing documentation.
Topic 17: Algorithms
- Analyze the performance of algorithms that do the exact same thing.
- Explain the pros and cons of Linear vs Binary search algorithms.
- Explain how exponential problems relate to reasonable and unreasonable algorithms.
- Compare multiple algorithms to determine if they yield the same result.
- For algorithms, create algorithms and combine and modify existing algorithms.
Unit 7: Libraries and APIs
Students will create programming abstractions through the inclusion of procedures and functions in their apps. They will use input parameters, and output return values from procedures. Students will compile procedures into small libraries that can be used by others.
Topic 18: Parameters and Return Values
- Define a function in JavaScript and procedure in AP Pseudocode.
- Define a procedure that returns a value.
- Call a procedure that returns a value.
- Evaluate arithmetic expressions using the modulo operator.
- For procedure calls, write statements to call procedures and determine the result or effect of a procedure call.
Topic 19: Parameters and Lists
- Solve problems involving lists, procedures, and robots.
- Pass lists as arguments to parameters in procedures.
- Return lists from procedures.
- Represent a list or string using a variable.
- For data abstraction, develop data abstraction using lists to store multiple elements and explain how the use of data abstraction manages complexity in program code.
- Develop procedural abstractions to manage complexity in a program by writing procedures.
Topic 20: Libraries and APIs
- Use appropriate vocabulary to describe libraries.
- Explain the process of preparing a function to be added to a library.
- Clearly write documentation for functions in a library.
- Select appropriate libraries or existing code segments to use in creating new programs.
- For generating random values, write expressions to generate possible values and evaluate expressions to determine the possible results.
Topic 21: Hackathon II
- Import, call, and test another student’s library functions.
- Design and develop an app that uses another student’s functions.
- Explain how computing innovations are improved through collaboration.
- Describe the purpose of a code segment or program by writing documentation.
Unit 8: Create Performance Task
To emphasize the collaborative nature of programming and to prepare for the Create Performance Task, students will create a program implementing the skills learned over the course. In this performance task, students will create a program that solves a problem or relates to their interest. The program created should encompass many of the programming concepts learned throughout the course. Students will create their program in App Lab JavaScript.
Topic 22: Create Performance Task
- Describe the major components of the Create Performance Task.
- Describe how the Create Performance Task Scoring Guidelines will be used to assess the task.
- Evaluate sample Create Performance Task submissions by applying the scoring guidelines.
- Identify remaining questions about the Create Performance Task.
- Explain how computing innovations are improved through collaboration.
- Describe the purpose of a code segment or program by writing documentation.
Topic 23: Create Performance Task
- Choose an app idea, narrow it down.
- Use organizers to help focus relevant tasks.
- Log progress via a daily journal.
- Explain how computing innovations are improved through collaboration.
- Describe the purpose of a code segment or program by writing documentation.
Topic 24: Create Performance Task
- Finish up development on the Create Performance Task.
- Log progress via a daily journal.
- Explain how computing innovations are improved through collaboration.
- Describe the purpose of a code segment or program by writing documentation.
Unit 9: Big Data
Students will use data and information to facilitate the creation of new knowledge through filtering and sorting large data sets. Students will explore concepts related to big data and the tools available to manipulate large databases. Students learn how different types of visualizations can be used to better understand the patterns contained in the data sets.
Topic 25: Metadata
- Process data, which allows users to discover information and create new knowledge.
- Understand the value of data and that data can be used to find, organize, and manage information. It also increases the effective use of data by providing extra information.
- Describe what information can be extracted from metadata.
- Identify the challenges associated with processing data.
Topic 26: Visualizations and Data
- Explain why data needs to be cleaned.
- Create filtered charts that answer specific questions.
- Create a crosstab and scatter charts in App Lab's Data Visualizer.
- Explain the reasons that someone would create either a crosstab and scatter chart in order to explore two columns of data.
- Extract information from data using a program.
- Explain how programs can be used to gain insight and knowledge from data.
- For simulations, explain how computers can be used to represent real-world phenomena or outcomes and compare simulations with real-world contexts.
Topic 27: Machine Learning
- Define and explain the impacts of crowdsourcing, crowdfunding, and citizen science.
- Explain why in some contexts large amounts of data need to be analyzed in parallel and scalable systems.
- Explain the impact of open data on scientific research and discovery
- Train and test a machine learning model.
- Reason about how human bias plays a role in machine learning.
Unit 10: Cybersecurity
Students research the positive and negative effects of technological innovations on society. They will look at the relationships between data, public policy, law, and ethics. Throughout the unit, students explore the privacy and security risks of many computing innovations and learn how to reduce these risks.
Topic 28: Encryption and Passwords
- Explain the difference between asymmetrical and symmetrical encryption.
- Explain how computing tools can be used for decryption.
- Identify why Caesar Cipher and Random Substitution Ciphers are not adequate for most encryption needs.
- Explain how computing resources can be protected and can be misused.
Topic 29: Cyber Attacks
- Identify commons security risks: phishing, keylogging, rogue access points
- Explain how these common security risks target people.
- Discuss the warning signals for these common security risks.
- Explain how computing resources can be protected and can be misused.
- Explain how unauthorized access to computing resources is gained.
Topic 30: Global Impact
- Describe the different types of data that are used and collected by modern computing innovations.
- Define Personally Identifiable Information as information about an individual that identifies, links, relates, or describes them.
- Explain how disparate pieces of personal information can be combined to identify individuals or deduce other private information.
- Evaluate whether the benefits to society from a given computing innovation outweigh the privacy risks it poses.
- Assess a computing innovation to identify the specific privacy risks that could arise from the data it collects and stores.
- Explain the risks to privacy that arise from using modern computing technology.
- Evaluate the benefits and harms that could potentially be caused by a computing innovation.
Unit 11: Exam Preparation
Topic 31: Practice AP Exam
- Identify any gaps in knowledge that need to be reviewed before the AP Exam.
- Gain familiarity with the types of questions that will appear on the AP Exam.
- Function within the time constraints imposed by the AP Exam.
Topic 32: AP Practice Exam Analysis
- Identify any gaps in knowledge that need to be reviewed before the AP Exam.
- Gain familiarity with the types of questions that will appear on the AP Exam.
- Function within the time constraints imposed by the AP Exam.
Topic 33: Evaluations and Goodbyes
- Complete the course exit interview, assessing the nature and difficulty of the course.
- Review the AP CSP practices and assess your preparation for the exam.