AP Computer Science Principles
What have we already done to prepare for the Create Task?
Think back to the projects we've worked on to practice for the Create Task.
What are the three key components we need to include in our program?
Your program must include:
These components work together to create a well-structured and functional program.
But how will we show the College Board that we included these components...
Look at the General Requirements on page 1 of the Create Performance Task Student Handout.
What are the 3 things you need to turn in for the Create Task?
A PDF of your entire program code
1 minute or less showing your program running
4 Code segments showing your procedure and your list.
At the top of page 1, there are 3 paragraphs introducing the project. Look through those paragraphs.
You can work alone or with one partner
Each student must submit their own video and PPR
Code can be shared between partners; video and PPR cannot
In the first paragraph of the Create Performance Task Student Handout, you will see:
"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."
That is the why behind your program, its purpose.
What is the difference between the purpose and the functionality of a program?
Why does the program exist? What problem does it solve for users?
e.g., "to help users track their fitness goals"
What does it do and how does it do it? The specific features and behaviors.
e.g., "allows users to log workouts, calculates totals, displays progress"
1. Which of these describes the PURPOSE of a program?
2. Which of these describes the FUNCTIONALITY of a program?
Look at page 2 of the student handout. What are the requirements for your program code?
Your program must include:
onMousePress, onKeyPress…)print, len, range…)Navigate ↓ through this stack. Each example shows a procedure (and call). Does it meet the AP Create Task requirements?
def onMousePress(mouseX, mouseY):
if cookie.hits(mouseX, mouseY):
score = score + 100
if score > 10000:
win()
Note: No procedure call shown. Event handlers call this automatically
onMousePressmouseX, mouseYif statementsMissing iteration and a student-written procedure call. Event handlers don't count.
Let's look at another example ↓
Definition
def checkFraud(bills):
for bill in bills:
if bill > 5000:
print("Potential fraud: ",
bill)
else:
print("Normal transaction: ",
bill)
Call
totalBills = [1000, 1100,
11000, 800, 6200]
checkFraud(totalBills)
checkFraudbillsif/elsefor loopcheckFraud(totalBills)All five criteria are met. The parameter is used, iteration and selection are present, and there is a clear student-written call with an argument.
Let's look at another example ↓
Definition
def magic8Ball(question):
if len(question) == 0:
print("Invalid question.")
askQuestion()
else:
timer = 3
while timer > 0:
print("Thinking...", timer)
time.sleep(1)
timer = timer - 1
response = random.choice(responses)
print("Magic 8 Ball says:", response)
Call
def askQuestion():
question = input(
"Ask the Magic 8 Ball "
"a question: "
)
magic8Ball(question)
magic8Ballquestionif/elsewhile loopmagic8Ball(question) called from askQuestion()All five criteria are met. The parameter is used meaningfully, both selection and iteration are present, and there is a student-written call with an argument.
"Use of at least one list (or other collection type) to represent a collection of data that is stored and used to manage program complexity and help fulfill the program's purpose"
Let's look at an example ↓
if score > highScore[0]:
highScore = [score]
print(highScore)
Poll: Does this list manage complexity? Yes / No
A single variable — highScore = score — would work exactly the same way. Storing one value in a list doesn't require a list; it adds no real complexity management.
Let's look at another example ↓
totalBills = [1000, 1100, 11000]
for bill in totalBills:
if bill > 5000:
print("Potential fraud: ", bill)
Poll: Does this list manage complexity? Yes / No
The for loop iterates over multiple bill values stored in the list. Without totalBills, you'd need a separate variable for each amount — the list makes the program meaningfully simpler to write and extend.
A list manages complexity when it lets you write
less code to handle more data.
Look at page 3 of the student handout. Which of the following should your video demonstrate?
Your video is NOT about explaining your code
Your video is about PROVING your program works
Flip to pages 4 and 5 of the student handout. You've seen this before when we have practiced creating a PPR for our projects. This is the PPR, just like we practiced.
You'll receive a copy of your PPR and use it to answer 4 written-response questions. You won't know the questions ahead of time. You need to understand your code. Variables and function names can help remind you what your code does.
Flip to page 6 of the student handouts. Look over plagiarism and the Acceptable Generative AI Use section.
If you submit work that is not your own → score of 0
This includes:
If you can't explain it yourself, don't submit it.
If you can't EXPLAIN it don't SUBMIT it.
If you use something you didn't create from scratch, say so in a comment:
# Gemini helped write this function
# My partner wrote this procedure
# I worked with my partner to write this procedure
# This function came from a project we wrote in class
The PPR must be 100% your own — your own procedure (that meets all requirements), your own list
Your project must be submitted BEFORE the deadline.
Video + Program Code + PPR each need to be submitted AS FINAL.
On test day you'll receive a copy of your PPR and have 1 hour to answer 4 questions.
These 6 points represent 30% of your AP Test score
💡 How do you show keyboard input in your video?
This program is close… but it would NOT earn full credit on the Create Task.
scores = [10, 20, 30, 40]
def checkScores(threshold):
for s in scores:
print("Score:", s)
checkScores(25)
threshold exists as a parameter but does nothing inside the procedure body
No if statement → missing selection requirement
List is used, but not meaningfully — just printing every item without the parameter
scores = [10, 20, 30, 40]
def checkScores(threshold):
for s in scores:
if s >= threshold:
print("High score:", s)
else:
print("Score:", s)
checkScores(25)
Now threshold is used, selection is present, and the list drives meaningful logic
This program is close… but it would NOT earn full credit on the Create Task.
def onMousePress(x, y):
if x > 200:
print("Right side clicked")
else:
print("Left side clicked")
onMousePress is called automatically by the system, not by student-written code. It cannot be the student-developed procedure.
No loop anywhere in the code → missing iteration requirement
No list is used → missing the list requirement
clicks = []
def recordClick(x, y):
clicks.append(x)
for pos in clicks:
if pos > 200:
print("Right:", pos)
else:
print("Left:", pos)
def onMousePress(x, y):
recordClick(x, y)
recordClick is written by the student and called with an argument
for loop and if/else both present inside the procedure
clicks accumulates values — a single variable couldn't do the same job
Flip to pages 8–9 of the student handout.
Read through the preparation steps. Highlight the steps you have already completed throughout this school year.
In your survival guide, write a sentence about where you are in the preparation process and what still needs to be done before you start.
Flip to pages 10–11 of the student handout.
In your survival guide, fill in the must, may not, and may statements using the language from pages 10–11.
From everything on pages 10–11, choose the 3 rules you think matter most and write them in your survival guide. Be ready to explain your choices.
You have 9 hours. That's it.
9 hours can also be a lot of time.
"Simple programs that meet all requirements score better than complex programs that miss one."
Stretch Goals: (If you "finish" before time)
Name it. What parameter does it take? What does it return or change?
Think about what you repeat. Are you going through a list? Waiting for user input?
What changes based on user input or data? What are the different paths through your program?