AP Computer Science
AP Computer Science
Introduction
AP Computer Science Principles is the newest AP® course from the College Board. This course
introduces students to the foundational concepts of computer science and explores the impact
computing and technology have on our society.
With a unique focus on creative problem solving and real-world applications, the CodeHS AP
Computer Science Principles course gives students the opportunity to explore several important
topics of computing using their own ideas and creativity, use the power of computing to create
artifacts of personal value, and develop an interest in computer science that will foster further
endeavors in the field.
Course Overview
Prerequisites: There are no official prerequisites for the CodeHS AP Computer Science
Principles course. This course is meant to be a first-time introduction to computer science and
does not require students to come in with any computer programming experience. However, we
recommend that students take our Introduction to Computer Science prior to our AP courses
(more info at codehs.com/library). Students who have completed our Intro to CS course will be
able to apply knowledge of concepts covered in the Intro course to the more advanced setting of
the AP courses. We also recommend that students complete a first-year high school algebra
course prior to taking this course. Students should be comfortable with functions and function
notation such as f(x) = x + 2 as well as using a Cartesian (x, y) coordinate system to represent
points in a plane.
Overarching Goals:
● Increase and diversify participation in computer science
● Students, regardless of prior experience in computing, will develop confidence using
computer science as a tool to express themselves and solve problems, and this
confidence will prepare them for success in future endeavors in the field of computer
science
● Students will understand the core principles of computing, a field which has and
continues to change the world
● Students will be able to develop computational artifacts to solve problems, communicate
ideas, and express their own creativity
1
● Students will be able to collaborate with others to solve problems and develop
computational artifacts
● Students will be able to explain the impact computing has on society, economy, and
culture
● Students will be able to analyze existing artifacts, identify and correct errors, and explain
how the artifact functions
● Students will be able to explain how data, information, or knowledge is represented for
computational use
● Students will be able to explain how abstractions are used in computation and modeling
● Students will learn to be informed and responsible users of technology
Learning Environment: The course utilizes a blended classroom approach. The content is a mix
of web-based and physical activities. Students will write and run code in the browser, create
websites and digital artifacts, and engage in in-person collaborative exercises with classmates.
Teachers utilize tools and resources provided by CodeHS to leverage time in the classroom and
give focused 1-on-1 attention to students. Each unit of the course is broken down into lessons.
Lessons consist of video tutorials, short quizzes, example programs to explore, written
programming exercises, free response exercises, collaborative creation projects, and research
projects.
Programming Environment: Students write and run programs in the browser using the CodeHS
editor. Students will be able to write text-based Python programs, and students will use a
graphics library to create Python graphical programs. Students gain programming experience
early on in the course that will enable them to explore the rest of the course topics through
computational thinking practices.
Course Resources: Access to a computer and high-speed internet is required. There is also an
online textbook available for many modules and topics which can be accessed through the
lesson plans or at https://codehs.gitbooks.io/introcs/content/
Quizzes: At the end of most units, students take a summative multiple choice unit quiz in the style
of the AP Exam that assesses their knowledge of the concepts covered in the unit. The course
also provides an AP Test Practice unit with a cumulative AP Practice Multiple Choice Test.
Course Objectives
This course is based directly on the College Board AP Computer Science Principles Framework.
We recommend reading the curriculum framework here for context. The main course objectives
are summarized below in the six computational thinking practices and five big ideas for the
course.
2
Computational Thinking Practices:
The six computational thinking practices represent important aspects of the work that computer
scientists engage in, and are denoted here by P1 through P6:
● Practice 1: Computational Solution Design
○ Design and evaluate computational solutions for a purpose.
● Practice P2: Algorithms and Program Development
○ Develop and implement algorithms.
● Practice P3: Abstraction in Program Development
○ Develop programs that incorporate abstractions.
● Practice P4: Code Analysis
○ Evaluate and test algorithms and programs.
● Practice P5: Computing Innovations
○ Investigate computing innovations.
● Practice P6: Responsible Computing
○ Contribute to an inclusive, safe, collaborative, and ethical computing culture.
Big Ideas:
The five big ideas of the course encompass foundational ideas in the field of computer science,
and are denoted here by B1 through B5:
● Big Idea 1: Creative Development (CRD)
When developing computing innovations, developers can use a formal, iterative design
process or experimentation. While using either approach, developers will encounter
phases of investigating and reflecting, designing, prototyping, and testing. Additionally,
collaboration is an important tool to use at any phase of development because
considering multiple perspectives allows for improvement of innovations.
3
● Big Idea 4: Computing Systems and Networks (CSN)
Computer systems and networks are used to transfer data. One of the largest and most
commonly used networks is the Internet. Through a series of protocols, the Internet can
be used to send and receive information and ideas throughout the world. Transferring
and processing information can be slow when done on a single computer but leveraging
multiple computers to do the work at the same time can significantly shorten the time it
takes to complete tasks or solve problems.
Students will gain the experience necessary to complete the Create Performance Task in class.
Each unit comes with practice PTs in which students will research topics in computing, and create
their own digital artifacts. Sufficient time is set aside in the course for students to prepare for and
complete the Create Performance Task.
The AP Exam:
This course will prepare students for the multiple-choice AP Computer Science Principles
examination. Each lesson comes with quizzes to test essential knowledge for the AP Exam. Each
unit includes a cumulative AP style multiple-choice exam to test understanding of the concepts in
the unit and provide immediate feedback to the student.
4
Course Breakdown
We use Karel, a dog that only knows how to move, turn left, and place tennis balls in his world, to
show students what it means to program, and allow students to focus on computational
problem-solving. Students will learn about the need for programming languages, the uses of
programs, how to write programs to solve computational problems, how to design algorithms,
how to analyze and compare potential solutions to programming problems, and learn the value
and challenges involved in collaborating with others to solve programming problems. Students
will use the grid coloring functionality of Karel to create a digital painting and embed this program
in their portfolio website.
Programming Style
CRD-2.G.1 CRD-2.B.5
Lessons: CRD-2.G.2 AAP-3.D.1 Program Documentation
Intro to Programming AAP-2.M.1 AAP-3.D.2 Using Existing Code and Libraries
Super Karel AAP-2.M.3 AAP-3.D.3 APIs
Ultra Karel CRD-2.B.1 AAP-3.D.4 Commenting Code
Top-Down Design CRD-2.B.2 AAP-3.D.5
Commenting Your Code
Control Structures
5
CRD-2.I.2 Syntax Errors
Lessons: CRD-2.I.3 Run-Time Error
Functions in Karel CRD-2.I.5 Testing
Debugging Strategies
AAP-2.A.4 AAP-2.M.2
Designing Algorithms AAP-2.B.1 AAP-4.A.2
Sequencing, Selection, Iteration
Clarity and Readability
AAP-2.B.2 AAP-4.A.4
Lessons: Using Existing Algorithms
AAP-2.B.6 AAP-4.A.5
Karel Algorithms Optimization and Efficiency
AAP-2.B.7 AAP-4.A.6
6
Students then reflect upon and answer the following questions:
2. Describe the incremental and iterative development process of your program. How did you
divide the program into smaller tasks and make a plan to complete them all?
3. Describe the difficulties and/or opportunities you encountered and how they were resolved
or incorporated.
4. Identify an algorithm that is fundamental for your program to achieve its intended purpose
and includes two or more additional algorithms.
5. Describe how each algorithm within your selected algorithm functions independently, as well
as in combination with others, to form a new algorithm that helps to achieve the intended
purpose of the program.
6. Identify an abstraction you developed, and explain how your abstraction helped manage the
complexity of your program.
[Big Idea CRD][Computational Thinking Practice 2]
Programming
AAP-2.A.2
Languages AAP-2.A.3
What is Programming?
Pseudocode
CRD-1.A.1
Lessons: Programming Languages
CRD-1.A.2
What is Code? Computing Innovations
CRD-2.B.1
Uses of Programs
AAP-1.A.1 AAP-1.B.2
Variables AAP-1.A.2 AAP-1.B.3
Variable Names
Assignment Operators
AAP-1.A.3 DAT-1.A.1
Lessons: Data Types
AAP-1.A.4
Variables Variables as Abstractions
AAP-1.B.1
7
CRD-2.B.4 AAP-2.B.3
CRD-2.I.5 AAP-2.B.4 Program Behavior
CRD-2.J.1 AAP-2.B.5 Testing using Inputs
Arithmetic Expressions CRD-2.J.2 AAP-2.C.1 Arithmetic Expressions
CRD-2.J.3 AAP-2.C.2 Order of Operations
Lessons: AAP-2.A.1 AAP-2.C.3 Modulus
Basic Math in Python AAP-2.A.2 AAP-2.C.4 String Concatenation
AAP-2.A.3 AAP-2.D.1
AAP-2.A.4 AAP-2.D.2
Students
● practice searching and evaluating sources relevant to computing innovations
● write the definition of computing innovation in their own words
● list 5 items that ARE computing innovations and 5 items that are NOT computing
innovations. For each one, explain the reason why it is or is not a computing innovation
● identify the data used in at least one computing innovation and explain how the data is
consumed, produced, or transformed by the given computing innovation. [Computing
Innovation 1, Prompt B][Big Idea IOC][Computational Thinking Practice 5]
8
Lessons: AAP-2.F.2
Booleans AAP-2.F.3
Comparison Operators
Functions and
Parameters CRD-2.C.6 AAP-3.A.3 User and Application Input
CRD-2.D.2 AAP-3.A.4 Program Output
Lessons: CRD-2.B.3 AAP-3.B.5 Procedures
Functions and Parameters 1 CRD-2.C.4 AAP-3.C.1 Parameters
Functions and Parameters 2 AAP-3.A.1 AAP-3.C.2 Return Values
Functions and Return Values 1 AAP-3.A.2 AAP-2.M.2 Using Existing Algorithms
Functions and Return Values 2
9
means for taking specific data via the parameters and creating a unique graphical output based
on those inputs.
[Big Idea DAT][Computational Thinking Practice 3]
AAP-1.D.1
AAP-1.D.5
Data Abstractions DAT-2.E.4
Data Abstraction
AAP-1.D.2
Translating and Transforming Data
Lessons: AAP-1.D.3
Filtering and Cleaning
Lists AAP-1.D.4
Patterns
For Loops and Lists DAT-2.E.2
DAT-2.D.4
DAT-2.E.5
10
AAP-2.O.2 Iteration Statements
Lessons: AAP-3.C.1
Lists AAP-3.C.2
For Loops and Lists AAP-3.A.6
AAP-2.O.3
AAP-3.A.5
AAP-3.A.7
AAP-3.A.8
AAP-3.E.1
AAP-2.O.4
DAT-2.D.3
AAP-2.O.5
Using Existing Algorithms
Algorithm Efficiency AAP-2.P.1
Search Tools
AAP-2.P.2
Linear Search
Lessons: AAP-2.P.3
Binary Search
For Loops and Lists AAP-4.A.1
Algorithm Efficiency
List Methods AAP-4.A.3
Heuristics
AAP-4.A.7
AAP-4.A.8
AAP-4.A.9
AAP-3.F.1
AAP-3.F.2
Simulation AAP-3.F.3
Simulations as Abstractions
AAP-3.F.4
Bias in Simulations
Lessons: AAP-3.F.5
Random Number Generators
Simulation AAP-3.F.6
AAP-3.F.7
AAP-3.F.8
11
develop their own data encryption algorithms and attempt to crack the encryptions of their peers.
Their text encryption tool will be embedded in their portfolio websites.
DAT-1.A.8 DAT-1.D.4
Data Compression DAT-1.A.9 DAT-1.D.5
Lossless Data
DAT-1.A.10 DAT-1.D.6
Lessons: Lossy Data
DAT-1.D.1 DAT-1.D.7
Data Compression Digital and Analog Data
DAT-1.D.2 DAT-1.D.8
Lossy Compression DAT-1.D.3
AAP-4.B.1
Cryptography AAP-4.B.2 Decidable Problems
AAP-4.B.3 Computer Viruses
Lessons: IOC-2.B.8 Encryption
Cryptography IOC-2.B.5
12
phone to keep this guess and check strategy from working? (What happens when you
guess incorrectly over and over again?)
4. Can you think of any guessing strategies that might be faster than starting at 0000 and
iterating all the way up to 9999
[Big Idea IOC][Computational Thinking Practice 6]
Unit 10: Practice PT: Create Your Own Image Filter (3 days, 3 hours)
In this project, students pair up with a partner to develop a novel image filter that can be applied
to any digital image of their choosing. They will describe their image filter, and their development
process, and embed their image filter along with its description on their personal portfolio
website. Students can choose this practice PT or the previous.
13
Subsection EKs Lessons / Topics
CSN-1.A.5 CSN-1.E.2
Routing CSN-1.A.6 CSN-1.E.3 Routing
CSN-1.B.5 CSN-1.E.4 Scalability
Lessons: CSN-1.B.6 CSN-1.E.5 Fault-Tolerance
Routing CSN-1.B.7 CSN-1.E.6 Redundancy
CSN-1.E.1 CSN-1.E.7
CSN-1.B.1 CSN-1.D.1
Datastreams
Packets and Protocols CSN-1.B.2 CSN-1.D.2
Packets
CSN-1.C.1 CSN-1.D.3
IP, TCP, UDP
Lessons: CSN-1.C.2 DAT-2.B.1
HTTP
Packets and Protocols CSN-1.C.3 DAT-2.B.3
Metadata
CSN-1.C.4 DAT-2.B.5
IOC-1.A.1 IOC-1.E.2
IOC-1.A.3 IOC-1.E.3
IOC-1.A.4 IOC-1.E.4
Computing Innovations
IOC-1.A.5 IOC-1.E.5
Unintended Effects
Impact of the Internet IOC-1.B.1 IOC-1.E.6
Impact on Society
IOC-1.B.2 IOC-1.F.1
Rapid Sharing
Lessons: IOC-1.B.3 IOC-1.F.2
Digital Divide
The Impact of the Internet IOC-1.B.4 IOC-1.F.3
Citizen Science
Creative Credit and Copyright IOC-1.B.5 IOC-1.F.4
Crowdsourcing
IOC-1.B.6 IOC-1.F.5
Creative Credit and Copyright
IOC-1.C.1 IOC-1.F.6
IOC-1.C.2 IOC-1.F.7
IOC-1.C.3 IOC-1.F.9
14
IOC-1.C.4 IOC-1.F.10
IOC-1.C.5 IOC-1.F.11
IOC-1.E.1
IOC-1.F.8 IOC-2.B.5
IOC-2.A.1 IOC-2.B.6 Legal and Ethical Concerns
IOC-2.A.7 IOC-2.B.7 Personally Identifiable Info (PII)
IOC-2.A.8 IOC-2.B.9 Digital Footprint
Cybersecurity IOC-2.A.9 IOC-2.B.10 Authentication
IOC-2.A.11 IOC-2.B.11 Certificate Authorities (CAs)
Lessons: IOC-2.A.12 IOC-2.C.1 Computer Viruses
Cybersecurity IOC-2.A.13 IOC-2.C.2 Malware
IOC-2.A.15 IOC-2.C.3 Phishing
IOC-2.B.1 IOC-2.C.4 Keylogging
IOC-2.B.2 IOC-2.C.5 Rogue Access Points
IOC-2.B.3 IOC-2.C.6 Encryption
IOC-2.B.4 IOC-2.C.7
They then consider Pokemon Go (from the previous video) or research another innovation that
had unintended effects. Students answer in their reflections:
1. What were the intended effects and what were the unintended effects?
2. Explain beneficial and harmful effects of at least one other computing innovation on
society, economy, or culture.
Packets and Protocols: The Story of the Internet - In their own words, students tell the story of
downloading an image from a website on the internet. They tell the story step by step of how
their computer finds the relevant server, requests information from the server, and receives it.
Students are required to include distinctions between the internet and the World Wide Web,
such as:
● The World Wide Web is a system of linked pages, programs, and files.
● HTTP is a protocol used by the World Wide Web.
● The World Wide Web uses the Internet.
[Big Idea CSN][Computational Thinking Practice 5]
15
Unit 12: Practice PT: The Effects of the Internet (3 days, 3 hours)
In this project, students will choose an innovation that was enabled by the Internet and explore
the positive and negative impacts of their innovation on society, economy, and culture. Students
will develop a computational artifact that illustrates, represents, or explains the innovation’s
purpose, its function, or its effect, and embed this artifact in their personal portfolio website.
Within their computational artifact, students explain at least one beneficial effect and at least
one harmful effect the Internet-based innovation has had, or has the potential to have, on
society, economy, or culture. They also identify data privacy, security, or storage concerns for
the computing innovation.
[Computing Innovation 3, Prompt C][Big Idea IOC][Computational Thinking Practice 5]
DAT-2.A.3 DAT-2.C.2
Collecting Data and Data Metadata
DAT-2.A.4 DAT-2.C.3
Correlation
Limitations DAT-2.B.1 DAT-2.C.4
Using a Variety of Sources
DAT-2.B.2 DAT-2.C.5
Incomplete or Invalid Data
Lessons: DAT-2.B.3 DAT-2.C.6
Bias
Data Collection and Limitations DAT-2.B.4 DAT-2.D.6
Surveys, Testing, Interviews
DAT-2.B.5 CRD-2.F.3
16
Example Activity and Big Idea/Computational Thinking Practice
Importance of Metadata: Students consider how metadata can increase the effective use of
data or data sets by providing additional information. They consider the importance of
metadata and reflect on why metadata is important for a data set, how metadata help in finding
specific data, and what metadata should reveal about the data.
[Big Idea DAT][Computational Thinking Practice 5]
Unit 15 & 16: Explore MCQ Practice and Create Performance Task (3 weeks, 15 hours)
This time is set aside for students to prepare for the Explore MCQ and create their AP Create
Performance Task. Students will be given the chance to review course content and practice the
skills necessary to complete the Create Performance Task. The Create PT will be administered
over 12 hours of class time.
17
12 hours of class time to conduct
Create PT Create PT
Unit 18: Creative Development (Remainder of the school year, 2-4 weeks, 10-20 hours)
In this unit, students will brainstorm their own final project, discuss their ideas with their peers,
scope their project to fit within the time constraints of the class, plan out milestones for
incremental development, and create their own final product from scratch. This project allows
students to think creatively about the applications of the concepts covered in the course, and
create something of personal value.
18
CRD-2.A.2 CRD-2.F.6 Communication
CRD-2.E.1 CRD-2.F.7 Collaboration
CRD-2.E.2 IOC-1.A.2
19