AP CSP Create performance task: a guide for Python students
What the Create task is
The Create performance task is your chance to show what you can build. You design and write a program of your own choice, record a short video of it running, and make a Personalized Project Reference (PPR) that you will use on exam day.
Together with the two written response questions on the end-of-course exam, the Create task makes up 30% of your AP score. The multiple-choice section makes up the other 70%.
Key facts for the 2027 exam: - You get at least 9 hours of in-class time to work on the task. Your teacher decides how that time is scheduled. - All three components (program code, video and PPR) must be submitted as final in the AP Digital Portfolio by Friday 30 April 2027 at 11:59 PM Eastern Time. - Once you submit as final, you cannot change anything, and only final submissions are scored. - The end-of-course exam is on Friday 14 May 2027. In the written response section you answer questions about the code in your PPR.
Always check the latest Student Handouts on AP Central and listen to your teacher, because the rules can be updated from year to year.
What your program must include
Your program can be about almost anything, but College Board requires certain features, and they must be written by you (or by you and your partner). Your program code must include: - Input: from a user, a device, an online data stream or a file. - A list (or another collection type such as a Python list or dictionary) that stores related data and is actually used in a way that makes the program easier to write or maintain. - At least one procedure you wrote yourself, with a name and at least one parameter that affects how it behaves. In Python this is a function you define with def. Built-in functions, event handlers and a main function do not count. - An algorithm inside that procedure that uses sequencing, selection (if statements) and iteration (loops). - At least one call to that procedure. - Output that depends on the input and on what the program does. It can be text, visual, sound or something physical.
You submit your complete program code as a PDF. Comments are allowed, and encouraged, in this full code file. Make sure the text is clear and at least 10 point.
The video
The video shows your program working. It must be made by you alone, with no collaboration. - Show input to the program, at least one part of its functionality, and the output that results. - Maximum length 1 minute, maximum file size 30 MB. - Accepted formats: .mp4, .mov, .webm, .wmv or .avi. - No voice narration. Text captions are encouraged. - Do not show anything that identifies you, such as your name, face or school.
A screen recording works well. Plan a short demo that types or clicks a clear input and pauses on the output so it is easy to see.
The Personalized Project Reference (PPR)
The PPR is a small set of screenshots of your own code that you will be able to see during the written response section of the exam. You make it on your own.
It must contain: - Procedure, part i: the code that defines your procedure, showing its name, its parameter or parameters, and the algorithm with sequencing, selection and iteration. - Procedure, part ii: the code where your procedure is called. - List, part i: code showing data being stored in your list. - List, part ii: code showing that same list being used, for example looping through it to create new data or to access several elements.
Very important: the PPR must NOT contain any comments or any course content. Remove or crop out every comment before you take the screenshots. A PPR with comments can score 0. Keep the screenshots sharp and the text at least 10 point. If your PPR is not submitted as final by the deadline, you will not have it on exam day.
Working with others and using AI
You may work with a partner, or a small group, on ideas, writing the code, debugging and testing. You may not collaborate on the video or the PPR: those must be your own work.
Once the official in-class time for the task begins, you should only get help with your code from your partners. Your teacher can help with technical problems and explain what the task requires, but cannot help you write or fix your program.
Generative AI tools may be used as a supplementary resource, for example to understand an idea or to help find a bug. If you use AI-generated code, or code from anywhere else (a tutorial, an open-source project, starter code from your teacher), you must credit it in a comment, for example: "This code was generated using [tool name]" or "This code was provided as starter code by my teacher." You must also understand every line well enough to explain it in detail, and any borrowed code must be extended with your own new functionality.
Using someone else's work without credit is plagiarism and can lead to a score of 0 for the whole Create task, including the written responses. You will be asked to confirm that your work follows the rules when you submit it. When in doubt, ask your teacher before you use something.
Choosing a project
The best Create task projects are small, finished and clearly meet every requirement. A simple program that works is far better than an ambitious one that is half built.
Ask yourself these questions: - Can I explain the purpose in one sentence? - What will the user type or click (input), and what will they see (output)? - What related data will I keep in a list? - What procedure will I write, what parameter will it take, and how will that parameter change what it does? - Where will the procedure need an if statement and a loop? - Can I build a working version in about half of my in-class time, leaving time to test and polish?
Pick something you care about, such as a hobby, a sport, music or a problem at school. You will spend hours with this program and then answer questions about it, so it helps if it interests you.
Six project ideas for Python
These are starting points only. Your program, its design and its code must be your own.
- Study flashcards: the user adds questions and answers, then is quizzed. List: the questions (and a second list of answers). Procedure: quiz(cards, rounds), which loops for the given number of rounds, picks a card, checks the answer with an if statement and returns the score. - Budget tracker: the user enters spending amounts and categories. List: the amounts spent. Procedure: total_over(amounts, limit), which loops through the amounts and adds up only those above the limit. - Workout log: the user records exercises and minutes. List: minutes for each session. Procedure: weekly_summary(minutes, goal), which counts how many sessions met the goal and returns a message. - Word scramble game: the program mixes up words for the player to guess. List: the word bank. Procedure: scramble(word, swaps), where a larger number of swaps makes a harder puzzle. - Weather data explorer: the program reads temperatures from a file. List: daily temperatures. Procedure: count_days(temps, threshold, above), which counts days above or below a threshold depending on the third parameter. - Playlist shuffler: the user builds a playlist of songs with lengths. List: song lengths (and titles). Procedure: fit_playlist(lengths, max_minutes), which loops through the songs and adds them while the total stays under the time limit.
Example: a list and a procedure with a parameter
Here is a tiny illustration of the two key ideas. It is not a complete project and is not meant to be submitted.
A list storing related data:
temps = [] for day in range(7): temps.append(int(input()))
A procedure whose parameter changes its behavior, with sequencing, selection and iteration:
def count_warm(temp_list, limit): count = 0 for t in temp_list: if t > limit: count = count + 1 return count
print(count_warm(temps, 20))
Calling count_warm(temps, 20) and count_warm(temps, 30) gives different results, which shows that the parameter limit really affects what the procedure does. In your own program, aim for something that does more than this: your procedure should be a meaningful part of what your program is for.
Planning checklist
Use this before and during your in-class time: - I can state my program's purpose in one sentence. - My program takes input and produces output based on it. - I have a list that stores related data, and my code uses that list in a meaningful way (not just one element). - I wrote my own procedure with at least one parameter that changes its behavior. - That procedure contains sequencing, an if statement and a loop. - My program calls that procedure. - I have tested normal values, boundary values and unusual inputs, and fixed the bugs I found. - Every piece of code I did not write myself is credited in a comment. - My video is under 1 minute and 30 MB, has no voice and does not identify me. - My PPR has the four required code segments, no comments, and readable text. - I have checked everything with my teacher's guidance and submitted it as final.
Common mistakes to avoid
- Leaving comments in the PPR screenshots. This can score 0, so check every screenshot. - A procedure with no parameter, or a parameter that is never used. - A procedure that has a loop but no if statement, or the other way round. - A list that is created but never really used, or only one element is ever accessed. - Relying on built-in functions or library code for the main algorithm, so there is little code of your own to talk about. - A video that is over 1 minute, includes narration, or shows your name. - Starting too big and running out of time. Build a small version first, then add features. - Using AI or online code you cannot explain. You must be able to explain your code in detail on exam day. - Forgetting to press submit as final, or leaving it until the last evening when something can go wrong.
How the Create task links to exam day
On 14 May 2027 you will answer two written response questions about the code in your PPR, which you can see on screen during the exam. The prompts follow four categories: - Written Response 1: program design, function and purpose. For example, explaining what your program is for, who uses it, or how input leads to output. - Written Response 2(a): algorithm development. For example, describing step by step how the algorithm in your procedure works, including its selection and iteration. - Written Response 2(b): errors and testing. For example, describing calls to your procedure with different arguments and what they return, or how a change could cause an error. - Written Response 2(c): data and procedural abstraction. For example, explaining how your list manages complexity, or how your procedure's parameter affects what it does.
This is why it is so important that you write and understand your own program. Students who built their program themselves can answer these questions much more easily. After you submit, practise by writing answers to sample prompts using your own PPR. The written practice questions in this Exam Prep section give you a model to work from.
Timeline working back from 30 April 2027
Your teacher will set the actual schedule for your in-class hours, so fit this plan around it. - October to December 2026: learn the building blocks well: variables, if statements, loops, lists and writing functions with parameters. Write lots of small practice programs. - January 2027: try a practice Create task if your teacher sets one. Start a notebook of project ideas. - February 2027: choose your idea, write your one-sentence purpose, and plan your input, output, list and procedure. Check the plan against the requirements. - Early to mid March 2027: build a small working version first, then add features. Test as you go. - Late March 2027: stop adding big features. Test with normal, boundary and unusual inputs and fix bugs. Add comments and credit any borrowed code. - Early April 2027: record your video, make your PPR (with no comments), and export your full code as a PDF. - Mid April 2027: check every requirement with the checklist above and your teacher's guidance. Aim to submit everything as final by about 23 April, a week before the deadline. - 30 April 2027, 11:59 PM ET: final deadline. Do not leave it until this day. - May 2027: practise written responses using your PPR, alongside multiple-choice practice, ready for the exam on 14 May.
A final word
This guide helps you understand the task and plan your time, but the program must be yours. Follow your teacher's instructions and College Board's rules, credit anything you did not create, and make sure you understand every line of your code. That way you will be ready for the written responses too.