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