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 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 (Weeks 1-4)
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 debate 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.
Week 1: Introduction to AP Computer Science Principles
- Establish a personal profile in the course.
- Demonstrate mastery of navigating the online course interface.
- Log into the Code.org account and access the eBook.
- Examine the AP CSP Course Description and explore the exam structure and expectations.
Week 2: Binary, Overflow, Rounding
- 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.
Week 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.
Week 4: Intellectual Property
- Describe 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.
Unit 2: Internet (Weeks 5-7)
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.
Week 5: Address 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.
Week 6: Packets and Protocols
- Describe the major protocols for communication on the Internet.
- List the advantages of a scalable network.
- Explain how a domain name server associates IP addresses and domain names.
- Describe the differences between TCP, UDP, URL, and HTTP protocols.
Week 7: Creative Development
- Compare and contrast different strategies in the software development process.
- Explain the purpose of program documentation.
- Compare and contrast different debugging techniques.
Unit 3: Introduction to App Design (Weeks 8-9)
In the 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.
Week 8: 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.
- Summarize the computational thinking practices and big ideas of the AP CS Principles course.
Week 9: Traversals
- Explain the difference a high level and a low-level programming language.
- Fix programming glitches by using the App Lab debugger.
- Use the AP Pseudocode programming language to command a robot to its destination.
Unit 4: Variables, Conditionals, and Procedures (Weeks 10-12)
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. Students will design an app that helps their classmates make decisions.
Week 10: 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.
Week 11: Conditionals
- Use appropriate vocabulary to describe Boolean expressions and conditional statements.
- Evaluate expressions that include Boolean values, comparison operators, and logical operators.
- Trace simple programs that use Boolean expressions and conditional statements.
Week 12: Procedures and Functions
- Define a function/procedure.
- Call a function/procedure.
- Simplify programs with repeated code with functions/procedures.
Unit 5: Lists and Loops (Weeks 13-15)
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.
Week 13: Lists
- Define a list in JavaScript and AP Pseudocode.
- Use indices to access and change elements in a list.
Week 14: Loops
- Translate iterative loop structures between Java Script
- 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.
Week 15: 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.
Unit 6: Algorithms (Weeks 16-17)
During the first week, students will create 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.
Week 16: Hackathon I
- Prepare for the spring Create Performance Task by creating a smaller version of an app.
- Design an new app from scratch utilizing loops, lists, and variables.
Week 17: Parallel Computing
- 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.
- Discover the algorithm to the Traveling Salesman problem.
Unit 7: Libraries and APIs (Weeks 18-21)
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 use by their classmates.
Week 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.
Week 19: Parameters with Lists
- Direct a robot to its destination using a list of instructions.
- Pass lists as arguments to parameters in procedures.
- Return lists from procedures.
Week 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.
- Write tests for functions with a library that they designed.
- Provide feedback to their classmate about a library they designed.
Week 21: Mini Create Task
- Test functions designed to be used in a library using different input values
- Debug library code to remove any errors.
- Read library code documentation in order to select the proper functions in the library to develop an app.
Unit 8: Create Performance Task (Weeks 22-24)
To emphasize the collaborative nature of programming and to prepare for the Create Performance Task, students will work with their peers to create a program implementing all of the skills learned over the course and compete in a Programming Challenge. Students will then complete the Create Performance Task (PT) as outlined by College Board over three class weeks; during this time, the teacher will ensure that students are progressing toward PT completion. 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.
Week 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.
Week 23: Create Performance Task
- Work on the Create Performance Task.
- Develop the three parts of the Create Performance Task: The Written Response, the Video, and the Program Code.
Week 24: Create Performance Task
- Finish up development on the Create Performance Task.
Unit 9: Data (Weeks 25-27)
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.
Week 25: Databases
- Differentiate between what data shows and why that might be the case.
- Use Google Trends to tell a data story.
- Explain the usefulness of metadata.
Week 26: Machine Learning
- 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.
Week 27: Simulations and Models
- 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 and Global Impact (Weeks 29-30)
Students research and debate 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.
Week 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.
Week 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.
Week 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: Review for the AP CSP Exam (Weeks 31-33)
Week 31: Big Ideas 1-3 Review
- 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.
Week 32: Big Ideas 4-5 Review
- 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.
Week 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.