πŸ“š

Β >Β 

⌨️ 

Β >Β 

πŸ“

AP Comp Sci P Exam Guide

19 min readβ€’october 11, 2020

Minna Chow

Minna Chow

Minna Chow

Minna Chow


AP Computer Science Principles ⌨️

80Β resources
See Units

2021 Exam Guide

This guide was based on the updated 2020-21 Course Exam Description.
So, you've made it through the Big Ideas, and now the test is upon you!
Fortunately, the AP CSP test is one of the nicer AP tests out there. There aren't any essays to write or passages to analyze. The test is only two hours long, an hour and fifteen minutes shorter than the majority of AP tests.
The AP CSP test is also unique in that there's a Performance Task involved. This is a project that you'll do prior to the day of the test that makes up a part of your final AP score. There are several other AP tests that involve some sort of graded portfolio work, such as the AP Capstone classes and several of the AP Art classes, but chances are that this is the first time you'll be working with a Digital Portfolio.
Most of the question images are taken from the College Board practice problems, starting from page 172 of the CED.

Overview

The AP CSP Exam has two parts:

1. Multiple Choice Questions (70% of final grade)

  • 70 Multiple Choice Questions, done in two hours
    • 57 single-select questions (your traditional A, B, C, D questions)
    • 5 single-select questions attached to a reading passage
    • 8 multi-select questions (choose more than one answer, etc.)

2. Create Performance Task (30% of final grade)

  • The Create Performance Task is a coding project with some supplemental writing questions to go along with it.
  • The College Board recommends that you get 12 hours of in class time to complete your project.
    • If you have 90 minute class periods at your school, that translates to 8 class periods total.
  • The deadline to submit tasks as final is usually in April. For the 2020-21 school year, the deadline is April 30th, 11:59 PM EST.

MCQ Test

AP Test Overview

AP tests generally take place over two weeks in May, and they're scheduled to start at one of two times each day: 8 in the morning and 12 in the afternoon, local time. (Unless you're taking AP Physics C: E & M). The date and time that a test is scheduled for vary depending on the year.
If you have an afternoon time, expect some delays from other tests that might have run over. Just like other College Board tests you might have taken, you'll also have a stretch of time at the beginning where you're breaking booklet seals and reading instructions. ✌

What To Bring

  • Layers of clothing, such as a jacket: you'll want to be prepared in case you're stuck in a hot or cold testing room
  • A watch to keep track of time (make sure you comply with testing center regulations!)
  • Multiple pencils and erasers

Pacing

You have two hours to answer 70 questions. That translates to 35 questions an hour or about a question every 1.5 minutes. That's plenty of time, which is both a blessing and a curse; you probably won't run out of time to answer problems, but two hours is also a long time to keep your focus up.
The best way to figure out what pacing structure works for you is to take a practice exam before the test. Practice tests written before 2020-21 will have 74 problems instead of 70, and they won't have a reading passage. That said, they're still a good resource, and using them is encouraged. πŸ‘
There are three types of MCQs on the test: single select, reading passage, and multi select.

Single-select

Single-select problems are just regular multiple-choice questions. Each problem has four answers to go with it; you choose and bubble one of those answers.

General Tricks: Single Select

❗ You can pick and choose which tricks you use, based on what works for you.
  • You are allowed to write all over the test, so do! Writing can help you keep your thought process straight and your mind engaged with what you're working on.
  • Use the process of elimination if you're not sure what the answer is. If you know what the answer isn't, you can narrow your choices and increase your chance of getting the answer correct.
  • When you determine an answer is wrong, cross out the words that make it wrong or leave yourself a little note explaining why you eliminated the answer. It'll make it easier to understand your thinking if you decide to look over your problems again. You can also do this for correct answers by circling words that explain why an answer choice is right.
  • Think about what the differences are between answer choices. Does one use the word "always" while the other uses "sometimes?" Do all of the answers have a positive tone except one?
  • If you don't know the answer to a question, or if you're wavering between two choices, bubble your best guess, star the question, and move on.

Types of Single Select Questions

At Fiveable, we have narrowed down the single-select MCQs on the AP CSP test into two general types: Conceptual Questions and Coding Problems.

Conceptual Questions

Conceptual questions address concepts from the Big Ideas. They'll ask you to define how something works or to talk about the causes and effects of something. They will often also ask you to apply your knowledge of AP CSP concepts to real-world situations, like in this example:
https://firebasestorage.googleapis.com/v0/b/fiveable-92889.appspot.com/o/images%2F-wmBBLFALSz3i.png?alt=media&token=7500dbf3-0038-4acc-9fd7-14fcdce8467a

Answer

The answer is D: When a user enters an incorrect password more than two times in a row, the user is locked out of the account for 24 hours.
The challenge this problem poses is that you need to know what multifactor authentication is. It's not uncommon for the AP CSP test to ask you questions that hinge on your knowledge of one term or one concept. If you don't know what multifactor authentication is, this question could be very difficult indeed.
That said, there are still some tricks we can use to narrow down the answer list.
This question asks us to find the one that doesn't belong, so let's see if there are any major differences between the questions.
All four answer choices describe a security measure. However, take notice of the fact that answer choice D describes what happens when a login fails, while the other three choices describe a login process.
Questions A, B, and C also describe multiple devices or processes used in a login process (passwords, USB, email code verification, fingerprints), while Question D only mentions one: a password entry.
Even if you didn't know what multifactor verification was, you can still see that there's one answer that clearly doesn't belong. If you then know that multifactor authentication is the safety measure of requiring multiple forms of authentication for access to an account, the question answers itself.

Coding Problems

Coding problems ask you to analyze lines of code. They might then ask you to evaluate what the code will do or to correct an error in the code.
Pseudocode, as we saw in Big Idea 3, can take the form of blocks or text. Here's a question in block form...
https://firebasestorage.googleapis.com/v0/b/fiveable-92889.appspot.com/o/images%2F-NOGt8fHGB0CT.png?alt=media&token=949a9b5f-230d-40f7-854c-0809172f1b0d

Answer

The answer is D: x = 3, y = 2 and z = 1.
I personally solved this question through brute force: checking each set of values and seeing if the code would return the maximum value. Answers A, B, and C all do. It's a little tricky at first to understand why answer D doesn't, so let's go through it.
The set of values for D are x = 3, y = 2 and z = 1. This would make x the maximum value, and the program should return x.
The first box of code states that if x > y and x > z, max is set to x. 3 is greater than 2 and 1, so max is set to x. All good, everyone's happy, we can go homeβ€”
Nope! See, there's another box of code that will run even if we've already found max. It states that if y > x and y > z, the max is set to y. 2 isn't greater than 3, so the max isn't set to y and we move to the else statement, which says to set max to z.
The program would therefore return that the max value is z, not x.
and text form!
https://firebasestorage.googleapis.com/v0/b/fiveable-92889.appspot.com/o/images%2F-q6VjrXb3wR0q.png?alt=media&token=122e37ea-55a2-4a58-9025-51b9d35e08a1
(To see the solution to this question, go to Big Idea 1: Identifying and Correcting Errors.)

Special Coding Problems: Robots and Binary

Robot's Path Questions
You might see problems asking you to code a robot's path around a track. Robot problems can be rather involved, but they're nothing to fear! If they start eating up your time, you can always skip them and come back later.
Let's look at this example below: can you find the correct code that will get the robot to its destination?
This sort of puzzle is found in many learn-to-code games. It might be helpful to practice with some of them!
https://firebasestorage.googleapis.com/v0/b/fiveable-92889.appspot.com/o/images%2F-c6PU6o0JUQ8S.png?alt=media&token=e3b79ec7-8084-4368-96ee-f4d53c37c7da
https://firebasestorage.googleapis.com/v0/b/fiveable-92889.appspot.com/o/images%2F-lu9CI1PqxIHV.png?alt=media&token=7869864c-a0cf-4a61-8ecd-56bad7b87ae7

Answer

The answer is D.
The way I like to think about these problems is to imagine that I'm the robot. What do I need to do in order to get to the end of the maze?
(Notice the small arrows on the ground: these tell you how far every step is.)
Well, I'll need to go forward, turn left, go forward, turn right, go forward two, turn right, go forward two, turn left, go forward three, turn right, go forward three and turn right again, and I'm at my destination.
Looking at this list of instructions, you can see a bit of a pattern emerging: forward, right, forward, left. You can also see that the number of forward steps the robot must take increases by one every "cycle", so to speak. Finally, you can see that the robot starts by going forward and ends by turning right, which might help eliminate some answer choices.
With this knowledge, let's look at the code blocks provided. Remember, you can always write out the code to the side if the block-based formatting is giving you grief.
We can eliminate A and B because the code doesn't give us a way to increase the number of forward steps we take. The robot will never go further than forward by one.
That leaves us with C and D, which (using the REPEAT n TIMES loop) do have a way to increase the number of forward steps the robot can take. The only difference between the two questions is the placement of the n ← n + 1 statement. The robot will only need to go forward once at the beginning of the path and notice that n starts at one. If we chose C, which puts the n ← n + 1 statement at the beginning, we'd have too many forward steps to start out with.
Therefore, D is the correct answer.
If your robot is hitting a dead end, another way to approach this problem would be to follow the instructions in each of the answer choices, pretending you're the robot. If you hit a dead end or go off-course, you'll know that the code doesn't work and you can move to the next question.
Binary Conversion Questions
Another "coding" problem you might run across is the binary conversion question. These test your knowledge of how binary numbers work. They may ask you to count in binary or to convert binary to decimal and vice versa. (You might even see a problem asking you to convert to hexadecimal!)
πŸ”— Here's a little trick to help you convert binary to hexadecimal. The test won't give you numbers bigger than the first example covered in the video.
In order to answer these problems, you need to do a little bit of memorization (just a little.) You won't get a calculator on the test, so you'll need to know your powers of 2 for a byte of data, which starts at 2^0 (which is 1) and goes to 2^7. (It turns out that the values for the powers of 2 have a doubling pattern: 4 times 2 is 8, 8 times 2 is 16, 16 times 2 is 32, and so on.)
From there, you can make your grid:
https://firebasestorage.googleapis.com/v0/b/fiveable-92889.appspot.com/o/images%2F-MmkCgGvfHQGQ.jpg?alt=media&token=6e34d20c-bf32-4a67-8fc5-f93fdc4f01ed
When you get your binary number, you'll fill in the boxes, add up all the base 10 values they correspond to, and bada-bing-bada-boom, there's your answer! (A more detailed example can be found in Intro to Big Idea 2: Data and Binary Numbers.)
What if you want to go the other way around, from decimal to binary? That's a little more complicated, but not by much! You'll basically do the inverse of what you did to go from binary to decimal.
  1. Find the largest power of two that fits into your decimal number and put a 1 in the column under it. For example, if you were trying to convert 40 to binary, you'd put a 1 in the 32 column.
  2. Put zeros in every column above the largest power of two, because you won't use those numbers. In the example, you would put a zero in the 64 and 128 columns.
  3. Subtract the largest value you found from the decimal value. In the example, you'd get 8.
  4. Repeat steps 1 and 3 until you're out of numbers or until you reach one (which means you'd put a 1 in the very last column).

Tips for Coding Problems

  • Take note of what the question is asking you: what result does it want?
  • Plug values into the code, and write out what result you would get.
  • Rewrite the code to the side if you're having difficulty with College Board's formatting.

Reading Passage

On the AP test, there will be a reading passage about a computing innovation with five questions to accompany it. As of 2020-21, this is a brand new addition to the test.
The reading passage isn't going to be very long (a paragraph or two at maximum), and it could be accompanied by a flowchart or diagram. An example can be found on pages 178-179 of the CED.
Tips for Reading Passage Problems
  • Don't be afraid to read the passage multiple times. The AP CSP reading passages are very technical and jam-packed with information you might need to refer back to.
  • For some people, writing out a summary of their reading passages helps them to better understand what they read.
  • If there's a diagram, labeling it with any extra information provided (is there a key to the diagram? What does each part of the diagram show?) can help to make sense of it.
Types of Reading Passage Questions
  • What data does the computing innovation need to operate? Where does that data come from?
  • How do users interact with the computing innovation?
  • What's a potential cause or effect of the innovation?
  • What's a potential benefit or harm of the innovation? What's a potential benefit or harm from the way that the innovation operates?

Multi-select questions

Multi-select questions operate very much like single-select questions (and follow similar formats), except there are multiple answers instead of one. These can be approached much like single-select questions. Just remember to bubble in two answers instead of one!
The following questions are courtesy of the 2014 College Board CED.
https://firebasestorage.googleapis.com/v0/b/fiveable-92889.appspot.com/o/images%2F-9zVoWh7i2J5s.png?alt=media&token=a9a4bbcf-7bda-4b1d-883a-ea0b67f717df

Answer

The answers are B and C. This is a conceptual question that requires you to know what selection and iteration are. For this problem, we can think that selection = if statements and iteration = loops. So, the question becomes: which of the following algorithms requires the use of if statements and loops?
Let's look at the answer choices. Notice that A is the only answer choice that doesn't involve a list. Traversing a list usually requires a loop of some kind, so we can put A on our radar of potential wrong answers.
Answer choice A is an algorithm that, when given two numbers, displays the greater of the two. (An integer is just a whole number.) Let's write out what this algorithm might look like with random numbers:
x = 15 y = 25 if x > y: print x if y > x: print y
You'll need to use selection here (if statements), but no loops are necessary. A isn't correct.
The other three all involve lists, so we'll need to look at what else differentiates them. B displays the number of even numbers, C displays the number of negative numbers and D adds up all the numbers and displays the sum. Both B and C pull out values from the list, but D doesn't. In other words, B and C have to select what values they want.
You could write out D like this, with a loop but no if statements:
list = [1, 2, 3, 4, 5] sum = 0 for x in list: sum = sum + x print sum
By process of elimination, because A and D can't be the correct answers, B and C must be.
Here's another example, give it a try for yourself!
https://firebasestorage.googleapis.com/v0/b/fiveable-92889.appspot.com/o/images%2F-TJ7MGsgjTXSR.png?alt=media&token=08e7d453-6c22-425a-819a-c61fd4d549ce
https://firebasestorage.googleapis.com/v0/b/fiveable-92889.appspot.com/o/images%2F-VbfU0ZywvEk6.png?alt=media&token=d591ff93-980e-4245-b5ee-2867f5eccb32

Answer

The answers are A and D. This is an example of a coding problem. It requires you to understand procedures and lists, as well as what the question is asking.
Let's look at the question itself. What is it asking? In summary, the question asks us to choose the code lines that will add five points to a list of grades, gradeList. However, if adding five points will cause the grade to go over 100, then the students will just be assigned a 100.
The code structure that's already there is the basic framework for a loop. Looking at the answer choices, it seems that the loop is meant to traverse the list.
With that, let's go to the answers!
Looking at the question choices, you can see that two of them make use of the defined procedures above (A and B) and two of them do not (C and D).
Both A and B change the value of a grade in gradeList to a new number: either the original grade plus 5 or 100. The only difference is the procedure used: min or max? Plugging a test case of 99 and 99 + 5, or 104, into both answers, we can see that answer choice A would return 99 because it's the minimum and answer choice B would return 104 because it's the maximum value.
Remember, the highest grade that a student can get is 100. Therefore, the correct answer must be the one that returns the minimum value, choice A.
What about C and D? Both add 5 to every value in gradeList. The only difference between the two is what happens if adding 5 makes the new value greater than 100. In choice C, 5 is subtracted from the new value. In choice D, the new value is replaced by 100. In this problem, if the new grade would exceed 100, the student's grade is replaced with a 100, so this makes D another correct answer.
If you're having trouble, you can always pick a test case and run through the code lines manually!

Create Performance Task

The Create Performance Task asks you to create your own program and, besides a few coding specifications, gives you the freedom to design it as you see fit. It can be a great opportunity to explore something you're interested in.
Need help brainstorming ideas? Sample Create Projects have been released for the new version of the test.
You can also look at some past projects. (Make sure you're looking at the Create Projects, not the Explore Projects.) The rubric and format are different, but they're still a great place to find inspiration!
When you're a little further in your Create Project, you may also want to check out the rubric and scoring guidelines for the updated samples.

Requirements

You'll submit three items for your Create Performance Task:

1. Program Code

You'll need to submit a full copy of your program's code in PDF form. You're allowed to work with others on the development of your project, and if you're using code segments written by others you need to credit them in this document.
Your program must include:
  • Input instructions from one of the following:
    • The user (This is probably the easiest choice)
    • A device
    • An online data stream
    • A file
  • Use of at least one list or another collection type that has a purpose for the overall program
    • Collection types collect elements into a group like a list. Examples include databases and sets.
    • This data abstraction must also make the program easier to develop or easier to maintain. (You can't just have a list for the sake of having a list.)
  • A student-written procedure (using procedures from a library, for example, won't work) that contributes to the program's purpose. You need to define:
    • The procedure's name
    • The return type (if you need to.)
    • One or more parameters (zero-parameter procedures won't work here)
    • An algorithm that includes sequencing, selection, and iteration within your procedure. (See Big Idea 3 for more about sequencing, selection, and iteration. Generally speaking, if your procedure has sequential code statements, an if statement, and a loop, you're good to go!)
  • Calls to the procedure you've written
  • Instructions for output based on your input and how the program works.
Tips for Writing Program Code
  • Take advantage of the time you have in class.
  • Work out your algorithms in Pseudocode or even plain English if you're having trouble sorting out your code.
  • Don't be afraid to rework or rewrite chunks of your code.
  • Don't be afraid to ask for help if you need it. Your teacher isn't allowed to help you on your project, but you've got some great resources around you in the form of your classmates (and Google.)
  • For some debugging tips, check out Big Idea 1!

2. Video

You'll need to submit a video that is one minute or shorter in length that shows how your program works. This video needs to show your program running, and must include:
  • The input to your program
  • At least one part of how your program functions
  • The output your program produces
You can't include any distinguishing information about yourself, such as your name or your school. You also can't use your voice to narrate the program, although you can use captions!
You also can't have someone else narrate the program for you: you're not allowed to work with anyone else for your video.
In terms of formatting, your video must be in .mp4, .wmv, .avi, or .mov format and the file can't be bigger than 30MB in size.

3. Written Responses

https://firebasestorage.googleapis.com/v0/b/fiveable-92889.appspot.com/o/images%2F-2igjzA9sd5YU.gif?alt=media&token=ce9c10b1-e7aa-40cb-a0d9-792d033e03df

Image source: GIPHY

I know, I know, writing responses aren't the most exciting thing in the world. That said, you're not asked to write pages and pages of essays: the longest of these responses is 300 words at most, and the word count total is 750 words. These responses will also help you make sure you've covered all your bases and created a high-scoring project.
Here are the prompts, taken from the CED itself. (Some of the phrases have been shortened for the purposes of explanation: I would highly recommend you take a look at the word-for-word prompts on the CED, pages 192-195.)
Prompts
Provide a written response that does all three of the following: (recommended 150 words for all three parts)
  • Describes the overall purpose of the program
  • Describes what functionality of the program is demonstrated in the video
  • Describes the input and output of the program demonstrated in the video
Capture and paste two program code segments you developed during the administration of this task that contain a list (or other collection type) being used to manage complexity in your program.
  • The first program code segment must show how data have been stored in the list.
  • The second program code segment must show the data in the same list being used, such as creating new data from the existing data or accessing multiple elements in the list, as part of fulfilling the program’s purpose.
Then, provide a written response that: (recommended 200 words for all parts total)
  • Identifies the name of the list being used in this response
  • Describes what the data contained in the list represent in your program
  • Explains how the selected list manages complexity in your program code by explaining why your program code could not be written, or how it would be written differently, if you did not use the list
Capture and paste two program code segments you developed... that implements an algorithm used in your program and a call to that procedure.
  • The first code segment should be of your procedure, including its name, return type, parameters and algorithm
  • The second code segment should be a call to this procedure.
Then, provide a written response that (recommended 200 words for all parts total)
  • Describes in general what the identified procedure does and how it contributes to the overall functionality of the program
  • Explains in detailed steps how the algorithm implemented in the identified procedure works. Your explanation must be detailed enough for someone else to recreate it.
Now we're going to focus on the procedure calls! Write a response that... (recommended 200 words for all parts total)
  • Describes two calls to the procedure [you identified]. Each call must pass a different argument(s) that causes a different segment of code in the algorithm to execute.
  • Describes what condition(s) is being tested by each call to the procedure
  • Identifies the result of each call
Tips for Writing Responses
  • Don't beat around the bush. You only have a few hundred words, after all.
  • Go rubric checking often! You want to make sure your writing is in alignment with what the rubric wants. You can even use the prompts as sentence stems, to make sure you're answering the problem.
  • Give yourself time to write, rewrite and think about what you're writing. On a related note...
  • Don't submit your create project at 11:59 the night it's due. You'll thank me later.
❗ Make sure you don't post your Create Project online after you've made it. You don't want to risk accusations of plagiarism or face trouble with the College Board.

That's it!

Congratulations for making it through AP CSP! Hopefully, you've learned a lot about how the digital world we live in works and had fun while doing it.