The Create Performance Task (guided)
The Create Performance Task
- You develop your own program for a purpose you can explain. The AP Digital Portfolio receives program code, a video, and your Personalized Project Reference (PPR). Written responses are completed on the AP exam.
- This lesson is practice, not AP scoring or submission approval. Use the current College Board student handouts; do not submit this supplied example as your own student-developed code.
What the program needs
- Include input from a user, device, online data stream or file, and output based on that input. A list must help manage complexity, not merely appear in the code.
- Your selected student-developed procedure needs a parameter that affects its work and an algorithm with sequencing, selection and iteration in its body. Show a call to that procedure.
Keep the algorithm inside the procedure
- In
report_for(scores), the count starts at zero (sequencing), a loop visits the scores (iteration), andifchooses which scores count (selection). grade_for(score)is a useful helper. It has selection but no loop, so it alone does not meet the selected procedure's algorithm requirement.
A complete practice example
- Type whole-number scores from 0 to 100, separated by spaces, such as
72 95 58 88 40 67. This is real user input; the procedure returns a summary based on the list. - Try another list and explain how its contents change the result. This teacher-provided example demonstrates the structure; your assessed work must meet the authorship rules.
def grade_for(score):
if score >= 90:
return "A"
elif score >= 70:
return "B"
elif score >= 50:
return "C"
return "F"
def report_for(scores):
pass_count = 0
for score in scores:
if grade_for(score) != "F":
pass_count += 1
return pass_count
try:
scores = [int(part) for part in input("Scores: ").split()]
if not scores or any(score < 0 or score > 100 for score in scores):
print("Enter one or more whole scores from 0 to 100.")
else:
pass_count = report_for(scores)
print(f"{pass_count} out of {len(scores)} passed")
except ValueError:
print("Enter whole numbers separated by spaces.")
Test the boundaries
- The pass boundary is 50:
report_for([49, 50, 51])returns 2. A different list length must work too; the function must not return a memorised count. - The helper accepts an empty list and returns zero. The interactive program asks for at least one score because an empty class summary is not useful here.
Explain your choices
- Purpose and list: What does your program do? How does storing related values together make it simpler to develop or maintain than separate variables?
- Procedure and algorithm: How does the parameter affect the result? Point to sequencing, selection and iteration inside your selected procedure, then explain a test that exercises a different path.
Prepare the right evidence
- The PPR includes selected list/procedure code segments and a procedure call. It is created independently and must not include comments or course content. Follow the official instructions for each submission component.
- Program-code attribution and PPR presentation have different rules. A practice program, this site's check, or a copied scaffold does not certify your final AP submission.
Practice below
- The first task uses fixed example data to practise
grade_forandreport_for; it is not a full Create submission. The second practises a loop that finds a maximum in a nonempty list. - Check answer tests these practice functions. Review the current official handouts and be ready to explain your own program on the exam.
Difficulty 4/5 · 280 coins + a small bonus on first completion today
Practise the scaffold with the fixed list scores. Define grade_for(score) using the stated grade boundaries. Define report_for(scores) with a loop and selection inside it to count passing scores. Call it to set pass_count, then print a summary. This fixed-data warm-up is not a complete AP submission.
Click Run to see the output here.
Difficulty 4/5 · 280 coins + a small bonus on first completion today
Another practice algorithm: Write top_score(scores) that returns the highest value in a nonempty list using a loop — start with the first score, then compare each one. Do not use the built-in max. Then print the result.
Click Run to see the output here.