AP Computer Science Principles Course and Exam Description
AP Computer Science Principles Course and Exam Description
Course framework
Instructional
section
ample exam
S
questions
Create performance
task guidelines
AP Computer
®
Science
Principles
COURSE AND EXAM DESCRIPTION
Effective
Fall 2020
AP Computer
®
Science
Principles
COURSE AND EXAM DESCRIPTION
Effective
Fall 2020
© 2020 College Board. College Board, Advanced Placement, AP, AP Central, and the acorn logo are
registered trademarks of College Board. All other products and services may be trademarks of their
respective owners.
COURSE FRAMEWORK
11 Introduction
13 Course Framework Components
15 Computational Thinking Practices
17 Course Content
20 Course at a Glance
23 Big Idea Guides
24 Using the Big Idea Guides
27 BIG IDEA 1: Creative Development
41 BIG IDEA 2: Data
57 BIG IDEA 3: Algorithms and Programming
97 BIG IDEA 4: Computer Systems and Networks
109 BIG IDEA 5: Impact of Computing
INSTRUCTIONAL APPROACHES
129 Selecting and Using Course Materials
132 Instructional Strategies
140 Developing Computational Thinking Practices
152 Using Strategies for Collaboration
153 Differentiating Computer Science Instruction
CURRICULUM ALIGNMENT
157 Curriculum Alignment
158 Unit at a Glance
EXAM INFORMATION
163 Exam Overview
172 Sample Exam Questions
STUDENT HANDOUTS
189 Create Performance Task
197 Guidelines for Completing the Create Performance Task
APPENDIX
205 APPENDIX 1: AP CSP Exam Reference Sheet
213 APPENDIX 2: AP CSP Conceptual Framework
Acknowledgments
College Board would like to acknowledge the contributors and reviewers for
their assistance with and commitment to the development of this course. All
individuals’ names and their affiliations were current at the time of contribution.
Christine Alvarado, University of California, San Diego, CA
Bradley Bearden, Dadeville High School, Dadeville, AL
Joseph Coglianese, Troy High School, Fullerton, CA
Adam Cannon, Columbia University, New York, NY
Tom Cortina, Carnegie Mellon University, Pittsburgh, PA
Sandy Czajka, Riverside Brookfield High School, Riverside, IL
Marilyn Fitzpatrick, Charles H. Flowers High School, Springdale, MD
Dan Garcia, University of California, Berkeley, CA
Jessica Jarboe, Milton High School, Milton, MA
Douglas Kiang, Punahou High School, Honolulu, HI
Jennifer Rosato, The College of St. Scholastica, Duluth, MN
Alexander Schenk, Collegiate School of Medicine and Bioscience, St. Louis, MO
Paul Tymann, Rochester Institute of Technology, Rochester, NY
Chinma Uche, CREC Academy of Aerospace and Engineering, Windsor, CT
Jill Westerlund, Hoover High School, Hoover, AL
Carol Yarbrough, Alabama School of Fine Arts, Birmingham, AL
SPECIAL THANKS
Jan Cuny, Owen Astrachan, Amy Briggs, and the National Science
Foundation
College Board’s Advanced Placement® Program (AP®) with formative Topic Questions that teachers can assign
enables willing and academically prepared students throughout the year to measure students’ progress as
to pursue college-level studies—with the opportunity they acquire content knowledge and develop skills.
to earn college credit, advanced placement, or
both—while still in high school. Through AP courses
in 38 subjects, each culminating in a challenging
Enrolling Students:
exam, students learn to think critically, construct solid Equity and Access
arguments, and see many sides of an issue—skills College Board strongly encourages educators to
that prepare them for college and beyond. Taking AP make equitable access a guiding principle for their
courses demonstrates to college admission officers AP programs by giving all willing and academically
that students have sought the most challenging prepared students the opportunity to participate
curriculum available to them, and research indicates in AP. We encourage the elimination of barriers
that students who score a 3 or higher on an AP Exam that restrict access to AP for students from ethnic,
typically experience greater academic success in racial, and socioeconomic groups that have been
college and are more likely to earn a college degree traditionally underserved. College Board also believes
than non-AP students. Each AP teacher’s syllabus that all students should have access to academically
is evaluated and approved by faculty from some of challenging coursework before they enroll in AP classes,
the nation’s leading colleges and universities, and AP which can prepare them for AP success. It is only
Exams are developed and scored by college faculty and through a commitment to equitable preparation and
experienced AP teachers. Most four-year colleges and access that true equity and excellence can be achieved.
universities in the United States grant credit, advanced
placement, or both on the basis of successful AP
Exam scores—more than 3,300 institutions worldwide
Offering AP Courses:
annually receive AP scores. The AP Course Audit
The AP Program unequivocally supports the principle
AP Course Development that each school implements its own curriculum that will
enable students to develop the content understandings
In an ongoing effort to maintain alignment with best
and skills described in the course framework.
practices in college-level learning, AP courses and
exams emphasize challenging, research-based The AP Program does have a short list of curricular
curricula aligned with higher education expectations. and resource requirements that must be fulfilled
before a school can label a course “Advanced
Teachers can choose to adopt the curriculum of
Placement” or “AP.” Schools wishing to offer AP
one of the AP endorsed providers or design their
courses must participate in the AP Course Audit, a
own curriculum for AP Computer Science Principles,
process through which AP teachers’ course materials
selecting appropriate college-level readings,
are reviewed by college faculty. Teachers can also
assignments, and resources. This course and exam
adopt a syllabus from an AP endorsed provider
description presents the content and skills that
during this process.The AP Course Audit was created
are the focus of the corresponding college course
to provide teachers and administrators with clear
and that appear on the AP Exam. The intention
guidelines on curricular and resource requirements
of this publication is to respect teachers’ time
for AP courses and to help colleges and universities
and expertise by providing a roadmap that they
validate courses marked “AP” on students’ transcripts.
can modify and adapt to their local priorities and
This process ensures that AP teachers’ courses meet
preferences. By organizing the AP course content
or exceed the curricular and resource expectations
and skills into topics, the AP Program is able to
that college and secondary school faculty have
provide teachers and students
established for college-level courses.
By completing a simple activation process at the start of the school year, teachers and
students receive access to a robust set of classroom resources.
AP Classroom
AP Classroom is a dedicated online platform designed to support teachers and students
throughout their AP experience. The platform includes a variety of powerful resources and
tools to provide yearlong support to teachers and enable students to receive meaningful
feedback on their progress.
TOPIC QUESTIONS
Formative AP questions provide feedback to students on the areas where they need to focus
and are designed to meet students where they are in the material. Topic Questions are best
used for spot-checking student understanding while teaching the topics identified in the
course framework. They can be used in class or as homework based on teacher preference.
The questions can reveal misunderstandings and help teachers target content and skills to
emphasize in lessons and help students understand why an answer is correct or incorrect.
Because the Topic Questions are formative, the results of these assessments cannot be used
to evaluate teacher effectiveness or assign letter grades to students, and any such misuses
are grounds for losing school authorization to offer AP courses.*
AP QUESTION BANK
This online library of real AP Exam questions provides teachers with secure questions to use
in their classrooms. Teachers can find questions indexed by course topics and skills, create
customized tests, and assign them online or on paper. These tests enable students to practice
and get feedback on each question.
While the digital activation process takes a short time for teachers, students, and
AP Coordinators to complete, overall it helps save time and provides the following
additional benefits:
Whether teachers choose to develop their own curriculum or adopt an AP endorsed provider's
curriculum, integrating AP resources throughout the course can help students develop skills
and conceptual understandings. The instructional model outlined below shows possible ways
to incorporate AP resources into the classroom.
Plan
Teachers may consider the following approaches as they plan their instruction.
§ Review the overview at the start of each big idea guide to identify essential questions,
conceptual understandings, and skills for each big idea.
§ Use the Big Idea at a Glance table to identify related topics that build toward a common
understanding across big ideas, and then group those topics into units or modules,
ensuring appropriate sequencing, scaffolding, and pacing for students.
§ Identify useful strategies in the Instructional Approaches section to help teach the
concepts and skills.
Teach
When teaching, supporting resources can be used to build students’ conceptual
understanding and mastery of skills.
§ Use the topic pages in the big idea guides to identify the required content.
§ Integrate the content with a skill, considering any appropriate scaffolding.
§ Employ any of the instructional strategies identified during the planning stage.
§ Use the available resources on the topic pages to bring a variety of assets into
the classroom.
Assess
Teachers can measure student understanding of the content and skills covered in the big idea
and provide actionable feedback to students.
§ While teaching each big idea, use AP Classroom to assign students the Topic Questions
as homework or as an in-class task.
§ Provide question-level feedback to students through answer rationales; provide topic- and
skill-level feedback.
§ Create additional practice opportunities using the AP Question Bank, and assign them
through AP Classroom.
AP Computer Science Principles introduces students to the breadth of the field of computer
science. In this course, students will learn to design and evaluate solutions and to apply
computer science to solve problems through the development of algorithms and programs.
They will incorporate abstraction into programs and use data to discover new knowledge.
Students will also explain how computing innovations and computing systems, including the
Internet, work, explore their potential impacts, and contribute to a computing culture that
is collaborative and ethical. It is important to note that the AP Computer Science Principles
course does not have a designated programming language. Teachers have the flexibility
to choose a programming language(s) that is most appropriate for their students to use in
the classroom.
Prerequisites
It is recommended that students in the AP Computer Science Principles course have
successfully completed a first-year high school algebra course with a strong foundation of
basic linear functions, composition of functions, and problem-solving strategies that require
multiple approaches and collaborative efforts. In addition, students should be able to use a
Cartesian (x, y) coordinate system to represent points on a plane. It is important that students
and their advisers understand that any significant computer science course builds upon a
foundation of mathematical reasoning that should be acquired before attempting such
a course. Prior computer science experience is not required to take this course.
Course
Framework
Introduction
§ Responsible Computing—Contribute to an
inclusive, safe, collaborative, and ethical computing
culture.
Overview
This course framework provides a description of what students should know and
be able to do to qualify for college credit or placement.
2 COURSE CONTENT
The course content is organized into big ideas, which are cross-cutting
concepts that build conceptual understanding and spiral throughout the
course. The content and conceptual understandings within the big ideas
reflect what colleges and universities typically expect students to master
to qualify for college credit and/or placement.
Computational
Thinking
Practices
The table that follows presents the computational thinking practices that
students should develop during the AP Computer Science Principles course. The
practices form the basis of tasks on the AP Exam.
The learning objectives found in the big idea guides are each aligned to one of
the skills from a practice. Teachers will want to be sure to integrate the practices
and the course content with enough repetition to prepare students to transfer
these skills when taking the AP Exam.
Computational Thinking
Practices: Skills
Practice 1 Practice 2 Practice 3 Practice 4 Practice 5 Practice 6
Computational Algorithms Abstraction Code Computing Responsible
Solution and Program in Program Analysis 4 Innovations 5 Computing 6
SKILLS
1.A Investigate 2.A Represent 3.A Generalize 4.A Explain how 5.A Explain 6.A Collaborate in
the situation, algorithmic data sources a code segment how computing the development
context, or task. processes through variables. or program systems work. of solutions.
without using a functions.
1.B Determine programming 3.B Use 5.B Explain how 6.B Use safe
and design an language. abstraction 4.B Determine knowledge can be and secure
appropriate to manage the result of code generated from methods when
method or 2.B Implement complexity in a segments. data. using computing
approach to and apply an program. devices.
achieve the algorithm. 4.C Identify and 5.C Describe
*NOTE: All computational thinking practices except Computational Thinking Practice 6 are
assessed in the multiple-choice section of the AP Exam.
Course
Content
Based on the Understanding by Design® (Wiggins and McTighe) model, this
course framework provides a description of the course requirements necessary
for student success, with a focus on big ideas that encompass core principles,
theories, and processes of the discipline. The framework also encourages
instruction that prepares students for advanced computer science coursework
and its integration into a wide array of STEM-related fields.
Big Ideas
The big ideas serve as the foundation of the course and help students create
meaningful connections among concepts. They are often overarching concepts
or themes that become threads that run throughout the course. Revisiting the
big ideas and applying them in a variety of contexts enables students to develop
deeper conceptual understanding. Below are the big ideas of the course and a
brief description of each.
TOPICS
Each big idea is broken down into teachable segments called topics. The topic
pages (starting on page 32) contain all required content for each topic. Although
most topics can be taught in one or two class periods, teachers are encouraged
to pace their course to suit the needs of their students and school.
a Glance
IDEA IDEA
Data
1 Development 2
10–13% AP Exam
Weighting 17–22% AP Exam
Weighting
1 1
Plan 6
1.1 Collaboration 2
3
2.1 Binary Numbers
The Course at a Glance provides 1
1.2 Program Function 1 2.2 Data Compression
a useful visual organization 3
and Purpose
4 Extracting Information
of the AP Computer Science 5
2.3
1
Program Design from Data
Principles curricular 4
and Development
components, including the 6 2 2.4 Using Programs
following: 1 1.4 Identifyingand 5 with Data
4 Correcting Errors
§§ Big ideas, along with
approximate weighting
§§ Progression of topics within
each big idea
§§ Spiraling of practices across
big ideas
Teach
COMPUTATIONAL THINKING
PRACTICES
Practices spiral across big ideas.
Assess
Assign the Topic Questions—
either as homework or in
class—for each big idea. The
Topic Questions are formative AP
questions that provide feedback to
students on the areas where they
need to focus. Topic Questions Topic Questions
Multiple-choice: ~20 questions Multiple-choice: ~20 questions
30–35% AP Exam
Weighting 11-15% AP Exam
Weighting 21–26% AP Exam
Weighting
3 3.1 Variables and 5 4.1 The Internet 5.1 Beneficial and Harmful
5
4 Assignments Effects
1
4.2 Fault Tolerance Digital Divide
3 3.2 Data Abstraction 5 5 5.2
2
3.7 Nested Conditionals
4
2
3.8 Iteration
4
1
3.9 Developing Algorithms
2
2
4
3
2
2
4
1
1
1 3.18 Undecidable Problems
Big Idea
Guides
Designed with input from the community of AP Computer Science
Principles educators, the big idea guides offer all teachers helpful
guidance in building students’ skills and knowledge. It is important to
remember that big ideas are themes that run across the entire school year,
rather than units of instruction. Within each big idea are topics. Teachers
and AP endorsed providers can group topics together to create units or
modules for instruction. In some cases, it may be appropriate for a topic to
appear in more than one unit or module.
the course.
Effective collaboration can often differ from group work, because it requires equal participation
other students improved
and voice from all members of the group. Early in the school year, it may be helpful for teachers
an overall project?
to establish practices and norms that facilitate a collaborative environment and provide
§ What are some ways students with time to practice working together. Content in this big idea is often paired with Big
you can collect Idea 3: Algorithms and Programming.
additional feedback on
your program to use for
Building Computational can be a good place to start writing their
Building Computational Thinking Practices describes specific
improvements?
The Big Idea at a Glance table shows the topics and related
BIG
IDEA
Creative Development
learning objectives and skills. The Unit/Module column has
1 been left blank so that teachers can indicate where they are
BIG IDEA AT A GLANCE going to place each topic in their course. Teachers who are
using an AP endorsed provider can determine where each topic
Objective
Learning
The Skills for each topic show how the content in that topic has
6.A Collaborate in the development of solutions (not
assessed).
CRD-1.C
1.2 Program Function and 1.A Investigate the situation, context, or task.
been linked to specific AP Computer Science Principles skills.
CRD-2.A, CRD-2.B,
CRD-2.C, CRD-2.D
Purpose
3.A Generalize data sources through variables.
1.3 Program Design and 1.B Determine and design an appropriate method or
CRD-2.E, CRD-2.F, CRD-2.G,
assessed).
CRD-2.I, CRD-2.J
1.4 Identifying and Correcting 1.B Determine and design an appropriate method or
Errors approach to achieve the purpose.
Go to AP Classroom to assign Topic Questions as you teach the topics in Big Idea 1.
Review the results in class to identify and address any student misunderstandings.
2 1.3 Diagramming
In small groups, have students play a board game for 10 minutes. As they play,
ask them to record the actions (such as rolling the dice or moving their piece) and
decisions made in a diagram or flowchart. Have students trade games with another
group and play the game using the diagram for directions. Students should identify
and correct where the diagram might not be accurate or have missing steps. See the
Language and Logic of Computing: Algorithmic Thinking Teaching and Assessing
Module in the Professional Learning section of AP Classroom for a more detailed
lesson plan and video example.
TOPIC PAGES
Algorithms and Programming
BIG
IDEA The Skills section offers one or more skills related to the topic.
3
TOPIC 3.11 SKILLS
1.A
Where possible, available resources are listed that might help
Binary Search
Investigate the situation,
context, or task. teachers address a particular topic in their classroom.
1.D
Evaluate solution options.
particular skill, and that skill appears in a colored box after the
For binary search algorithms: The binary search algorithm starts at the
a. Determine the number of middle of a sorted data set of numbers and
iterations required to find a eliminates half of the data; this process repeats
until the desired value is found or all elements
learning objective.
value in a data set. 1.D
have been eliminated.
b. Explain the requirements
necessary to complete a X EXCLUSION STATEMENT (EK: AAP-2.P.1):
binary search. 1.A Specific implementations of the binary search are
AAP-2.P.2
NOTE: Labels are used to distinguish each element of the required course content and are used throughout this course and exam description.
Additionally, they are used in the AP Question Bank and other resources found on AP Classroom. Enduring understandings are labeled
sequentially according to the big idea that they are related to. Learning objectives are labeled to correspond with the enduring understanding
they relate to. Finally, essential knowledge statements are labeled to correspond with the learning objective they relate to.
BIG IDEA 1
Creative
Development
10–13%
AP EXAM WEIGHTING
Topic Questions
Multiple-choice: ~20 questions
Developing Understanding
ESSENTIAL Collaboration is crucial when developing computing innovations, because having multiple
QUESTIONS perspectives offers opportunities to improve the design of innovations. In this big idea, students
work collaboratively to design and develop programs using an iterative development process.
CRD-1 They identify the needs of all users by gathering input from people from different backgrounds
§§ How has working and demographics. Once the program is developed, they test it to ensure it meets these needs.
collaboratively with
Effective collaboration can often differ from group work, because it requires equal participation
other students improved
and voice from all members of the group. Early in the school year, it may be helpful for teachers
an overall project?
to establish practices and norms that facilitate a collaborative environment and provide
§§ What are some ways students with time to practice working together. Content in this big idea is often paired with Big
you can collect Idea 3: Algorithms and Programming.
additional feedback on
your program to use for can be a good place to start writing their
improvements? Building Computational
documentation. It may be more helpful to
Thinking Practices concentrate on documenting smaller code
CRD-2
1.B 3.A 4.A 4.C segments rather than trying to describe
§§ What are some ways larger sections all at once.
you currently plan your When designing a solution to a problem,
work before starting a programmers consider both the program
itself and the way the user will interact
project?
with the program: the user interface.
Preparing for
§§ What apps or programs
have you stopped using
A well-designed user interface makes it the AP Exam
easy for the user to understand what data
because you didn’t like Students will be expected to design and
are required as input for the program to
the design of how you implement a program of their choice for the
complete its tasks.
interacted with it? Create performance task. While students
When creating diagrams of their programs, select their own topic for this task, they are
students will benefit from considering how required to include certain elements, such as
they want their program to behave based on lists and procedures, in their program code.
identified inputs. Planning ahead may help Providing students with exemplars may help
them determine what abstractions can be them consider the types of programs that
developed and can help identify logic errors can be developed while still meeting this
early in development. requirement.
1.2 Program Function and 1.A Investigate the situation, context, or task.
CRD-2.A, CRD-2.B,
CRD-2.C, CRD-2.D
Purpose
3.A Generalize data sources through variables.
1.3 P
rogram Design and 1.B Determine and design an appropriate method or
CRD-2.E, CRD-2.F, CRD-2.G,
assessed).
CRD-2.I, CRD-2.J
1.4 I dentifying and Correcting 1.B Determine and design an appropriate method or
Errors approach to achieve the purpose.
Go to AP Classroom to assign Topic Questions as you teach the topics in Big Idea 1.
Review the results in class to identify and address any student misunderstandings.
2 1.3 Diagramming
In small groups, have students play a board game for 10 minutes. As they play,
ask them to record the actions (such as rolling the dice or moving their piece) and
decisions made in a diagram or flowchart. Have students trade games with another
group and play the game using the diagram for directions. Students should identify
and correct where the diagram might not be accurate or have missing steps. See the
Language and Logic of Computing: Algorithmic Thinking Teaching and Assessing
Module in the Professional Learning section of AP Classroom for a more detailed
lesson plan and video example.
AVAILABLE RESOURCES
§§ External Resources >
Required Course Content
§§ Collaboration
Tools from Cornell
University Center for
Teaching Innovation ENDURING UNDERSTANDING
§§ 4 Methods to
CRD-1
Enhance Student
Collaboration in Incorporating multiple perspectives through collaboration improves computing
the Classroom from innovations as they are developed.
Concordia University-
Portland
CRD-1.B CRD-1.B.1
Explain how computing Online tools support collaboration by allowing
innovations are developed by programmers to share and provide feedback on
groups of people. 1.C ideas and documents.
CRD-1.B.2
Common models such as pair programming
exist to facilitate collaboration.
CRD-1.C CRD-1.C.1
Demonstrate effective Effective collaborative teams practice
interpersonal skills during interpersonal skills, including but not limited to:
collaboration. 1.C §§ communication
§§ consensus building
§§ conflict resolution
§ negotiation
CRD-2.B CRD-2.B.1
Explain how a program or A program is a collection of program
code segment functions. statements that performs a specific task when
4.A run by a computer. A program is often referred
to as software.
CRD-2.B.2
A code segment is a collection of program
statements that is part of a program.
CRD-2.B.3
A program needs to work for a variety of inputs
and situations.
CRD-2.B.4
The behavior of a program is how a program
functions during execution and is often
described by how a user interacts with it.
CRD-2.C CRD-2.C.1
Identify input(s) to a program. Program inputs are data sent to a computer for
3.A processing by a program. Input can come in a
variety of forms, such as tactile, audio, visual,
or text.
CRD-2.C.2
An event is associated with an action and
supplies input data to a program.
CRD-2.C.3
Events can be generated when a key is pressed,
a mouse is clicked, a program is started, or any
other defined action occurs that affects the
flow of execution.
CRD-2.C.4
Inputs usually affect the output produced by a
program.
CRD-2.C.5
In event-driven programming, program
statements are executed when triggered rather
than through the sequential flow of control.
CRD-2.C.6
Input can come from a user or other programs.
CRD-2.D CRD-2.D.1
Identify output(s) produced Program outputs are any data sent from a
by a program. 3.A program to a device. Program output can come
in a variety of forms, such as tactile, audio,
visual, or text.
CRD-2.D.2
Program output is usually based on a program’s
input or prior state (e.g., internal values).
and Development
purpose.
1.C
Explain how collaboration
affects the development of
a solution.
4.A
Explain how a code
segment or program
functions.
Required Course Content
6.C
Acknowledge the
intellectual property of
others.
ENDURING UNDERSTANDING
CRD-2
Developers create and innovate using an iterative design process that is user-
focused, that incorporates implementation/feedback cycles, and that leaves ample
AVAILABLE RESOURCE room for experimentation and risk-taking.
§§ Professional
Development >
Teaching and
LEARNING OBJECTIVE ESSENTIAL KNOWLEDGE
Assessing Module:
Explaining Processes CRD-2.E CRD-2.E.1
Develop a program using a A development process can be ordered and
development process. 1.B intentional, or exploratory in nature.
CRD-2.E.2
There are multiple development processes.
The following phases are commonly used when
developing a program:
§§ investigating and reflecting
§§ designing
§§ prototyping
§§ testing
CRD-2.E.3
A development process that is iterative requires
refinement and revision based on feedback,
testing, or reflection throughout the process.
This may require revisiting earlier phases of the
process.
CRD-2.E.4
A development process that is incremental is
one that breaks the problem into smaller pieces
and makes sure each piece works before adding
it to the whole.
CRD-2.H CRD-2.H.1
Acknowledge code segments It is important to acknowledge any code
used from other sources. segments that were developed collaboratively
1.C or by another source.
CRD-2.H.2
Acknowledgement of a code segment(s)
written by someone else and used in a program
can be in the program documentation. The
acknowledgement should include the origin or
original author’s name.
Identifying and
Determine and design an
appropriate method or
approach to achieve the
Correcting Errors
purpose.
4.C
Identify and correct errors
in algorithms and programs,
including error discovery
through testing.
BIG IDEA 2
Data
17–22%
AP EXAM WEIGHTING
Topic Questions
Multiple-choice: ~20 questions
Developing Understanding
ESSENTIAL Because essentially everything we do with a computer is being broken down into some form
QUESTIONS of data, it is important for students to develop a breadth of understanding of how computers
handle data and how students can use those same data to solve problems such as raising
DAT-1 awareness for a cause, using census data to determine which state will gain seats in the House
§§ How can we use 1s of Representatives, or using traffic and cost data to determine the ideal location for prom. In this
and 0s to represent big idea, students will gain a deep understanding of how information is stored on a computer
something complex like in binary and seamlessly translated into what is seen on the screen or heard through speakers.
a video of the marching Students will also learn how data are processed to learn something new. This big idea is often
band playing a song? paired with Big Idea 3: Algorithms and Programming and Big Idea 5: Impact of Computing.
DAT-2
§§ How can you predict
Building Computational Preparing for the AP Exam
the attendance at a Thinking Practices Data compression algorithms are often used
school event using data 2.B 3.C 5.B to maximize storage space or to transmit
gathered from social data over the Internet, but sometimes at
On the end-of-course exam, students will
media? a cost to the quality of the data. Students
be presented with the way data for text or
§§ When is it more will need to compare data compression
media, such as color, are represented by a
appropriate to use a algorithms and determine which one would
computer and will be asked to convert values
computer to analyze be best to use in a given situation. Providing
from binary to decimal or vice versa. The idea
data than to complete students with examples of different
that there are number systems other than
the analysis by hand? compression algorithms along with how
the decimal system is often new to students.
each might work may deepen students’
Connecting the foundational principles of
understanding. Examples of how data
how number systems operate to the decimal
might be restored to their uncompressed
number system is likely to help students lean
state—or may be unable to be restored—
on their prior knowledge when asked to work
may improve students’ ability to distinguish
with binary numbers.
between compression algorithms.
Some real-world problems and simulations
When presented with scenarios that
involve the use of large data sets that cannot
describe data and metadata for analysis
be easily analyzed by hand and require a
on the end-of-course exam, students will
programming solution that manipulates
be asked to determine what information
or combines the data with other sources
can be found, as well as a potential
to generate new knowledge and find a
programming process that can be used to
solution. When working with large data sets,
extract information or modify the existing
programmers use data abstraction to write
data. Students might benefit from practice
programs that can be flexible enough to
identifying a problem they could solve
handle a change in the number of data entries.
using data, such as the best route to take
Providing students with practice using data
to school, gathering the necessary data to
sets that are too large to manipulate by hand
analyze—either by using a public data set
will motivate them to develop more general
or developing a survey to gather the data—
solutions and data abstractions. Because the
and then implementing a program that will
solution is generalized, an explanation of the
manipulate the data to find an answer.
solution through documentation within the
program may be necessary.
2.3 Extracting 5.B Explain how knowledge can be generated from data.
Information from
Data 5.D Describe the impact of gathering data.
DAT-2.C
DAT-2.D,
2.B
Go to AP Classroom to assign Topic Questions as you teach the topics in Big Idea 2.
Review the results in class to identify and address any student misunderstandings.
2 2.4 Diagramming
Give students a question and a list of data. Have them diagram a process that could
be used to answer the question using the data, making sure to include the input(s)
of information and the output of the transformed data. Have students include an
explanation of how the process represented in their diagram would work to find
the solution.
AVAILABLE RESOURCES
Required Course Content
§§ External Resources >
§§ Binary Numbers from
CS Unplugged
ENDURING UNDERSTANDING
§§ Blown to Bits:
Chapter 1 DAT-1
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.B DAT-1.B.1
Explain the consequences of In many programming languages, integers
using bits to represent data. are represented by a fixed number of bits,
1.D which limits the range of integer values and
mathematical operations on those values. This
limitation can result in overflow or other errors.
DAT-1.B.2
Other programming languages provide
an abstraction through which the size of
representable integers is limited only by the
size of the computer’s memory; this is the
case for the language defined in the exam
reference sheet.
DAT-1.B.3
In programming languages, the fixed number
of bits used to represent real numbers limits
the range and mathematical operations
on these values; this limitation can result
in round-off and other errors. Some real
numbers are represented as approximations in
computer storage.
X EXCLUSIONSTATEMENT(EKDAT-1.B.3):
Data Compression
Evaluate solution options.
ENDURING UNDERSTANDING
DAT-1
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.
Extracting Information
Explain how knowledge can
be generated from data.
5.D
ENDURING UNDERSTANDING
DAT-2
Programs can be used to process data, which allows users to discover information
and create new knowledge.
DAT-2.C DAT-2.C.1
Identify the challenges The ability to process data depends on the
associated with processing capabilities of the users and their tools.
data. 5.D
DAT-2.C.2
Data sets pose challenges regardless of size,
such as:
§§ the need to clean data
§§ incomplete data
§§ invalid data
§§ the need to combine data sources
DAT-2.C.3
Depending on how data were collected, they
may not be uniform. For example, if users enter
data into an open field, the way they choose to
abbreviate, spell, or capitalize something may
vary from user to user.
DAT-2.C.4
Cleaning data is a process that makes the data
uniform without changing their meaning (e.g.,
replacing all equivalent abbreviations, spellings,
and capitalizations with the same word).
DAT-2.C.5
Problems of bias are often created by the type
or source of data being collected. Bias is not
eliminated by simply collecting more data.
ENDURING UNDERSTANDING
DAT-2
Programs can be used to process data, which allows users to discover information
and create new knowledge.
DAT-2.E DAT-2.E.1
Explain how programs can Programs are used in an iterative and
be used to gain insight and interactive way when processing information
knowledge from data. 5.B to allow users to gain insight and knowledge
about data.
DAT-2.E.2
Programmers can use programs to filter and
clean digital data, thereby gaining insight and
knowledge.
DAT-2.E.3
Combining data sources, clustering data, and
classifying data are parts of the process of
using programs to gain insight and knowledge
from data.
DAT-2.E.4
Insight and knowledge can be obtained
from translating and transforming digitally
represented information.
DAT-2.E.5
Patterns can emerge when data are
transformed using programs.
BIG IDEA 3
Algorithms
and
Programming
30–35%
AP EXAM WEIGHTING
Topic Questions
Multiple-choice: ~90 questions
Performance Tasks:
~20 prompts
Algorithms and
Programming
Developing Understanding
ESSENTIAL All programming languages, whether block-based or text-based, use similar programming
QUESTIONS structures and commands. Having a basic understanding of how these building blocks are
combined to form algorithms and abstractions in one language makes it easier to apply these
AAP-1 same understandings to other programming languages. This big idea focuses on determining
§§ How can we store data the efficiency of algorithms, as well as writing and implementing algorithms in a program. This
in a program to solve big idea can be paired with any of the other big ideas and taught throughout the school year.
problems?
3.B
programming language.
programming language.
Go to AP Classroom to assign Topic Questions as you teach the topics in Big Idea 3.
Review the results in class to identify and address any student misunderstandings.
4 3.18 Think-pair-share
Have students work in pairs to consider what factors would be the most important
to prioritize in writing an algorithm to build the perfect master schedule for the
school. Some considerations may include maximum class size, student preferences,
and teacher availability. Have the pairs discuss and then report their results. Finally,
discuss as a class how such programs may have to settle for a “good enough”
solution when an exact solution may not be possible in a reasonable amount of time.
Variables and
Generalize data sources
through variables.
4.B
ENDURING UNDERSTANDING
AAP-1
To find specific solutions to generalizable problems, programmers represent and
organize data in multiple ways.
a expression
evaluates expression and then assigns a
copy of the result to the variable a.
AAP-1.B.3
The value stored in a variable will be the most
recent value assigned. For example:
a 1
b a
a 2
display(b)
still displays 1.
Data Abstraction
Generalize data sources
through variables.
3.B
Use abstraction to manage
complexity in a program.
3.C
Explain how abstraction
manages complexity.
AAP-1.D.7
The exam reference sheet provides the
notation
[value1, value2, value3, ...]
to create a list with those values as the first,
second, third, and so on items. For example,
§§ Text:
aList [value1, value2,
value3, ...]
Block:
aList
creates a new empty list and assigns it to
aList.
continued on next page
Expressions
2.B
Implement and apply an
algorithm.
4.B
Determine the result of
code segments.
AAP-2.B AAP-2.B.1
Represent a step-by-step Sequencing is the application of each step of
algorithmic process using an algorithm in the order in which the code
sequential code statements. statements are given.
2.B
AAP-2.B.2
A code statement is a part of program code
that expresses an action to be carried out.
AAP-2.C AAP-2.C.1
Evaluate expressions that use Arithmetic operators are part of most
arithmetic operators. 4.B programming languages and include addition,
subtraction, multiplication, division, and
modulus operators.
AAP-2.C.2
The exam reference sheet provides a MOD b,
which evaluates to the remainder when a is
divided by b. Assume that a is an integer
greater than or equal to 0 and b is an
integer greater than 0. For example, 17 MOD
5 evaluates to 2.
AAP-2.C.3
The exam reference sheet provides the
arithmetic operators +, -, *, /, and MOD.
Text and Block:
§§ a + b
§§ a – b
§§ a * b
§§ a / b
§§ a MOD b
These are used to perform arithmetic on a
and b. For example, 17 / 5 evaluates to
3.4.
AAP-2.C.4
The order of operations used in mathematics
applies when evaluating expressions. The MOD
operator has the same precedence as the *
and / operators.
ENDURING UNDERSTANDING
AAP-2
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.
Boolean Expressions
Implement and apply an
algorithm.
4.B
Determine the result of
code segments.
ENDURING UNDERSTANDING
AAP-2
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.
NOT condition
which evaluates to true if condition is
false; otherwise it evaluates to false.
AAP-2.F.3
The exam reference sheet provides
Text:
condition1 AND condition2
Block:
condition1 AND condition2
Conditionals
Represent algorithmic
processes without using a
programming language.
2.B
Implement and apply an
algorithm.
4.B
Determine the result of
code segments.
AAP-2.H AAP-2.H.1
For selection: Conditional statements, or “if-statements,”
a. affect the sequential flow of control by
2.B executing different statements based on the
b. Determine the result of value of a Boolean expression.
conditional statements. 4.B AAP-2.H.2
The exam reference sheet provides
Text:
IF(condition)
{
<block of statements>
}
Block:
IF condition
block of statements
IF condition
Nested Conditionals
Implement and apply an
algorithm.
4.B
Determine the result of
code segments.
ENDURING UNDERSTANDING
AAP-2
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.
4.B
AAP-2.K AAP-2.K.1
For iteration: Iteration statements change the sequential
a. flow of control by repeating a set of statements
2.B zero or more times, until a stopping condition
b. Determine the result or is met.
side effect of iteration AAP-2.K.2
statements. 4.B The exam reference sheet provides
Text:
REPEAT n TIMES
{
<block of statements>
}
Block:
REPEAT n TIMES
block of statements
b. REPEAT UNTIL(condition)
{
4.B <block of statements>
}
Block:
block of statements
ENDURING UNDERSTANDING
AAP-2
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.
AVAILABLE RESOURCE
§ AP CSP Exam Reference
Required Course Content
Sheet (see Appendix)
ENDURING UNDERSTANDING
AAP-2
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.
x aList i
assigns the value of aList[i] to the
variable x.
§ assigning a value to an element of a list
Text:
aList[i] x
Block:
aList i x
assigns the value of x to aList[i].
REMOVE aList, i
removes the item at index i in aList
and shifts to the left any values at indices
greater than i. The length of aList is
decreased by 1.
§ determining the length of a list
Text:
LENGTH(aList)
Block:
LENGTH aList
evaluates to the number of elements
currently in aList.
AAP-2.N.2
List procedures are implemented in
accordance with the syntax rules of the
programming language.
4.B
AAP-2.O.2
Iteration statements can be used to traverse
a list.
AAP-2.O.3
The exam reference sheet provides
Text:
FOR EACH item IN aList
{
<block of statements>
}
Block:
block of statements
Binary Search
Investigate the situation,
context, or task.
1.D
Evaluate solution options.
AAP-2.P.2
Data must be in sorted order to use the binary
search algorithm.
AAP-2.P.3
Binary search is often more efficient than
sequential/linear search when applied to sorted
data.
AVAILABLE RESOURCE
§§ AP CSP Exam Reference
Required Course Content
Sheet (see Appendix)
ENDURING UNDERSTANDING
AAP-3
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.
block of statements
DISPLAY expression
RETURN expression
block of statements
RETURN expression
AAP-3.A.9
The exam reference sheet provides procedure
Text:
INPUT()
Block:
INPUT
which accepts a value from the user and
returns the input value.
Developing Procedures
Use abstraction to manage
complexity in a program.
3.C
Explain how abstraction
manages complexity.
ENDURING UNDERSTANDING
AAP-3
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.C AAP-3.C.1
Develop procedural The exam reference sheet provides
abstractions to manage Text:
complexity in a program by
writing procedures. 3.B
PROCEDURE procName(parameter1,
parameter2, ...)
{
<block of statements>
}
Block:
block of statements
block of statements
RETURN expression
ENDURING UNDERSTANDING
AAP-3
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.
Random Values
Implement and apply an
algorithm.
4.B
Determine the result of
code segments.
ENDURING UNDERSTANDING
AAP-3
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.
ENDURING UNDERSTANDING
AAP-4
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.4
An algorithm’s efficiency is determined through
formal or mathematical reasoning.
1.D
Algorithms with a polynomial efficiency or
slower (constant, linear, square, cube, etc.)
are said to run in a reasonable amount of
time. Algorithms with exponential or factorial
efficiencies are examples of algorithms that run
in an unreasonable amount of time.
AAP-4.A.8
Some problems cannot be solved in a
reasonable amount of time because there is no
efficient algorithm for solving them. In these
cases, approximate solutions are sought.
AAP-4.A.9
A heuristic is an approach to a problem that
produces a solution that is not guaranteed to
be optimal but may be used when techniques
that are guaranteed to always find an optimal
solution are impractical.
X
ENDURING UNDERSTANDING
AAP-4
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.B.3
An undecidable problem may have some
instances that have an algorithmic solution, but
there is no algorithmic solution that could solve
all instances of the problem.
BIG IDEA 4
Computer
Systems and
Networks
11–15%
AP EXAM WEIGHTING
Topic Questions
Multiple-choice: ~10 questions
Course Framework V.1 | 99
Return to Table of Contents
© 2020 College Board
BIG
IDEA
Computer Systems and Networks
4
BIG IDEA AT A GLANCE
Objective
Learning
5.A
1.D
Go to AP Classroom to assign Topic Questions as you teach the topics in Big Idea 4.
Review the results in class to identify and address any student misunderstandings.
1 4.1 Journaling
Ask students to read about the Internet and packet switching in Blown to Bits. Pose
several prompts related to the Internet, such as the following, and have students add
their answers to their journals:
§ How is the Internet like the US Post Office?
§ Explain the difference between circuit switching and packet switching.
Ask students to use what they learned from reading to make a drawing showing how
they think an email travels from one place to another.
Course Framework V.1 | 101
Return to Table of Contents
© 2020 College Board
BIG
IDEA
Computer Systems and Networks
4
SKILL
5.A TOPIC 4.1
The Internet
Explain how computing
systems work.
AVAILABLE RESOURCES
§§ Classroom Resources >
Required Course Content
The Computer and
the Internet: TCP/IP:
How Messages Get
Delivered Across the ENDURING UNDERSTANDING
Internet
CSN-1
§§ External Resources >
Computer systems and networks facilitate the transfer of data.
§§ Routing and
Deadlock from CS
Unplugged
§ Network Protocols LEARNING OBJECTIVE ESSENTIAL KNOWLEDGE
from CS Unplugged
CSN-1.A CSN-1.A.1
§§ Blown to Bits:
Explain how computing A computing device is a physical artifact that
Appendix
devices work together in a can run a program. Some examples include
network. 5.A computers, tablets, servers, routers, and smart
sensors.
CSN-1.A.2
A computing system is a group of computing
devices and programs working together for a
common purpose.
CSN-1.A.3
A computer network is a group of
interconnected computing devices capable of
sending or receiving data.
CSN-1.A.4
A computer network is a type of computing
system.
CSN-1.A.5
A path between two computing devices on a
computer network (a sender and a receiver) is
a sequence of directly connected computing
devices that begins at the sender and ends at
the receiver.
CSN-1.A.6
Routing is the process of finding a path from
sender to receiver.
CSN-1.B CSN-1.B.1
Explain how the Internet The Internet is a computer network
works. 5.A consisting of interconnected networks that
use standardized, open (nonproprietary)
communication protocols.
CSN-1.B.2
Access to the Internet depends on the ability
to connect a computing device to an Internet-
connected device.
CSN-1.B.3
A protocol is an agreed-upon set of rules that
specify the behavior of a system.
CSN-1.B.4
The protocols used in the Internet are open,
which allows users to easily connect additional
computing devices to the Internet.
CSN-1.B.5
Routing on the Internet is usually dynamic; it is
not specified in advance.
CSN-1.B.6
The scalability of a system is the capacity for
the system to change in size and scale to meet
new demands.
CSN-1.B.7
The Internet was designed to be scalable.
Course Framework V.1 | 103
Return to Table of Contents
© 2020 College Board
BIG
IDEA
Computer Systems and Networks
4
LEARNING OBJECTIVE ESSENTIAL KNOWLEDGE
CSN-1.C CSN-1.C.1
Explain how data are sent Information is passed through the Internet as
through the Internet via a data stream. Data streams contain chunks of
packets. 5.A data, which are encapsulated in packets.
CSN-1.C.2
Packets contain a chunk of data and metadata
used for routing the packet between the origin
and the destination on the Internet, as well as
for data reassembly.
CSN-1.C.3
Packets may arrive at the destination in order,
out of order, or not at all.
CSN-1.C.4
IP, TCP, and UDP are common protocols used
on the Internet.
CSN-1.D CSN-1.D.1
Describe the differences The World Wide Web is a system of linked
between the Internet and the pages, programs, and files.
World Wide Web. 5.A
CSN-1.D.2
HTTP is a protocol used by the World Wide
Web.
CSN-1.D.3
The World Wide Web uses the Internet.
Fault Tolerance
Evaluate solution options.
5.A
Explain how computing
systems work.
ENDURING UNDERSTANDING
CSN-1
Computer systems and networks facilitate the transfer of data.
Computing
ENDURING UNDERSTANDING
CSN-2
Parallel and distributed computing leverage multiple computers to more quickly
solve complex problems or process large data sets.
Course Framework V.1 | 107
Return to Table of Contents
© 2020 College Board
BIG
IDEA
Computer Systems and Networks
4
LEARNING OBJECTIVE ESSENTIAL KNOWLEDGE
CSN-2.A CSN-2.A.7
For sequential, parallel, and The “speedup” of a parallel solution is
distributed computing: measured in the time it took to complete the
a. Compare problem task sequentially divided by the time it took to
solutions. 1.D complete the task when done in parallel.
b. Determine the efficiency of
solutions. 1.D
CSN-2.B CSN-2.B.1
Describe benefits and Parallel computing consists of a parallel portion
challenges of parallel and and a sequential portion.
distributed computing. 1.D
CSN-2.B.2
Solutions that use parallel computing can
scale more effectively than solutions that use
sequential computing.
CSN-2.B.3
Distributed computing allows problems to be
solved that could not be solved on a single
computer because of either the processing
time or storage needs involved.
CSN-2.B.4
Distributed computing allows much larger
problems to be solved quicker than they could
be solved using a single computer.
CSN-2.B.5
When increasing the use of parallel computing
in a solution, the efficiency of the solution
is still limited by the sequential portion. This
means that at some point, adding parallel
portions will no longer meaningfully increase
efficiency.
BIG IDEA 5
Impact of
Computing
21–26%
AP EXAM WEIGHTING
Topic Questions
Multiple-choice: ~20 questions
Developing Understanding
ESSENTIAL The creation of computer programs can have extensive impacts, some unintended, on
QUESTIONS societies, economies, and cultures. In this big idea, students explore these effects, the legal
and ethical concerns that come with programs, and the responsibilities of programmers. When
IOC-1 using computing innovations and transmitting information via the Internet, students should
§ What app or computer be aware of the risk of sharing personal identifiable information about themselves, such as
software do you use their age or address, and actively take steps to keep this information safe. This big idea can
most often and would be integrated throughout the course and works well with the Creative Development, Data, and
have a hard time going Computing Systems and Networks big ideas.
without? How does
this software solve Building Computational of personal data might have on people who
a problem for you or are different from them, or on society as a
benefit you?
Thinking Practices whole. As students investigate computing
1.C 5.C 5.D 5.E innovations, provide opportunities for
§§ Are innovators
Computing innovations and programs students to learn from others’ perspectives
responsible for the
are often developed in teams. A good, by allowing time for viewpoints and
harmful effects of their
collaborative team starts with a group potential impacts to be shared during a
computing innovations,
that is made up of people from different group discussion, like a debate.
even if those effects
were unintentional? Why backgrounds, genders, ages, and races so
or why not? that the perspectives of all potential users
are being represented. By creating diverse
Preparing for the AP Exam
IOC-2 groups where each person’s opinion is Students will be asked to complete three
§§ What data are generated considered, we help avoid unintentional investigations into computing innovations
by smart phones, and bias and potential negative effects, such as during the school year. Through these
what are they being contributing to the digital divide, that can investigations, students will look at the data
used for? creep into innovations. the computing innovation uses to complete
its task; any data privacy, security, or storage
Investigating the impact of existing
concerns that might be associated with the
computing innovations can help students
innovation; and beneficial and harmful effects
avoid unintentional negative effects of their
the computing innovation might have on
own innovations. Consumers should be
society, the economy, or culture.
aware of the impact that a new computing
innovation might have before beginning On the end-of-course exam, students will be
to use it, as well as what data are being presented with a passage about a computing
gathered and how the product owner innovation and will be asked a series of
intends to use those data. While students questions about data and the effects of the
may find it relatively easy to describe computing innovation. While the computing
how the gathering of data would impact innovations that need to be investigated are
them, it is sometimes more difficult for not specified in the curricular requirement,
students to understand the impacts that students will benefit from investigating a large
computing innovations and the gathering range of computing innovations.
Harmful Effects
5.3 Computing Bias 5.E Evaluate the use of computing based on legal and ethical factors.
IOC-1.E
5.4 Crowdsourcing 1.C Explain how collaboration affects the development of a solution.
IOC-1.F
5.5 Legal and Ethical 5.E Evaluate the use of computing based on legal and ethical factors.
Concerns
IOC-2.A, IOC-2.B,
Go to AP Classroom to assign Topic Questions as you teach the topics in Big Idea 5.
Review the results in class to identify and address any student misunderstandings.
Harmful Effects
AVAILABLE RESOURCE
§§ External Resource >
Required Course Content
ACM Tech News
ENDURING UNDERSTANDING
IOC-1
While computing innovations are typically designed to achieve a specific purpose,
they may have unintended consequences.
AVAILABLE RESOURCE
§§ External Resource >
Required Course Content
ACM Tech News
ENDURING UNDERSTANDING
IOC-1
While computing innovations are typically designed to achieve a specific purpose,
they may have unintended consequences.
Computing Bias
Evaluate the use of
computing based on legal
and ethical factors.
ENDURING UNDERSTANDING
IOC-1
While computing innovations are typically designed to achieve a specific purpose,
they may have unintended consequences.
ENDURING UNDERSTANDING
IOC-1
While computing innovations are typically designed to achieve a specific purpose,
they may have unintended consequences.
Concerns
Safe Computing
Describe the impact of
gathering data.
5.E
Evaluate the use of
computing based on legal
and ethical factors.
IOC-2.B.6
Certificate authorities issue digital certificates
that validate the ownership of encryption keys
used in secure communications and are based
on a trust model.
IOC-2.C IOC-2.C.1
Explain how unauthorized Phishing is a technique that attempts to trick
access to computing a user into providing personal information.
resources is gained. 5.E That personal information can then be used
to access sensitive online resources, such as
bank accounts and emails.
IOC-2.C.2
Keylogging is the use of a program to record
every keystroke made by a computer user in
order to gain fraudulent access to passwords
and other confidential information.
IOC-2.C.3
Data sent over public networks can be
intercepted, analyzed, and modified. One way
that this can happen is through a rogue access
point.
IOC-2.C.4
A rogue access point is a wireless access
point that gives unauthorized access to secure
networks.
Instructional
Approaches
Selecting and
Using Course Materials
Language/Product Description
Alice This block-based programming language includes a 3-D modeling environment
that allows students to create and animate 3-D worlds. This environment lends
itself well to creating stories and games.
App Inventor This open-source web application is block-based and allows students to create
their own applications on mobile devices.
App Lab This is a programming environment for creating web applications with JavaScript.
It allows students to develop programs and toggle back and forth between block-
based and text-based programming modes.
EarSketch This text-based browser application allows students to create their own music
using either JavaScript or Python.
Greenfoot This text-based Java IDE is designed for use in education to create 2-D graphic
applications, such as simulations and interactive games.
Java This text-based programming language allows students to create and solve
problems that vary widely in difficulty. There are several IDEs that can be used to
write programs in Java.
LEGO Mindstorms EV3 This product integrates block-based programming with LEGO bricks and sensors
to create and program robots. The instructions are assembled by linking together
function blocks.
Microsoft MakeCode This development environment provides both block and text editors for students
at different levels. Microsoft MakeCode is a free, open-source, web-based
environment with open educational resources for teachers.
Processing This text-based programming language was initially created to serve as a software
sketchbook, and it can be used to teach programming in a visual context.
Python This text-based programming language has the benefit of readability, which might
be helpful to new programmers.
Scratch This block-based programming language allows students to build scripts to run
animations. This product can be downloaded and installed on a computer or run in
a browser.
Snap! Snap! combines the power of text-based languages such as Python or JavaScript
with the visual simplicity of block-based Scratch. It can grow with your students,
because new blocks can be written in Snap! itself or in JavaScript.
Swift This powerful and intuitive programming language can be used for macOS, iOS,
watchOS, tvOS and beyond. Students gain practical experience with the tools and
techniques to build basic iOS apps with Swift and Xcode, an IDE at the center of
the Apple development experience.
NOTE: While teachers may choose to do some programming instruction using HTML, it should be noted that HTML is not an
acceptable programming language to use when completing the Create performance task.
The AP Computer Science Principles course engaging them in learning activities that apply their
framework details the concepts and skills students understanding of course concepts. The instructional
must master to be successful on the AP Exam. To strategies have been categorized based on whether
address those concepts and skills effectively, it helps they are used to teach programming and problem-
to incorporate a variety of instructional approaches solving, are suitable for cooperative learning, or are
and best practices into daily lessons and activities. helpful for students to make connections between
The following table presents strategies that can material being presented and prior knowledge of
help students develop mastery of the skills by topics covered.
Create a plan Students analyze the tasks Assists in breaking Have students brainstorm
in a problem and create programming tasks several problems in
a process for completing into smaller parts and their own lives or in their
the tasks by finding the identifying the steps communities. Then, have
information needed, needed to complete the them select one of the
interpreting data, choosing entire task. One example of problems and conduct
how to solve a problem, this is the different phases research to gather more
communicating results, of an iterative development of an understanding of
and verifying accuracy. process and how they work that problem and identify
together in the completion at least five facts that
of a program. would help find a solution
to the problem. Next, have
students brainstorm at
least three possible app
ideas that might help solve
the identified problem and
describe how the apps
might function. Finally, have
students select one of the
apps and describe how
would they determine if it
was successful or not.
Identify a subtask Students break a problem Helps organize the pieces When students use
into smaller pieces whose of a complex problem and abstraction to manage
outcomes lead to a reach a complete solution. complexity of their
solution. program during program
development, have them
look at the subtasks that
might exist in a solution
and create procedures with
parameters to generalize
that functionality to work
with a greater set of values.
Look for a pattern Students observe trends Helps identify patterns Provide students with
by looking at expected that can be used to design multiple representations of
output or results based on program code, generalize the same set of data, such
input and specifications. program behavior, identify as bar graphs, pie charts,
errors in existing program and word clouds. Have
code, or draw conclusions students analyze the data
from data. to detect patterns. They
can then use the patterns
they detected to draw
conclusions.
Marking the text Students highlight, Helps students identify When students are
underline, and/or annotate important information reading a passage about
text to focus on key in the text of a program a computing innovation,
information and help specification or resource have them focus on
understand the text or about a computing marking the text by circling
solve the problem. innovation and make notes any information that is
about the interpretation connected to data and
of tasks required to underlining any information
implement the program relevant to the impact of
specification or how the the innovation.
computing innovation
works.
Pair programming Two programmers work Reinforces the need Provide students with
together as a pair. One for students to explain program code that
(the driver) writes program their process in a way uses iteration to draw a
code, while the other that another student square. Then, have them
(the observer, pointer, or can understand. It also work in pairs to modify
navigator) reviews each provides built-in support the program code to
line of program code as it is as students practice draw other shapes, like
typed in. collaborating while learning a triangle, pentagon,
new material. hexagon, octagon, or circle.
Have students switch who
drives the program after
each shape. Ask them to
identify patterns between
these shapes and the
commands used.
Simplify the Students use simpler Provides insight into a more When developing an
problem numbers or statements to abstract problem by making algorithm to analyze data,
solve a problem. it concrete and allowing consider a small data
students to more easily set as a first example to
recognize a general process confirm that your process
to obtain a solution. will yield the proper results.
Think aloud Students talk through Engages students with When asking students to
a difficult problem by a problem in a new way describe the purpose of
describing what the text or that puts them in the role a code segment, provide
code means. of thinking of potential them with a rubber duck
solutions aloud. This trains or other inanimate object
students to consider to which they can describe
solutions for themselves the code segment aloud.
prior to seeking assistance
from a teacher or peer.
Work backward Students trace a possible Gives students who might When working with large
answer back through the not know how to begin to data sets, have students
solution process to the solve a problem a different start by thinking about
starting point. way to think about it possible conclusions that
by starting at the ideal can be drawn from the
solution and breaking available data. From this
it down. list, ask them to identify
a few questions that they
will want to answer with
the data. Finally, have them
determine the process
they would use to analyze
their data to come to the
proposed conclusion to
test their hypothesis.
Cooperative Learning
Sharing and Students communicate Gives students the Have students write
responding with another person or a opportunity to discuss an algorithm with the
small group of peers who their work with peers, stipulation that it cannot
respond to a proposed make suggestions for include pictures or code.
problem or solution. improvements to the work Next, have them share their
of others, and/or receive work with a partner and
appropriate and relevant receive feedback on which
feedback on their own parts were unclear or
work. needed improvement.
Think-pair-share Students think through a Enables the development Provide students with
problem alone, pair with a of initial ideas that are then examples of real-life
partner to share ideas, tested with a partner in abstractions, such as
and then share results with preparation for revising how a car key hides
the class. and then sharing the ideas the complexity of what
with a larger group. occurs under the hood.
Have students consider
what abstractions they
encounter in everyday
life. Then, working in pairs,
ask students to share
examples of everyday
abstractions with their
partners and compile a
larger list before sharing
with the whole class.
Unplugged Students use engaging Provides students with a When teaching searching,
activities games and puzzles that different way of engaging choose 15 students to
use manipulatives and with the material, away line up at the front of the
kinesthetic learning from the computer, to classroom. Provide each
activities. further understanding. student with a card with a
number on it (in random
order) that they keep hidden.
Select a 16th student to
be the guesser. Give the
guesser a container with
five pieces of candy in it.
Their job is to find a number
provided by the teacher
among the group of 15
students. They can use their
candy as currency to “pay”
one of the students at the
front of the classroom to
look at their card. If they find
the correct number before
using all their candies, they
get to keep the rest.
Using Students use objects to Provides a tactile or When illustrating public key
manipulatives examine relationships in visual representation of encryption, provide each
the information given. data or processes that small group of students
support comprehension of with a box that requires the
information in a problem or use of a combination code
concept. to unlock. Tell students
that you used a public key
to lock a message in the
box for them to read. Each
student in the group should
be provided with their own
private key code. Only one
of the students should
have the correct code to
unlock the box. Debrief
with students about the
difference between public
key and private key.
Activating prior The teacher provides Prepares students Have students practice
knowledge students with an to establish content using mathematical
opportunity to recall what connections. operations by writing
they already know about pseudocode to carry out
a concept and make common computational
connections to current operations. For example,
studies. they can determine the
area of a triangle when
given values for the
base and the height,
or determine the flight
time between two cities
when given the distance
between them and the
average speed of the
airplane.
Diagramming Students use a visual Builds comprehension and When students are
representation to organize facilitates discussion by planning their code,
information. representing information in have them diagram or
visual form. create flowcharts of
their algorithms on chart
paper. Students can work
collaboratively and can use
the diagram as a space to
make mistakes and edit.
Journaling Students keep a journal Provides students with an While completing a long
or log of their program opportunity to reflect on programming project, have
progress, including any their progress and to keep students write a journal
difficulties or opportunities track of what they have entry each day about what
that might arise, as well as accomplished and what they have accomplished,
potential next steps. work is remaining. what successes they’ve
had, what difficulties they
encountered, and any
ideas for changes that
came up during that class
that they would like to work
on in the next class. This
activity is especially helpful
when completing the
Create performance task.
Paraphrase Students restate, in their Assists with Have students read a set of
own words, essential comprehension, recall of instructions for a program.
information expressed in information, and problem- Allow a volunteer student
a text. solving. to explain the program
requirements to the other
students, ensuring that the
student does not leave out
any key points.
Quickwrite Students write for a short, Generates multiple ideas in Have students investigate
specific amount of time a quick fashion. a computing innovation
about a designated topic that they are familiar with.
related to a given prompt. Ask them to take five
minutes to write about
all the possible harmful
effects of the computing
innovation. Then ask them
to take five minutes to
write about all the possible
beneficial effects of the
computing innovation.
Vocabulary Students use a graphic Provides reinforcement At the end of each unit
organizer organizer with a of learned words and a or module, review the
designated format to personal, ever-present vocabulary words and
maintain an ongoing tool for building word definitions that students
record of vocabulary knowledge and awareness. should know. To build an
words with definitions, organizer, have students
pictures, notations, and come up with their own
connections. examples or pictures that
will help them remember
the terms later in the
course. There are several
apps and websites that
help students create
flashcards and quizzes
to help organize the
vocabulary they learn
throughout the year.
Throughout the AP Computer Science Principles exam questions at the end of this course and exam
course, students will develop computational thinking description show how the questions relate to specific
practices that are fundamental to the discipline of computational thinking practices.
computer science. Because these computational
The following tables present each skill, key tasks for that
thinking practices represent the complex skills
skill that relate to how that skill is assessed, questions
demonstrated by adept computer scientists, students
to aid in determining students’ level of understanding,
will benefit from multiple opportunities to develop these
and instructional notes that show ways to address the
skills in a scaffolded manner. All questions on the AP
skill or misconceptions students may have. Skills in
Exam and rubric rows in the scoring guidelines for the
Practice 6 are not formally assessed, as they are more
Create performance task will be associated with one of
observational in nature. Students should demonstrate
the skills in the tables that follow, so providing students
these skills in class throughout the school year.
with practice applying these skills will help prepare them
for the exam and set them up for success. The sample
1.B: Determine Choose a topic or problem to solve and Students need Work backward
and design an then design a program. This includes practice with Before beginning to
appropriate designing any user interface that might programming design a program, ask
be required. challenges of students to make a table
method or
increasing complexity of the different ways they
approach to Key questions for students: that relate to ideation expect the program to
achieve the 1. What are the subparts of the program and design, with behave or of the output
purpose. that should be grouped together? feedback, prior to the they expect to see when
2. How will you plan out your program? official administration it is run. Then, have them
Will you draw out the interface? Will of the Create add in sample input
you use pseudocode or flowchart performance task. that should yield these
diagrams? results. Once students
Students should have developed their
3. How will you know if your program is
spend time planning programs, use what they
working?
up front before wrote in the table to help
starting their Create confirm if their program
performance task. is working properly.
This saves time
when implementing
the program, as
logic errors can be
identified and solved
much earlier in the
process, preventing
additional rework.
1.C: Explain When presented with a scenario, explain Spend time having Predict and compare
how effective collaborative strategies. students reflect on Have students predict
collaboration their collaboration how long it will take to
Key questions for students: with peers, including complete various tasks
affects the 1. Why is collaboration important? what went well in a scavenger hunt as
development of
2. What are the qualities of a good and what could an individual, as a small
a solution. be improved in group, and as a large
collaborative team?
3. How will you know if your group has the future. Focus group. Next, carry out the
been successfully collaborating? on where the tasks with the groups of
collaboration turned various sizes. Afterwards,
into group work ask them to compare the
where students each results of the predictions
worked individually with the actual outcomes.
on part of the project, As you debrief with
rather than truly students, relate this
working together and activity to crowdsourcing
sharing ideas. and the advantages
and disadvantages of
completing tasks in
groups of various sizes.
1.D: Evaluate When presented with program code or Exposure to multiple Think-pair-share
solution when designing a program: solutions to a single Provide students with a
options. § Compare and contrast different problem allows diagram of connected
solutions to determine if they yield the students to see new computing devices.
same result and which is the best one ways to approach Some of the devices
to use to solve a problem. problems that should be connected
§ Compare the runtimes of different otherwise might to the rest with two or
solutions. not have been more connections. After
considered. having some time to
§ Describe the benefits and
consider the diagram
vulnerabilities of one solution over Parallel and on their own, have
another. distributed students work in pairs
computing can to determine the most
Key questions for students:
seem too abstract vulnerable connections
1. Will different solutions yield the same
for students at first. in the system and where
or similar result?
Providing real-world connections could be
2. Will one solution be faster than examples of how added to make the
another? distributing solutions system more fault-
3. What are the benefits of this solution? has an impact on tolerant. Allow time for
What might be the limitations? the amount of time it students to share with
takes to complete a the group where they feel
task can help make connections should be
this concept more added.
concrete.
2.A: Represent Express or interpret the Students need Sharing and Responding
algorithmic meaning of an algorithm that is exposure to multiple Provide students a set
processes without expressed using a diagram or representations— of five to 10 index cards
pseudocode. in pseudocode, with different numbers on
using a programming
diagrams, or blocks— them, placing the cards
language. Key questions for students: of a given algorithm. faceup. In small groups,
1. Is a diagram or pseudocode ask students to write
better to represent this algorithms in pseudocode
process? to determine the highest
2. How do you know if this and lowest cards in the set.
representation, when Ask students to consider
implemented, would lead to using an algorithm in
the desired result? pseudocode for sorting
all the cards in order from
lowest to highest.
2.B: Implement and Write program code that Prior to the official Pair programming
apply an algorithm. includes sequencing, selection, administration of the Have students use pair
iteration, and procedures Create performance programming to write two
or lists. task, students need procedures, switching
practice implementing the driver and navigator
Given a scenario or partial programs that first for each procedure. The
program code expressed using include sequencing, first procedure they
the Exam Reference Sheet, then incorporate write should convert a
select the program code that selection and iteration, decimal value to its binary
would satisfy the scenario or and finally use equivalent. The second
complete the program code. procedures and lists. procedure should convert
a binary number to its
Apply algorithms by hand, such It is important that decimal equivalent.
as to convert from binary to students have practice
decimal or to search for a value writing program code
in a set. from scratch, as well
as reading and adding
Key questions for students: to program code that
1. What programming language someone else has
is best for this project? written.
2. Would sorting or filtering the
data make them easier to
understand?
3. Are there existing algorithms
that could be combined to
have the desired effect?
Sample Activities
Skills Tasks/Questions Instructional Notes and Strategies
3.A: Generalize Identify the input, output, and Although there are Using manipulatives
data sources other necessary data in a similarities to the way Provide students with a
through variables. program, and represent these variables are used in math set of short problems that
data using variables. and computer science, could be solved using a
there are also some key computer along with a set
Key questions for students: differences. In algebra, of potential data inputs.
1. Are there constants being variables are often used to Have students match the
used when a variable represent an unknown value problem with the data that
would make the code more or set of values. In computer might be necessary to
flexible? science, variables hold solve the problem.
2. How could you use a list to specific assigned values
represent something new in that can change over time.
your program? Students will need multiple
opportunities to create and
analyze variables to help
make this distinction.
Sample Activities
Skills Tasks/Questions Instructional Notes and Strategies
3.B: Use Develop and use procedural Students should Code tracing
abstraction abstractions by writing understand that simply Provide students with
to manage procedures that often contain using a procedure or list two code segments that
parameters to allow for more does not mean the program output a nursery rhyme,
complexity in a
general use. code has been generalized. such as “Row, Row, Row
program.
The goal is for the program Your Boat.” The first
Develop data abstractions code to be flexible enough code segment should
by using lists and writing to use in a variety of only contain output
program code that is general situations or to still function statements for each line
enough to work even if the list correctly as the program of the song. The second
needs to be resized at a later requirements evolve and code segment should call
point in time. change. separate procedures for
the verses and chorus.
Key questions for students: As students trace each
1. Are there subtasks that code segment, they
could be pulled out of the should record both the
solution for reuse? output and the procedure
2. Are you using the same that is generating the
statements in your program output. Have students
repeatedly, just with compare their code
different values? Would a tracing and explain how
procedure with parameters the code segment that
work to streamline your used procedures helped
code? manage the complexity of
the program code.
3.C: Explain After writing a program, Using large data sets, in Journaling
how abstraction explain how the use of data which the solutions are After students write a
manages abstractions make program difficult to determine by program, have them
code less complex. hand, can help students identify any abstraction
complexity.
understand the necessity that was used and write
Given data, explain how those for and power of data a journal entry explaining
data can be represented in the abstractions. how that abstraction
computer differently by using managed complexity in
the binary number system. their program and how
they would've needed
Key questions for students: to write the program
1. How does using an differently if they didn't
abstraction make the use the abstraction. If
program code easier the student did not use
to write, understand, or any abstraction, they
modify? should explain where in
2. How could your program their program abstraction
code be written more could've been used to
generally so that a change manage complexity.
to the size of a list wouldn’t
necessitate a change to the
rest of your program code?
3. How does the use of
parameters help make your
procedure more usable in
new situations?
Sample Activities
Skills Tasks/Questions Instructional Notes and Strategies
Sample Activities
Skills Tasks/Questions Instructional Notes and Strategies
4.C: Identify and Given program code, Students will encounter Marking the text
correct errors in identify logic errors either many logic and syntax Provide students with
algorithms and through analyzing the errors while writing program code that
program code itself or programs. Having a contains syntax and logic
programs, including
hand tracing using a set of collaborative partner(s) can errors, such as missing
error discovery
test data. be helpful when finding and statements or statements
through testing. correcting errors. that are out of order. Have
Determine sample input students use a highlighter
data for testing a program to identify any syntax
and describe the expected errors and then use arrows
result each input would to rearrange the order of
produce. statements. Any missing
statements should be
Key questions for written into the code.
students:
1. When encountering a
runtime error, is there
anything wrong with the
syntax? Has the compiler
given you information
related to the type of
error or the location of
the error?
2. For your sample input,
does your program
produce the expected
output?
3. Have you considered
all boundary cases to
test your algorithm? For
example, if you have the
condition x < 5, have you
tested values just less
than 5, equal to 5, and
just greater than 5?
5.A: Explain how Explain how computing devices Using the Internet Kinesthetic learning
computing systems are networked and connected to is not the same as Simulate how messages
work. the Internet to share data. understanding how are sent via the Internet
it works. Students by passing out index
Key questions for students: need to be given cards or other objects
1. What is the difference between opportunities to with messages on them.
the Internet and the World investigate multiple To simulate packets,
Wide Web? ways computers divide the message up
2. How does the system handle share data over and write pieces of it on
a packet not arriving at its networks. several separate index
destination? cards and number them.
3. What would happen to the Pass the partial messages
data if a path was no longer to students one at a
available, maybe because a time to ultimately get the
line was severed? complete message to an
assigned destination (a
preselected student in
the room who will display
the messages in the
order they are received).
Students can only hold
one message in each hand
and can only pass their
message to a student with
a free hand. Once all the
messages have reached
their destination, that
student will reassemble
the message and report
it to the rest of the class.
Be sure to debrief with
students, pointing out that
the packets could’ve taken
different routes to get to
the destination or arrived
out of order.
5.B: Explain how Given categories of data and/or If the data set Activating prior
knowledge can be metadata, explain what information provided is relatively knowledge
generated from data. can be extracted through small—for example, Before providing
manipulation of those data. five items—students instruction on how
often create information can be
Key questions for students: solutions that are extracted from data, have
1. Would a different equally limited and students write down what
representation of the data help will only work with they already know about
when analyzing them? this specific set of computing devices with
2. Based on the data and data. Even if the sensors (e.g., cellphones,
metadata available, what data set is small, voice assistants, fitness
questions might you be able challenge students to devices) and how these
to answer? Is there additional create more abstract devices collect data.
information you might need? solutions that can be Have students consider
adapted to a larger how these data could
data set. be combined to create
assumptions about
the user.
5.C: Describe Given a passage about a Before being able to Discussion group
the impact of computing innovation, describe describe the impact Have students research
a computing potential beneficial and harmful of a computing causes of the digital
effects of that computing innovation, divide. During the class
innovation.
innovation on society, the students need an discussion, have students
economy, or our culture. understanding of propose solutions to
what such an impact combat the digital divide.
Key questions for students: is and how it can be For each proposed
1. What are some ways a determined. This solution, students should
computing innovation has been requires multiple discuss what digital
used that weren’t intended by opportunities for divide cause might be
the innovator? guided practice with addressed, what barriers/
2. What are some beneficial feedback throughout obstacles the solution
effects this computing the year. might pose, and any
innovation might have on potential positive and
you? What are some harmful negative impacts of
effects? the solution.
3. How might a computing
innovation contribute to the
digital divide?
5.D: Describe the Given a scenario related to data When asked about Marking the text
impact of gathering or a passage about a computing data concerns, Provide students with
data. innovation, describe the potential students often first the opportunity to mimic
risks to data privacy, storage, think of hacking; the process of cleaning
and security, as well as potential however, there are data with a subset of
challenges that arise when other ways that raw data. Ask them to
processing data. data privacy can underline all text that
be compromised. has the same meaning
When provided with larger Additional examples but is represented
data sets that may have poor will help broaden differently (e.g., “street,”
formatting and missing data, students’ thinking “st,” or “Street” would be
identify the potential challenges about what else equivalent). Next, have
and what might need to be done might be a data them circle areas of
before using the data set. concern for them incomplete or invalid data.
or others.
Key questions for students:
1. How can you work to combat
bias in your data?
2. What are some ways in which,
beyond their intended purpose,
some computing innovations
might be using user data?
3. What might need to be done to
the data prior to being able to
use them to answer a question?
5.E: Evaluate the use Given scenarios related to The way in which Look for a pattern
of computing based computer usage, explain: students use Challenge students to
on legal and ethical § Any legal and ethical concerns computers today create a flawed data set
§ Any bias that might exist due can have future of pictures that supports
factors.
to the way the computing impacts on them an incorrect claim. For
innovation was developed or or others. By using example, a data set
the way in which it is being used real-world examples, containing only pictures of
students can learn red birds could lead one
§ How computing resources can
the consequences to believe that all birds are
be misused, and unauthorized
of failing to protect red. Have students share
access obtained
themselves and their data sets with the
Key questions for students: their data. class and see if they can
1. What can you do to protect guess the flawed pattern.
your computing resources? With so much Afterwards, discuss how
2. What are some ways that information readily bias in data can result
people might try to access available and in biased computing
your computing resources seemingly free to use, innovations. Have them
without your permission? legal ramifications discuss how bias can
and ethical concerns show up in other data
that may be sources, such as text.
associated with the
use of information are
not always intuitive
to students.
Sample Activities
Skills Tasks/Questions Instructional Notes and Strategies
6.A: Collaborate in Move beyond group work, Assigning group work is Pair programming
the development where work is simply divided different from building Introduce students to
of solutions. among group members, the skills necessary for the concept of a text-
to a collaborative process effective collaboration. based “choose-your-
that involves respectful Collaboration skills, such own-adventure” game
and mutual sharing of as consensus-building where the user’s choices
ideas, compromise, and and conflict resolution, determine the output and
an emphasis on conflict need to be explicitly action in the program.
resolution. taught and practiced, with Then, have students
feedback, to be effective. work in pairs, taking turns
Key questions for students: writing possible paths
1. Are you collaborating with While collaboration on or outcomes for the
people who have different ideation and program character.
perspectives than you design and development
do? Is there an important during the Create
perspective missing that performance task is not
you will need to research? required, it is encouraged.
2. During your planning, how
are you ensuring that all
voices and opinions are
being heard?
3. How will you make a
decision when you have
differing opinions?
6.B: Use safe and Take steps to keep personal By having ongoing Discussion group
secure methods identifiable information discussions regarding At the start of class, work
when using from being shared while what data are being with students to develop
using computing devices. shared online about a group norms around how
computing devices.
Be prudent about what is student, with or without to use the computing
shared online. permission, students can resources available in
make informed decisions your school. Some norms
Key questions for students: about what to share might be using strong
1. What steps are you taking publicly about themselves. passwords, or establishing
to keep your identity safe how data are shared
when online? Information that is put among students during
2. How are you preventing online is incredibly times of collaboration.
access by others to your difficult, if not impossible, As the year progresses,
personal devices? to remove. expand this list of norms
3. How do you decide what to include topics outside
you will share publicly the classroom as well,
online? What are some such as asking someone's
of the consequences of permission before posting
sharing information about their picture on social
yourself online? media.
Sample Activities
Skills Tasks/Questions Instructional Notes and Strategies
6.C: Acknowledge the Provide citation for any Some programming Sharing and responding
intellectual property media or program code environments do not Have students
of others. that is being used in support the addition anonymously share
the development of a of comments into the whether they think it
program that has come program code. In these is acceptable to listen
from someone other cases, comments can be to music or watch
than the student or their added to a supporting movies that have been
collaborative partner(s). document to acknowledge downloaded illegally. Have
what work is not original. a class discussion in which
Key questions for students: students respond to what
1. When are you required to When completing the was shared and discuss
credit another author, and Create performance task, the real-life impacts and
what is the best way to students will need to add consequences of such
do so? substantial revisions and actions. Have students
2. What is the best way additional functionality brainstorm ways to
to give credit for open- when starting with protect the intellectual
source program code? preexisting program code. property of others.
Simply changing an image
in a game or the names of
variables is insufficient.
Collaboration allows computer scientists to improve classroom. Having an established protocol for students
their products. Throughout the school year, students to have equal participation and share their ideas,
should be encouraged to collaborate with many such as the think-pair-share or pair programming
different students, especially those who have different strategies, builds students’ confidence and can create
perspectives than their own. Collaborating with people a successful collaborative learning community within a
who have a different perspective helps to reveal blind classroom.
spots they might have due to their own backgrounds
One way to assess how well students collaborate is by
and experiences. Collaboration takes place in a variety
having them write reflections in a journal or participate
of ways:
in discussions about how collaborating with a partner
§§ Brainstorming ideas and solutions from different helped accomplish their task or improve the quality of
perspectives in a team environment their program. Students should be asked to reflect not
§§ Working together to design subtasks of a larger only on what went well in the collaboration process but
project, developing these subtasks, and then also where they could improve it. Some partnerships
integrating them in the completion of the project require more intervention from the teacher than others.
When a partnership is not working well, mediation and
§§ Providing feedback on program design and
reflection can be helpful in getting it back on track. The
development to improve the overall quality
reflection should focus on a student’s own actions and
§§ Providing technical support when problems arise how he or she works with others to solve problems.
that an individual is struggling to solve on their own Teachers should guide students to share their
The cooperative learning strategies that are outlined reflections and consider different ways their work can
in the instructional strategies table earlier can be be improved as they continue to collaborate.
used to help foster collaborative relationships in the
With the availability of so many online resources about §§ Some students may need specific accommodations
programming and other computer science concepts, or additional support when taking AP Computer
some students may be self-taught in some of the Science Principles. College Board fully expects
introductory concepts for this course. While it is not that students with disabilities will receive all of the
required, students may have taken other introductory aids and services called for in their school plans.
computer science courses prior to taking AP Computer However, additional assistance or devices may
Science Principles, depending on your school district. be useful to fully access this course. For example,
This varying level of computer science background students who are physically disabled, blind, or
and ability can make teaching the course challenging visually impaired might need alternate formats for
and the need for differentiated instruction greater. To activities. They may also require special equipment,
engage all students in your classroom, consider trying such as screen readers. Block-based programming
the following: languages can be more difficult for these students,
so the use of a specially designed text-based
§§ Provide leveled assignments in which students
programming environment, such as Quorum,
have a base project that demonstrates proficiency
might be more suitable. For more information on
but can earn more points by completing additional
how to make your computer science classroom
challenges that move them to a more advanced
more accessible to students with disabilities,
demonstration of their understanding.
we recommend reviewing Access Computing
§§ Open-ended projects allow students to challenge resources.
themselves at their individual ability levels and
The goal is to ensure that all students are engaged
interests.
in learning computer science. Students with some
§§ Pair programming is a way for students to support experience or who pick up on material quickly will
each other when developing a program. need incremental challenges, while students with
§§ Give students extended projects or reading less experience may need more time and support to
assignments that can be completed over the course accomplish tasks.
of a week. These projects and assignments can be
homework for students who need the class time
to complete longer projects that might require
assistance from the teachers, while students who
are fast finishers will still have something engaging
and class-related to work on. One example might
be assignments from online practice sites, such
as CodingBat and Khan Academy. A minimum set
of problems can be assigned with incentives for
students who are eager to learn more.
Curriculum
Alignment
Curriculum Alignment
Each AP endorsed provider offers a complete curriculum and syllabus for teachers to adopt.
Teachers can also choose to create their own curriculum and syllabus based on the AP
Computer Science Principles course framework. Because AP Computer Science Principles is
presented as big ideas instead of units, teachers who choose to create their own curriculum
and syllabus will need to develop their own unit plans to scaffold and integrate the big ideas
and skills in this course.
To aid in the sequencing of your course and assigning the Topic Questions from
AP Classroom, we have provided a blank Unit at a Glance page. This page can be replicated as
you plan your units and align the topics you intend to cover in that unit. It is important to note
that the big ideas in this course are themes that should be spiraled throughout the course,
rather than taught in isolation as units. When creating a unit plan, it is common for teachers to
pair content from multiple big ideas and skills.
While we have segmented each big idea into topics, there may be times when you introduce
part of a topic in one unit and revisit it one or more times in future units. In these cases, there
may be some Topic Questions that students can answer during the initial introduction of the
topic, while other questions would be more appropriate to use later in the school year. You
can preview questions in AP Classroom before assigning them to students. When pacing out
the number of class periods to spend on each topic, be sure to include time for students to
complete the corresponding Topic Questions.
If you choose an AP endorsed provider, check to see if they have developed their own Unit
at a Glance chart or something similar that can be printed and added to this section. This
document should align the provider curriculum to the AP Computer Science Principles Course
and Exam Description and indicate where it may be appropriate to assign formative Topic
Questions in AP Classroom.
Unit :
This page provides a place to plan instruction and unit pacing for this course. When planning, be sure to:
Learning Objectives
Topic and Skills Topic Questions Class Periods Instructional Planning/Resources
Exam
Exam
Inf
Informa
ormation
tion
Exam Overview
Number of Exam
Section Question Type Questions Weighting Timing
Single-select 57
Multi-select 8
Questions in Big Ideas 1, 2, and 3 can be represented as algorithms (with no program code) or as program code
using the Exam Reference Sheet (see Appendix). The program code questions will contain some graphical
representations, some of which use robots in a grid.
The AP Computer Science Principles computational thinking practices are assessed on the AP Exam as
detailed below.
All computational thinking practices except Computational Thinking Practice 6 are assessed in the multiple-choice
section, with the following exam weighting:
Block Explanation
Oval The start of the algorithm
Parallelogram An input or output step
A conditional or decision step, where execution proceeds to the side labeled “Yes” if the
Diamond
answer to the question is yes and to the side labeled “No” if the answer to the question is no
Rectangle The result of the algorithm
The following task verbs are commonly used in the performance task:
Implement: Recognize and use proper syntax to execute the program design.
To the best of their ability, teachers will ensure that students understand how
to ethically use and acknowledge the ideas and work of others, as well as the
consequences of plagiarism. The student’s individual voice should be clearly evident,
and the ideas of others must be acknowledged, attributed, and/or cited.
§ Provide instruction, practice, and feedback related to content and skills that will
help students succeed on the performance task. This can include, but needs
not be limited to, the iterative development process, strategies for collaboration,
the development of both data and procedural abstractions, and describing an
algorithm’s purpose and explaining how it functions.
§§ Brainstorm problems that programming can address or brainstorm special
interests that students want to incorporate when developing a program.
§§ Assist students in defining their focus and choice of topics without making
selections for them (e.g., by asking questions).
§§ Review the performance task directions and provide multiple opportunities to
practice and discuss the entire performance task and individual prompts of
the task. Formative performance task prompts can be assigned in AP Classroom.
§ Explain the role the teacher can and cannot play in providing students with
assistance during the actual performance task; teachers should encourage
students to take advantage of the opportunity to get assistance and feedback from
them during practice.
§§ Review the scoring guidelines with students to help them understand how their
work will be assessed. Teachers should remind students that the scoring guidelines
align to the prompts in the performance task, so they must respond to all the
prompts in their attempt to obtain the highest score possible. Remind students that
scoring of practice performance tasks, such as those assigned via AP Classroom,
may differ from scoring of the performance task for the exam.
§§ Provide examples of performance task submissions at high, medium, and low levels
according to the scoring guidelines to demonstrate performance expectations.
Once students have started their official administration of the performance task,
teachers may not:
Once students have started their official administration of the performance task,
teachers may:
The sample exam questions that follow illustrate the relationship between the course
framework and AP Computer Science Principles Exam and serve as examples of the
types of questions that appear on the exam. After the sample questions, you will find a
table that shows the skill and learning objective(s) to which each question relates. The
table also provides the answers to the multiple-choice questions.
Which of the following code segments can be used to move the robot to the gray
square along the path indicated by the arrows?
(A) (B)
(C) (D)
5. Which of the following school policies is most likely to have a positive impact
on the digital divide?
(A) A school allows students to bring a graphing calculator from home to
complete in-class mathematics assignments.
(B) A school allows students to bring a tablet computer to class every day to
participate in graded quizzes.
(C) A school provides a laptop or tablet computer to all students enrolled at
the school.
(D) A school recommends that all students purchase a computer with as much
processing speed as possible so that projects run faster.
6. In a certain country, a person must be at least 16 years old to drive a car and
must be at least 18 years old to vote. The variable age represents the age of a
person as an integer.
Which of the following expressions evaluates to true if the person is old
enough to drive but not old enough to vote, and evaluates to false
otherwise?
(A) II only
(B) I and II only
(C) I and III only
(D) II and III only
Which of the following initial values for x, y, and z can be used to show
that the code segment does not work as intended?
(A) x = 1, y = 2, z = 3
(B) x = 1, y = 3, z = 2
(C) x = 2, y = 3, z = 1
(D) x = 3, y = 2, z = 1
10. A digital photo file contains data representing the level of red, green, and blue for
each pixel in the photo. The file also contains metadata that describe the date and
geographic location where the photo was taken. For which of the following goals
would analyzing the metadata be more appropriate than analyzing the data?
(A) Determining the likelihood that the photo is a picture of the sky
(B) Determining the likelihood that the photo was taken at a particular
public event
(C) Determining the number of people that appear in the photo
(D) Determining the usability of the photo for projection onto a particular
color background
12. A certain computer has two identical processors that are able to run in parallel.
Each processor can run only one process at a time, and each process must be
executed on a single processor. The following table indicates the amount of time
it takes to execute each of three processes on a single processor. Assume that
none of the processes are dependent on any of the other processes.
Execution Time on
Process
Either Processor
X 60 seconds
Y 30 seconds
Z 50 seconds
Block Explanation
Oval The start of the algorithm
Parallelogram An input or output step
A conditional or decision step, where execution proceeds to the side
Diamond labeled “Yes” if the answer to the question is yes and to the side labeled
“No” if the answer to the question is no
Rectangle The result of the algorithm
16. Which of the following is the most likely data privacy concern of the upgraded
system?
(A) Customers’ personal information could be compromised if an unauthorized
individual gains access to the call session database.
(B) Storing information in the call session database makes it easy for
individuals to trick the system using malicious links.
(C) The system design increases the chance that customers will unknowingly
install malware on their devices that will share their data with unauthorized
individuals.
(D) The system design makes it easy for unauthorized individuals to acquire
customers’ private encryption keys.
Which of the following code segments can be used to draw the figure?
(A) x 4 (B) x 4
y 1 y 1
r 0 r 0
REPEAT 3 TIMES REPEAT 3 TIMES
{ {
drawCircle(x, y, r) r r + 1
r r + 1 y y + 1
y y + 1 drawCircle(x, y, r)
} }
(C) x 4 (D) x 4
y 4 y 4
r 3 r 3
REPEAT 3 TIMES REPEAT 3 TIMES
{ {
drawCircle(x, y, r) y y - 1
y y - 1 r r - 1
r r - 1 drawCircle(x, y, r)
} }
Which of the following code segments produce the same result as the statement
above for all possible values of val1 and val2 ?
(C) (D)
The scoring information for the questions within this course and exam
description, along with further exam resources, can be found on the
AP Computer Science Principles Exam page on AP Central.
Student
Handouts
AP COMPUTER SCIENCE PRINCIPLES
Student
Handouts
The following pages contain a student-directed version of
the performance task guidelines that you can print out or
copy to share with your students.
Programming is a collaborative and creative process that brings ideas to life through
the development of software. In the Create performance task, you will design
and implement a program that might solve a problem, enable innovation, explore
personal interests, or express creativity. Your submission must include the elements
listed in the Submission Requirements section below.
You are allowed to collaborate with your partner(s) on the development of the
program only. The written response and the video that you submit for this
performance task must be completed individually, without any collaboration with
your partner(s) or anyone else. You can develop the code segments used in the
written responses (parts 3b and 3c) with your partner(s) or on your own during the
administration of the performance task.
Please note that once this performance task has been assigned as an assessment
for submission to College Board, you are expected to complete the task without
assistance from anyone except for your partner(s) and then only when developing
the program code. You must follow the Guidelines for Completing the Create
Performance Task section below.
General Requirements
You will be provided with a minimum of 12 hours of class time to complete and
submit the following:
§§ Final program code (created independently or collaboratively)
§§ A video that displays the running of your program and demonstrates
functionality you developed (created independently)
§§ Written responses to all the prompts in the performance task
(created independently)
Scoring guidelines and instructions for submitting your performance task are
available on the AP Computer Science Principles Exam page on AP Central.
Note: Students in nontraditional classroom environments should consult a
school-based AP Coordinator for instructions.
Collection Type
◆ a device
A collection type is a
◆ an online data stream
type that aggregates
◆ a file elements in a single
□□Use of at least one list (or other collection type) to represent a collection of structure. Some
examples include lists,
data that is stored and used to manage program complexity and help fulfill
databases, and sets.
the program’s purpose
IMPORTANT:
IMPORTANT:
The data abstraction must make the program easier to develop (alternatives would With text-based program
be more complex) or easier to maintain (future changes to the size of the list would code, you can use the
otherwise require significant modifications to the program code). print command to save
your program code as a
□□At least one procedure that contributes to the program’s intended purpose, PDF file, or you can copy
where you have defined: and paste your code to a
◆ the procedure’s name text document and then
◆ the return type (if necessary) convert it into a PDF file.
◆ one or more parameters With block-based
program code, you can
IMPORTANT: create screen captures
Implementation of built-in or existing procedures or language structures, such as that include only your
event handlers or main methods, are not considered student-developed. program code, paste
these images into a
□□An algorithm that includes sequencing, selection, and iteration that is in the document, and then
body of the selected procedure convert that document
□□Calls to your student-developed procedure to a PDF. Screen
captures should not be
□□Instructions for output (tactile, audible, visual, or textual) based on input and blurry, and text should be
program functionality at least 10 pt font size.
3 a. Provide a written response that does all three of the following:
Approx. 150 words (for all subparts of 3a combined)
i. Describes the overall purpose of the program
DEFINITION:
Collection Type
A collection type is a type
that aggregates elements
ii. The second program code segment must show the data in the in a single structure. Some
same list being used, such as creating new data from the existing examples include lists,
data or accessing multiple elements in the list, as part of fulfilling databases, hash tables,
the program’s purpose. dictionaries, and sets.
IMPORTANT:
The data abstraction must
make the program easier
to develop (alternatives
would be more complex) or
easier to maintain (future
changes to the size of the
list would otherwise require
significant modifications to
the program code).
Then, provide a written response that does all three of the following:
iii. Identifies the name of the list being used in this response
iv. Describes what the data contained in the list represent in your
program
ii. The second program code segment must show where your
student-developed procedure is being called in your program.
iii. Describes in general what the identified procedure does and how it
contributes to the overall functionality of the program
Second call:
You must:
§§ Submit your performance task prior to the submission deadline, which
can be found on the AP Computer Science Principles Exam page on
AP Central.
§§ Follow a calendar or schedule that provides time for all performance task
components to be completed and uploaded in advance of the deadline.
§§ Read the performance task directions and rubric.
§§ Apply the computer science knowledge you have obtained throughout
the course, and when completing the performance task, to your
responses to the prompts in the performance task.
§§ Use acceptable acknowledgment practices when using media (i.e.,
images, videos, sound), data sources, or program code created by others
in your program code to avoid plagiarism. Any media or data sources that
have not been created by you or your partner(s) must be acknowledged,
and credit must be given to the author. Any program code which has not
been written by you, including the use of APIs and open-source code
should be acknowledged, and credit should be given to the author.
§§ Add comments to your program code to clarify the functionality of
program code segments or to acknowledge and credit authors of media,
data sources, or program code:
◆ If the programming environment allows you to include comments,
this is the preferred way to acknowledge and give credit to another
author.
◆ If the programming environment does not allow you to include
comments, you can add them in a document editor when you capture
your program code for submission.
Appendix
AP COMPUTER SCIENCE PRINCIPLES
Appendix 1:
AP CSP Exam
Reference
Sheet
a expression
Block:
DISPLAY expression
Text: Accepts a value from the user and returns the input value.
INPUT()
Block:
INPUT
Arithmetic Operators and Numeric Procedures
Text and Block: The arithmetic operators +, -, *, and / are used to perform
a + b arithmetic on a and b.
a - b For example, 17 / 5 evaluates to 3.4.
a * b
The order of operations used in mathematics applies when evaluating
a / b
expressions.
Text and Block: Evaluates to the remainder when a is divided by b. Assume that
a MOD b a is an integer greater than or equal to 0 and b is an integer
greater than 0.
Selection
Text: The code in block of statements is executed if the
IF(condition) Boolean expression condition evaluates to true; no
{ action is taken if condition evaluates to false.
<block of statements>
}
Block:
IF condition
block of statements
IF condition
REPEAT n TIMES
block of statements
block of statements
List Operations
For all list operations, if a list index is less than 1 or greater than the length of the list, an error message is produced and the program
terminates.
Text: Creates a new list that contains the values value1, value2,
aList ← [value1, value2, value3, ...] value3, and ... at indices 1, 2, 3, and ...
respectively and assigns it to aList.
Block:
aList
aList i
x aList i
aList i x
aList i aList j
Text: Removes the item at index i in aList and shifts to the left
REMOVE(aList, i) any values at indices greater than i. The length of aList is
decreased by 1.
Block:
REMOVE aList, i
Block:
block of statements
block of statements
block of statements
RETURN expression
Text: Returns the flow of control to the point where the procedure was
RETURN(expression) called and returns the value of expression.
Block:
RETURN expression
Robot
If the robot attempts to move to a square that is not open or is beyond the edge of the grid, the robot will stay in its current location
and the program will terminate.
Text: The robot moves one square forward in the direction it is facing.
MOVE_FORWARD()
Block:
MOVE_FORWARD
ROTATE_LEFT
ROTATE_RIGHT
Appendix 2:
AP CSP
Conceptual
Framework
Enduring
Understanding Learning Objective Essential Knowledge
CRD-1.A.3
Effective collaboration produces a computing innovation that
reflects the diversity of talents and perspectives of those who
designed it.
CRD-1.A.4
Collaboration that includes diverse perspectives helps avoid
bias in the development of computing innovations.
CRD-1.A.5
Consultation and communication with users are important
aspects of the development of computing innovations.
CRD-1.A.6
Information gathered from potential users can be used
to understand the purpose of a program from diverse
perspectives and to develop a program that fully incorporates
these perspectives.
CRD-1.B CRD-1.B.1
Explain how computing Online tools support collaboration by allowing programmers to
innovations are developed by share and provide feedback on ideas and documents.
groups of people. 1.C
CRD-1.B.2
Common models such as pair programming exist to facilitate
collaboration.
CRD-1.C CRD-1.C.1
Demonstrate effective Effective collaborative teams practice interpersonal skills,
interpersonal skills during including but not limited to:
collaboration. 1.C § communication
§ consensus building
§ conflict resolution
continued on next page § negotiation
CRD-2.B.3
A program needs to work for a variety of inputs and situations.
CRD-2.B.4
The behavior of a program is how a program functions during
execution and is often described by how a user interacts with it.
CRD-2.B.5
A program can be described broadly by what it does, or in more
detail by both what the program does and how the program
statements accomplish this function.
CRD-2.C CRD-2.C.1
Identify input(s) to a program. Program inputs are data sent to a computer for processing by
3.A a program. Input can come in a variety of forms, such as tactile,
audio, visual, or text.
CRD-2.C.2
An event is associated with an action and supplies input data to
a program.
CRD-2.C.3
Events can be generated when a key is pressed, a mouse is
clicked, a program is started, or any other defined action occurs
that affects the flow of execution.
CRD-2.C.4
Inputs usually affect the output produced by a program.
CRD-2.C.5
In event-driven programming, program statements are
executed when triggered rather than through the sequential
flow of control.
CRD-2.C.6
continued on next page Input can come from a user or other programs.
CRD-2.E.3
A development process that is iterative requires refinement and
revision based on feedback, testing, or reflection throughout
the process. This may require revisiting earlier phases of the
process.
CRD-2.E.4
A development process that is incremental is one that breaks
the problem into smaller pieces and makes sure each piece
works before adding it to the whole.
CRD-2.F CRD-2.F.1
Design a program and its user The design of a program incorporates investigation to
interface. 1.B determine its requirements.
CRD-2.F.2
Investigation in a development process is useful for
understanding and identifying the program constraints, as well
as the concerns and interests of the people who will use the
program.
CRD-2.F.3
Some ways investigation can be performed are as follows:
§ collecting data through surveys
§ user testing
§ interviews
continued on next page § direct observations
CRD-2 CRD-2.F.4
Program requirements describe how a program functions and
Developers create and may include a description of user interactions that a program
innovate using an must provide.
iterative design process
CRD-2.F.5
that is user-focused, A program’s specification defines the requirements for the
that incorporates program.
implementation/
CRD-2.F.6
feedback cycles, and
In a development process, the design phase outlines how to
that leaves ample room accomplish a given program specification.
for experimentation and
CRD-2.F.7
risk-taking.
The design phase of a program may include:
§ brainstorming
§ planning and storyboarding
§ organizing the program into modules and functional
components
§ creation of diagrams that represent the layouts of the user
interface
§ development of a testing strategy for the program
CRD-2.G CRD-2.G.1
Describe the purpose of a Program documentation is a written description of the function
code segment or program by of a code segment, event, procedure, or program and how it
writing documentation. 4.A was developed.
CRD-2.G.2
Comments are a form of program documentation written into
the program to be read by people and do not affect how a
program runs.
CRD-2.G.3
Programmers should document a program throughout its
development.
CRD-2.G.4
Program documentation helps in developing and maintaining
correct programs when working individually or in collaborative
programming environments.
CRD-2.G.5
Not all programming environments support comments, so
continued on next page other methods of documentation may be required.
CRD-2.I.3
A run-time error is a mistake in the program that occurs during
the execution of a program. Programming languages define
their own run-time errors.
CRD-2.I.4
An overflow error is an error that occurs when a computer
attempts to handle a number that is outside of the defined
range of values.
CRD-2.I.5
The following are effective ways to find and correct errors:
§ test cases
§ hand tracing
§ visualizations
§ debuggers
§ adding extra output statement(s)
CRD-2.J CRD-2.J.1
Identify inputs and In the development process, testing uses defined inputs to
corresponding expected ensure that an algorithm or program is producing the expected
outputs or behaviors that outcomes. Programmers use the results from testing to revise
can be used to check the their algorithms or programs.
correctness of an algorithm
or program. 4.C CRD-2.J.2
Defined inputs used to test a program should demonstrate
the different expected outcomes that are at or just beyond the
extremes (minimum and maximum) of input data.
CRD-2.J.3
Program requirements are needed to identify appropriate
defined inputs for testing.
Enduring
Understanding Learning Objective Essential Knowledge
people. DAT-1.A.5
Abstraction is the process of reducing complexity by focusing
on the main idea. By hiding details irrelevant to the question
at hand and bringing together related and useful details,
abstraction reduces complexity and allows one to focus on
the idea.
DAT-1.A.6
Bits are grouped to represent abstractions. These abstractions
include, but are not limited to, numbers, characters, and color.
DAT-1.A.7
The same sequence of bits may represent different types of
data in different contexts.
DAT-1.A.8
Analog data have values that change smoothly, rather than in
discrete intervals, over time. Some examples of analog data
include pitch and volume of music, colors of a painting, or
position of a sprinter during a race.
DAT-1.A.9
The use of digital data to approximate real-world analog data is
an example of abstraction.
DAT-1.A.10
Analog data can be closely approximated digitally using a
sampling technique, which means measuring values of the
analog signal at regular intervals called samples. The samples
are measured to figure out the exact bits required to store
continued on next page each sample.
DAT-1.C DAT-1.C.1
For binary numbers: Number bases, including binary and decimal, are used to
a. Calculate the binary represent data.
(base 2) equivalent of a
positive integer (base 10) DAT-1.C.2
and vice versa. 2.B Binary (base 2) uses only combinations of the digits zero and
b. Compare and order binary one.
numbers. 2.B
DAT-1.C.3
Decimal (base 10) uses only combinations of the digits 0 – 9.
DAT-1.C.4
As with decimal, a digit’s position in the binary sequence
determines its numeric value. The numeric value is equal to the
bit’s value (0 or 1) multiplied by the place value of its position.
DAT-1.C.5
The place value of each position is determined by the base
raised to the power of the position. Positions are numbered
starting at the rightmost position with 0 and increasing by 1 for
continued on next page each subsequent position to the left.
DAT-1.D.5
Lossy data compression algorithms can significantly reduce
the number of bits stored or transmitted but only allow
reconstruction of an approximation of the original data.
DAT-1.D.6
Lossy data compression algorithms can usually reduce the
number of bits stored or transmitted more than lossless
compression algorithms.
DAT-1.D.7
In situations where quality or ability to reconstruct the original
is maximally important, lossless compression algorithms are
typically chosen.
DAT-1.D.8
In situations where minimizing data size or transmission time
is maximally important, lossy compression algorithms are
typically chosen.
DAT-2.A.4
Often, a single source does not contain the data needed to
draw a conclusion. It may be necessary to combine data from a
continued on next page variety of sources to formulate a conclusion.
DAT-2.B.3
Metadata are used for finding, organizing, and managing
information.
DAT-2.B.4
Metadata can increase the effective use of data or data sets by
providing additional information.
DAT-2.B.5
Metadata allow data to be structured and organized.
DAT-2.C DAT-2.C.1
Identify the challenges The ability to process data depends on the capabilities of the
associated with processing users and their tools.
data. 5.D
DAT-2.C.2
Data sets pose challenges regardless of size, such as:
§ the need to clean data
§ incomplete data
§ invalid data
§ the need to combine data sources
DAT-2.C.3
Depending on how data were collected, they may not be
uniform. For example, if users enter data into an open field, the
way they choose to abbreviate, spell, or capitalize something
may vary from user to user.
DAT-2.C.4
Cleaning data is a process that makes the data uniform
without changing their meaning (e.g., replacing all equivalent
abbreviations, spellings, and capitalizations with the same word).
DAT-2.C.5
Problems of bias are often created by the type or source of
data being collected. Bias is not eliminated by simply collecting
more data.
DAT-2.C.6
The size of a data set affects the amount of information that can
be extracted from it.
DAT-2.C.7
Large data sets are difficult to process using a single computer
and may require parallel systems.
DAT-2.C.8
Scalability of systems is an important consideration when
working with data sets, as the computational capacity of a
continued on next page system affects how data sets can be processed and stored.
allows users to discover Tables, diagrams, text, and other visual tools can be used to
communicate insight and knowledge gained from data.
information and create
new knowledge. DAT-2.D.3
Search tools are useful for efficiently finding information.
DAT-2.D.4
Data filtering systems are important tools for finding
information and recognizing patterns in data.
DAT-2.D.5
Programs such as spreadsheets help efficiently organize and
find trends in information.
DAT-2.D.6
Some processes that can be used to extract or modify
information from data include the following:
§ transforming every element of a data set, such as doubling
every element in a list, or adding a parent’s email to every
student record
§ filtering a data set, such as keeping only the positive
numbers from a list, or keeping only students who signed
up for band from a record of all the students
§ combining or comparing data in some way, such as adding
up a list of numbers, or finding the student who has the
highest GPA
§ visualizing a data set through a chart, graph, or other visual
representation
DAT-2.E DAT-2.E.1
Explain how programs can Programs are used in an iterative and interactive way when
be used to gain insight and processing information to allow users to gain insight and
knowledge from data. 5.B knowledge about data.
DAT-2.E.2
Programmers can use programs to filter and clean digital data,
thereby gaining insight and knowledge.
DAT-2.E.3
Combining data sources, clustering data, and classifying data
are parts of the process of using programs to gain insight and
knowledge from data.
DAT-2.E.4
Insight and knowledge can be obtained from translating and
transforming digitally represented information.
DAT-2.E.5
Patterns can emerge when data are transformed using
programs.
Enduring
Understanding Learning Objective Essential Knowledge
AAP-1.A.3
Some programming languages provide types to represent
data, which are referenced using variables. These types include
numbers, Booleans, lists, and strings.
AAP-1.A.4
Some values are better suited to representation using one type
of datum rather than another.
AAP-1.B AAP-1.B.1
Determine the value of a The assignment operator allows a program to change the value
variable as a result of an represented by a variable.
assignment. 4.B
AAP-1.B.2
The exam reference sheet provides the ” ” operator to use for
assignment. For example,
Text:
a expression
Block:
a expression
evaluates expression and then assigns a copy of the result to
the variable a.
AAP-1.B.3
The value stored in a variable will be the most recent value
assigned. For example:
a 1
b a
a 2
display(b)
continued on next page still displays 1.
AAP-1.C.3
An index is a common method for referencing the elements in a
list or string using natural numbers.
AAP-1.C.4
continued on next page A string is an ordered sequence of characters.
AAP-1.D.3
Data abstractions can be created using lists.
AAP-1.D.4
Developing a data abstraction to implement in a program can
result in a program that is easier to develop and maintain.
AAP-1.D.5
Data abstractions often contain different types of elements.
AAP-1.D.6
The use of lists allows multiple related items to be treated as a
single value. Lists are referred to by different names, such as
array, depending on the programming language.
X
EXCLUSIONSTATEMENT(EKAPP-1.D.6)
The use of linked lists is outside the scope of this course
and the AP Exam.
AAP-1.D.7
The exam reference sheet provides the notation
§ Text:
§ Text:
aList []
Block:
aList
continued on next page creates a new empty list and assigns it to aList.
AAP-1 § Text:
aList bList
To find specific Block:
solutions to
aList bList
generalizable problems,
programmers represent assigns a copy of the list bList to the list aList.
For example, if bList contains [20, 40, 60],
and organize data in then aList will also contain [20, 40, 60] after
multiple ways. the assignment.
AAP-1.D.8
The exam reference sheet describes a list structure whose
index values are 1 through the number of elements in the list,
inclusive. For all list operations, if a list index is less than 1 or
greater than the length of the list, an error message is produced
and the program will terminate.
AAP-2.B AAP-2.B.1
Represent a step-by-step Sequencing is the application of each step of an algorithm in
algorithmic process using the order in which the code statements are given.
sequential code statements.
2.B AAP-2.B.2
A code statement is a part of program code that expresses an
action to be carried out.
AAP-2.B.3
An expression can consist of a value, a variable, an operator, or
a procedure call that returns a value.
AAP-2.B.4
Expressions are evaluated to produce a single value.
AAP-2.B.5
The evaluation of expressions follows a set order of operations
defined by the programming language.
AAP-2.B.6
Sequential statements execute in the order they appear in the
code segment.
AAP-2.B.7
Clarity and readability are important considerations when
continued on next page expressing an algorithm in a programming language.
AAP-2.C.4
The order of operations used in mathematics applies when
evaluating expressions. The MOD operator has the same
precedence as the * and / operators.
AAP-2.D AAP-2.D.1
Evaluate expressions that String concatenation joins together two or more strings
manipulate strings. 4.B end-to-end to make a new string.
AAP-2.D.2
A substring is part of an existing string.
AAP-2.E AAP-2.E.1
For relationships between A Boolean value is either true or false.
two variables, expressions, or
values: AAP-2.E.2
a. Write expressions using The exam reference sheet provides the following relational
relational operators. 2.B operators: =, ≠, >, <, ≥, and ≤.
b. Evaluate expressions that Text and Block:
use relational operators. § a = b
4.B
§ a ≠ b
§ a > b
§ a < b
§ a ≥ b
§ a ≤ b
These are used to test the relationship between two variables,
expressions, or values. A comparison using a relational operator
evaluates to a Boolean value. For example, a = b evaluates
to true if a and b are equal; otherwise, it evaluates
continued on next page to false.
Text:
condition1 AND condition2
Block:
condition1 AND condition2
which evaluates to true if both condition1 and
condition2 are true; otherwise it evaluates to false.
AAP-2.F.4
The exam reference sheet provides
Text:
condition1 OR condition2
Block:
condition1 OR condition2
which evaluates to true if condition1 is true or
if condition2 is true or if both condition1 and
condition2 are true; otherwise it evaluates to false.
AAP-2.F.5
The operand for a logical operator is either a Boolean
expression or a single Boolean value.
AAP-2.G AAP-2.G.1
Express an algorithm that Selection determines which parts of an algorithm are executed
uses selection without using a based on a condition being true or false.
continued on next page programming language. 2.A
block of statements
AAP-2.H.3
The exam reference sheet provides
Text:
IF(condition)
{
<first block of statements>
}
ELSE
{
<second block of statements>
}
Block:
IF condition
AAP-2.I AAP-2.I.1
For nested selection: Nested conditional statements consist of conditional
a. Write nested conditional statements within conditional statements.
statements. 2.B
b. Determine the result
of nested conditional
continued on next page statements. 4.B
REPEAT n TIMES
block of statements
AAP-2.K.3
The exam reference sheet provides
Text:
REPEAT UNTIL(condition)
{
<block of statements>
}
Block:
block of statements
AAP-2.K.4
In REPEAT UNTIL(condition) iteration, an infinite loop
occurs when the ending condition will never evaluate to true.
AAP-2.K.5
In REPEAT UNTIL(condition) iteration, if the conditional
evaluates to true initially, the loop body is not executed at all,
continued on next page due to the condition being checked before the loop.
AAP-2.M AAP-2.M.1
For algorithms: Algorithms can be created from an idea, by combining existing
a. Create algorithms. 2.A algorithms, or by modifying existing algorithms.
b. Combine and modify AAP-2.M.2
existing algorithms. 2.B
Knowledge of existing algorithms can help in constructing new
ones. Some existing algorithms include:
§ determining the maximum or minimum value of two or more
numbers
§ computing the sum or average of two or more numbers
§ identifying if an integer is or is not evenly divisible by
another integer
§ determining a robot’s path through a maze
AAP-2.M.3
Using existing correct algorithms as building blocks for
constructing another algorithm has benefits such as reducing
development time, reducing testing, and simplifying the
identification of errors.
AAP-2.N AAP-2.N.1
For list operations: The exam reference sheet provides basic operations on lists,
a. Write expressions that including:
use list indexing and list § accessing an element by index
procedures. 2.B Text:
b. Evaluate expressions that aList[i]
use list indexing and list Block:
procedures. 4.B aList i
accesses the element of aList at index i. The first
element of aList is at index 1 and is accessed using
the notation aList[1].
§ assigning a value of an element of a list to a variable
Text:
x ← aList [i]
Block:
x aList i
continued on next page assigns the value of aList[i] to the variable x.
REMOVE aList, i
AAP-2.N.2
List procedures are implemented in accordance with the syntax
continued on next page rules of the programming language.
block of statements
AAP-2.O.4
Knowledge of existing algorithms that use iteration can help
in constructing new algorithms. Some examples of existing
algorithms that are often used with lists include:
§ determining a minimum or maximum value in a list
§ computing a sum or average of a list of numbers
AAP-2.O.5
Linear search or sequential search algorithms check each
element of a list, in order, until the desired value is found or all
elements in the list have been checked.
AAP-2.P AAP-2.P.1
For binary search algorithms: The binary search algorithm starts at the middle of a sorted
a. Determine the number of data set of numbers and eliminates half of the data; this process
iterations required to find a repeats until the desired value is found or all elements have
value in a data set. 1.D been eliminated.
b. Explain the requirements X EXCLUSIONSTATEMENT(EK:AAP-2.P.1):
necessary to complete a Specific implementations of the binary search are outside
binary search. 1.A the scope of the course and the AP Exam.
AAP-2.P.2
Data must be in sorted order to use the binary search algorithm.
AAP-2.P.3
Binary search is often more efficient than sequential/linear
continued on next page search when applied to sorted data.
effect of a procedure call. Procedures are referred to by different names, such as method
manageable pieces. By or function, depending on the programming language.
4.B
creating procedures and
leveraging parameters, AAP-3.A.3
Parameters are input variables of a procedure. Arguments
programmers generalize
specify the values of the parameters when a procedure is
processes that can be called.
reused. Procedures
AAP-3.A.4
allow programmers
A procedure call interrupts the sequential execution of
to draw upon existing statements, causing the program to execute the statements
code that has already within the procedure before continuing. Once the last statement
been tested, allowing in the procedure (or a return statement) has executed, flow of
control is returned to the point immediately following where the
them to write programs procedure was called.
more quickly and with
AAP-3.A.5
more confidence.
The exam reference sheet provides
procName(arg1, arg2, ...)
as a way to call
Text:
PROCEDURE procName(parameter1,
parameter2, ...)
{
<block of statements>
}
Block:
block of statements
AAP-3.A.6
The exam reference sheet provides the procedure
Text:
DISPLAY(expression)
Block:
DISPLAY expression
continued on next page to display the value of expression, followed by a space.
AAP-3 AAP-3.A.7
The exam reference sheet provides the
Programmers break
Text:
down problems into RETURN(expression)
smaller and more Block:
manageable pieces. By
RETURN expression
creating procedures and
leveraging parameters, statement, which is used to return the flow of control to the
point where the procedure was called and to return the value of
programmers generalize
expression.
processes that can be
reused. Procedures AAP-3.A.8
block of statements
RETURN expression
AAP-3.A.9
The exam reference sheet provides procedure
Text:
INPUT()
Block:
INPUT
continued on next page which accepts a value from the user and returns the input value.
AAP-3.B.6
Using procedural abstraction helps improve code readability.
AAP-3.B.7
Using procedural abstraction in a program allows programmers
to change the internals of the procedure (to make it faster, more
efficient, use less storage, etc.) without needing to notify users
continued on next page of the change as long as what the procedure does is preserved.
block of statements
RETURN expression
allow programmers Application program interfaces (APIs) are specifications for how
the procedures in a library behave and can be used.
to draw upon existing
code that has already AAP-3.D.5
more confidence. For generating random The exam reference sheet provides
values: Text:
a. Write expressions to RANDOM(a, b)
generate possible values.
Block:
2.B
AAP-3.E.2
Using random number generation in a program means each
continued on next page execution may produce a different result.
AAP-3.F.7
Simulations facilitate the formulation and refinement of
hypotheses related to the objects or phenomena under
consideration.
AAP-3.F.8
Random number generators can be used to simulate the
variability that exists in the real world.
AAP-4.A.4
An algorithm’s efficiency is determined through formal or
continued on next page mathematical reasoning.
AAP-4 AAP-4.A.5
An algorithm’s efficiency can be informally measured by
There exist problems determining the number of times a statement or group of
that computers cannot statements executes.
solve, and even when
AAP-4.A.6
a computer can solve Different correct algorithms for the same problem can have
a problem, it may not different efficiencies.
be able to do so in a
AAP-4.A.7
reasonable amount
Algorithms with a polynomial efficiency or lower (constant,
of time. linear, square, cube, etc.) are said to run in a reasonable amount
of time. Algorithms with exponential or factorial efficiencies
are examples of algorithms that run in an unreasonable amount
of time.
AAP-4.A.8
Some problems cannot be solved in a reasonable amount of
time because there is no efficient algorithm for solving them. In
these cases, approximate solutions are sought.
AAP-4.A.9
A heuristic is an approach to a problem that produces a solution
that is not guaranteed to be optimal but may be used when
techniques that are guaranteed to always find an optimal
solution are impractical.
X EXCLUSIONSTATEMENT(AAP-4.A.9):
AAP-4.B AAP-4.B.1
Explain the existence of A decidable problem is a decision problem for which an
undecidable problems in algorithm can be written to produce a correct output for all
computer science. 1.A inputs (e.g., “Is the number even?”).
AAP-4.B.2
An undecidable problem is one for which no algorithm can be
constructed that is always capable of providing a correct yes-
or-no answer.
X EXCLUSIONSTATEMENT(EKAAP-4.B.2):
AAP-4.B.3
An undecidable problem may have some instances that have
an algorithmic solution, but there is no algorithmic solution that
could solve all instances of the problem.
Enduring
Understanding Learning Objective Essential Knowledge
CSN-1.A.3
A computer network is a group of interconnected computing
devices capable of sending or receiving data.
CSN-1.A.4
A computer network is a type of computing system.
CSN-1.A.5
A path between two computing devices on a computer network
(a sender and a receiver) is a sequence of directly connected
computing devices that begins at the sender and ends at the
receiver.
CSN-1.A.6
Routing is the process of finding a path from sender to receiver.
CSN-1.A.7
The bandwidth of a computer network is the maximum amount
of data that can be sent in a fixed amount of time.
CSN-1.A.8
Bandwidth is usually measured in bits per second.
CSN-1.B CSN-1.B.1
Explain how the Internet The Internet is a computer network consisting of
works. 5.A interconnected networks that use standardized, open
(nonproprietary) communication protocols.
CSN-1.B.2
Access to the Internet depends on the ability to connect a
computing device to an Internet-connected device.
CSN-1.B.3
A protocol is an agreed-upon set of rules that specify the
behavior of a system.
CSN-1.B.4
The protocols used in the Internet are open, which allows users
continued on next page to easily connect additional computing devices to the Internet.
CSN-1 CSN-1.B.5
Routing on the Internet is usually dynamic; it is not specified in
Computer systems and advance.
networks facilitate the
transfer of data. CSN-1.B.6
The scalability of a system is the capacity for the system to
change in size and scale to meet new demands.
CSN-1.B.7
The Internet was designed to be scalable.
CSN-1.C CSN-1.C.1
Explain how data are sent Information is passed through the Internet as a data stream.
through the Internet via Data streams contain chunks of data, which are encapsulated
packets. 5.A in packets.
CSN-1.C.2
Packets contain a chunk of data and metadata used for routing
the packet between the origin and the destination on the
Internet, as well as for data reassembly.
CSN-1.C.3
Packets may arrive at the destination in order, out of order, or
not at all.
CSN-1.C.4
IP, TCP, and UDP are common protocols used on the Internet.
CSN-1.D CSN-1.D.1
Describe the differences The World Wide Web is a system of linked pages, programs,
between the Internet and the and files.
World Wide Web. 5.A
CSN-1.D.2
HTTP is a protocol used by the World Wide Web.
CSN-1.D.3
continued on next page The World Wide Web uses the Internet.
b. Explain how a given system Redundancy is the inclusion of extra components that can be
is fault-tolerant. 5.A used to mitigate failure of a system if other components fail.
c. Identify vulnerabilities to
CSN-1.E.3
failure in a system. 1.D
One way to accomplish network redundancy is by having more
than one path between any two connected devices.
CSN-1.E.4
If a particular device or connection on the Internet fails,
subsequent data will be sent via a different route, if possible.
CSN-1.E.5
When a system can support failures and still continue to
function, it is called fault-tolerant. This is important because
elements of complex systems fail at unexpected times, often in
groups, and fault tolerance allows users to continue to use the
network.
CSN-1.E.6
Redundancy within a system often requires additional
resources but can provide the benefit of fault tolerance.
CSN-1.E.7
The redundancy of routing options between two points
increases the reliability of the Internet and helps it scale to more
continued on next page devices and more people.
b. Determine the efficiency of Parallel computing is a computational model where the program
to more quickly solve is broken into multiple smaller sequential computing operations,
solutions. 1.D
complex problems or some of which are performed simultaneously.
process large data sets.
CSN-2.A.3
Distributed computing is a computational model in which
multiple devices are used to run a program.
CSN-2.A.4
Comparing efficiency of solutions can be done by comparing
the time it takes them to perform the same task.
CSN-2.A.5
A sequential solution takes as long as the sum of all of its steps.
CSN-2.A.6
A parallel computing solution takes as long as its sequential
tasks plus the longest of its parallel tasks.
CSN-2.A.7
The “speedup” of a parallel solution is measured in the time it
took to complete the task sequentially divided by the time it
took to complete the task when done in parallel.
CSN-2.B CSN-2.B.1
Describe benefits and Parallel computing consists of a parallel portion and a
challenges of parallel and sequential portion.
distributed computing. 1.D
CSN-2.B.2
Solutions that use parallel computing can scale more effectively
than solutions that use sequential computing.
CSN-2.B.3
Distributed computing allows problems to be solved that could
not be solved on a single computer because of either the
processing time or storage needs involved.
CSN-2.B.4
Distributed computing allows much larger problems to be
solved quicker than they could be solved using a single
computer.
CSN-2.B.5
When increasing the use of parallel computing in a solution, the
efficiency of the solution is still limited by the sequential portion.
This means that at some point, adding parallel portions will no
longer meaningfully increase efficiency.
Enduring
Understanding Learning Objective Essential Knowledge
IOC-1 IOC-1.A IOC-1.A.1
Explain how an effect of a People create computing innovations.
While computing computing innovation can be
innovations are both beneficial and harmful. IOC-1.A.2
typically designed 5.C The way people complete tasks often changes to incorporate
new computing innovations.
to achieve a specific
purpose, they may IOC-1.A.3
Not every effect of a computing innovation is anticipated in
have unintended
advance.
consequences.
IOC-1.A.4
A single effect can be viewed as both beneficial and harmful by
different people, or even by the same person.
IOC-1.A.5
Advances in computing have generated and increased
creativity in other fields, such as medicine, engineering,
communications, and the arts.
IOC-1.B IOC-1.B.1
Explain how a computing Computing innovations can be used in ways that their creators
innovation can have an impact had not originally intended:
beyond its intended purpose. § The World Wide Web was originally intended only for rapid
5.C and easy exchange of information within the scientific
community.
§ Targeted advertising is used to help businesses, but it can
be misused at both individual and aggregate levels.
§ Machine learning and data mining have enabled innovation
in medicine, business, and science, but information
discovered in this way has also been used to discriminate
against groups of individuals.
IOC-1.B.2
Some of the ways computing innovations can be used may
have a harmful impact on society, the economy, or culture.
IOC-1.B.3
Responsible programmers try to consider the unintended ways
their computing innovations can be used and the potential
beneficial and harmful effects of these new uses.
IOC-1.B.4
It is not possible for a programmer to consider all the ways a
computing innovation can be used.
IOC-1.B.5
Computing innovations have often had unintended beneficial
effects by leading to advances in other fields.
IOC-1.B.6
Rapid sharing of a program or running a program with a large
number of users can result in significant impacts beyond the
continued on next page
intended purpose or control of the programmer.
IOC-1.C.4
The digital divide raises issues of equity, access, and influence,
both globally and locally.
IOC-1.C.5
The digital divide is affected by the actions of individuals,
organizations, and governments.
IOC-1.D IOC-1.D.1
Explain how bias exists in Computing innovations can reflect existing human biases
computing innovations. 5.E because of biases written into the algorithms or biases in the
data used by the innovation.
IOC-1.D.2
Programmers should take action to reduce bias in algorithms
used for computing innovations as a way of combating existing
human biases.
IOC-1.D.3
Biases can be embedded at all levels of software development.
IOC-1.E IOC-1.E.1
Explain how people Widespread access to information and public data facilitates
participate in problem- the identification of problems, development of solutions, and
solving processes at scale. dissemination of results.
1.C
IOC-1.E.2
Science has been affected by using distributed and “citizen
science” to solve scientific problems.
IOC-1.E.3
Citizen science is scientific research conducted in whole or part
by distributed individuals, many of whom may not be scientists,
who contribute relevant data to research using their own
computing devices.
IOC-1.E.4
Crowdsourcing is the practice of obtaining input or information
from a large number of people via the Internet.
IOC-1.E.5
Human capabilities can be enhanced by collaboration via
computing.
IOC-1.E.6
Crowdsourcing offers new models for collaboration, such as
continued on next page connecting businesses or social causes with funding.
IOC-1.F.4
The use of material created by someone else without
permission and presented as one’s own is plagiarism and may
have legal consequences.
IOC-1.F.5
Some examples of legal ways to use materials created by
someone else include:
§ Creative Commons—a public copyright license that
enables the free distribution of an otherwise copyrighted
work. This is used when the content creator wants to give
others the right to share, use, and build upon the work they
have created.
§ open source—programs that are made freely available and
may be redistributed and modified
§ open access—online research output free of any and all
restrictions on access and free of many restrictions on use,
such as copyright or license restrictions
IOC-1.F.6
The use of material created by someone other than you should
always be cited.
IOC-1.F.7
Creative Commons, open source, and open access have
enabled broad access to digital information.
IOC-1.F.8
As with any technology or medium, using computing to
harm individuals or groups of people raises legal and ethical
concerns.
IOC-1.F.9
Computing can play a role in social and political issues, which in
turn often raises legal and ethical concerns.
IOC-1.F.10
The digital divide raises ethical concerns around computing.
IOC-1.F.11
Computing innovations can raise legal and ethical concerns.
Some examples of these include:
§ the development of software that allows access to digital
media downloads and streaming
§ the development of algorithms that include bias
§ the existence of computing devices that collect and analyze
continued on next page data by continuously monitoring activities
IOC-2.A.2
Search engines can record and maintain a history of searches
made by users.
IOC-2.A.3
Websites can record and maintain a history of individuals who
have viewed their pages.
IOC-2.A.4
Devices, websites, and networks can collect information about
a user’s location.
IOC-2.A.5
Technology enables the collection, use, and exploitation
of information about, by, and for individuals, groups, and
institutions.
IOC-2.A.6
Search engines can use search history to suggest websites or
for targeted marketing.
IOC-2.A.7
Disparate personal data, such as geolocation, cookies, and
browsing history, can be aggregated to create knowledge about
an individual.
IOC-2.A.8
PII and other information placed online can be used to enhance
a user’s online experiences.
IOC-2.A.9
PII stored online can be used to simplify making online
purchases.
IOC-2.A.10
Commercial and governmental curation of information may be
exploited if privacy and other protections are ignored.
IOC-2.A.11
Information placed online can be used in ways that were not
intended and that may have a harmful impact. For example, an
email message may be forwarded, tweets can be retweeted,
and social media posts can be viewed by potential employers.
IOC-2.A.12
PII can be used to stalk or steal the identity of a person or to aid
continued on next page in the planning of other criminal acts.
IOC-2 IOC-2.A.13
Once information is placed online, it is difficult to delete.
The use of computing
innovations may IOC-2.A.14
involve risks to personal Programs can collect your location and record where you have
been, how you got there, and how long you were at a given
safety and identity. location.
IOC-2.A.15
Information posted to social media services can be used by
others. Combining information posted on social media and
other sources can be used to deduce private information
about you.
IOC-2.B IOC-2.B.1
Explain how computing Authentication measures protect devices and information from
resources can be protected unauthorized access. Examples of authentication measures
and can be misused. 5.E include strong passwords and multifactor authentication.
IOC-2.B.2
A strong password is something that is easy for a user to
remember but would be difficult for someone else to guess
based on knowledge of that user.
IOC-2.B.3
Multifactor authentication is a method of computer
access control in which a user is only granted access after
successfully presenting several separate pieces of evidence
to an authentication mechanism, typically in at least two of
the following categories: knowledge (something they know),
possession (something they have), and inherence (something
they are).
IOC-2.B.4
Multifactor authentication requires at least two steps to unlock
protected information; each step adds a new layer of security
that must be broken to gain unauthorized access.
IOC-2.B.5
Encryption is the process of encoding data to prevent
unauthorized access. Decryption is the process of decoding
the data. Two common encryption approaches are:
§ Symmetric key encryption involves one key for both
encryption and decryption.
§ Public key encryption pairs a public key for encryption and
a private key for decryption. The sender does not need
the receiver’s private key to encrypt a message, but the
receiver’s private key is required to decrypt the message.
X EXCLUSIONSTATEMENT(EKIOC-2.B.5):
IOC-2.B.6
Certificate authorities issue digital certificates that validate the
ownership of encryption keys used in secure communications
continued on next page and are based on a trust model.
IOC-2 IOC-2.B.7
Computer virus and malware scanning software can help
The use of computing protect a computing system against infection.
innovations may
involve risks to personal IOC-2.B.8
A computer virus is a malicious program that can copy itself and
safety and identity. gain access to a computer in an unauthorized way. Computer
viruses often attach themselves to legitimate programs and
start running independently on a computer.
IOC-2.B.9
Malware is software intended to damage a computing system
or to take partial control over its operation.
IOC-2.B.10
All real-world systems have errors or design flaws that can be
exploited to compromise them. Regular software updates help
fix errors that could compromise a computing system.
IOC-2.B.11
Users can control the permissions programs have for collecting
user information. Users should review the permission settings
of programs to protect their privacy.
IOC-2.C IOC-2.C.1
Explain how unauthorized Phishing is a technique that attempts to trick a user into
access to computing providing personal information. That personal information can
resources is gained. 5.E then be used to access sensitive online resources, such as
bank accounts and emails.
IOC-2.C.2
Keylogging is the use of a program to record every keystroke
made by a computer user in order to gain fraudulent access to
passwords and other confidential information.
IOC-2.C.3
Data sent over public networks can be intercepted, analyzed,
and modified. One way that this can happen is through a rogue
access point.
IOC-2.C.4
A rogue access point is a wireless access point that gives
unauthorized access to secure networks.
IOC-2.C.5
A malicious link can be disguised on a web page or in an email
message.
IOC-2.C.6
Unsolicited emails, attachments, links, and forms in emails can
be used to compromise the security of a computing system.
These can come from unknown senders or from known senders
whose security has been compromised.
IOC-2.C.7
Untrustworthy (often free) downloads from freeware or
shareware sites can contain malware.