![](../_static/Mobile_CSP_Logo_White_transparent.png)
8.11. Old Create PT Prep and Samples¶
Old Create PT Samples (prior to 2024)
Below are some Create Performance Task samples that were submitted in prior years before the Create PT changes in 2024. These were selected by the College Board to be featured on the AP CSP Exam page. We have selected some of the samples that used MIT's App Inventor as the programming language. In some cases, additional explanations and commentary are provided to give you more insight into what is expected of you for this task.
Activity
Select at least two samples from the list below and try scoring them with the Create Performance Task Rubric. When you are done reviewing the samples, score your Quiz App from Lesson 5.6 or exchange and score your classmate's Quiz app.
8.11.1. Sample 1 - 2021’s Pilot Sample A¶
Row 1: Program Purpose and Function (Video and Response 3A)
Student Response
3a. This program was created in MIT App Inventor to address the issue of learning new languages. Here it teaches the user how to say different colors, where the user inputs what language it wants to hear, either Spanish or French, and then taps on a color, prompting the program to output the audio for that certain color. This allows users to quickly learn how to say colors in another language through interaction and output of audio. In the video, it shows an example of the user clicking on the Spanish checkbox and playing the audio for red and blue. The user can hear what it sounds like, and thus learn how to say it correctly. If the user accidentally inputs nolanguage or both, the program will catch the error and notify the user.
Requirements | Score | Explanation |
---|---|---|
A.) The video demonstrates the running of the program including: AND B.) The written response: |
1 |
The response earned the point for this row, meeting all six of the criteria:
|
Additional Explanation
Row 2: Data Abstraction (Response 3B)
Student Response
3b. The data contained in the list Audio is the list of available color names. It represents all the colors a user can pick for the program in English. These are used to create the corresponding Spanish or French audio files based on which language is selected. When a button is pressed, it will get the English color word from the index of the color in the list. Here, the language the user has chosen does not matter. The program will then create the audio file name for the Spanish or French audio based on what language the user has check marked by manipulating the text (for example, adding“-spanish” to the end if they selected spanish) and then adding “.mp3” to the end in order to call the correct audio file. For the program to function without lists in general, each button will have to call the individual audio file, meaning we would need to have buttons for every color and language combination making the code and user interface more complex.
Requirements | Score | Explanation |
---|---|---|
The written response:
|
1 |
The response earned the point for this row, meeting all three of the criteria:
|
Additional Explanation
Row 3: Managing Complexity (Response 3B)
Student Response
3b. The data contained in the list Audio is the list of available color names. It represents all the colors a user can pick for the program in English. These are used to create the corresponding Spanish or French audio files based on which language is selected. When a button is pressed, it will get the English color word from the index of the color in the list. Here, the language the user has chosen does not matter. The program will then create the audio file name for the Spanish or French audio based on what language the user has check marked by manipulating the text (for example, adding“-spanish” to the end if they selected spanish) and then adding “.mp3” to the end in order to call the correct audio file. For the program to function without lists in general, each button will have to call the individual audio file, meaning we would need to have buttons for every color and language combination making the code and user interface more complex.
Requirements | Score | Explanation |
---|---|---|
The written response:
|
1 |
The response earned the point for this row, meeting both of the criteria:
|
Additional Explanation
Row 4: Procedural Abstraction (Response 3C)
Student Response
3c. This procedure helps to contribute to the overall functionality of the program by selecting the correct audio file based on what language and color the user has selected. Since this algorithm is needed every time a user presses a button, the procedure helps the overall efficiency of the program by having the code located in one location that the program repeatedly calls on. When a user presses a certain color button, the button returns an index pertaining to the main audio list of colors. Then, the procedure takes the index of the color as a parameter and selects the respective list element, which is a string that contains the certain color. Then, depending on the language, the procedure will append a language identifier (for example, “-spanish”) and then add “.mp3”. It will then use this to call a certain color from the database of audio files that is named accordingly. The procedure is able to take parameters and inputs from the user and then output them as such by constructing certain audio file names and then pulling them from the database to play. This action demonstrates selection, and sequencing is when the procedure is able to order tasks accordingly and call from a list. Iteration is used when the procedure senses that there are no languages or both languages selected, and thus repeats the audio of “Select a language!” until the user does so.
Requirements | Score | Explanation |
---|---|---|
The written response:
|
1 |
The response earned the point for this row, meeting both criteria:
|
Additional Explanation
Row 5: Algorithm Implementation (Response 3C)
Student Response
3c. This procedure helps to contribute to the overall functionality of the program by selecting the correct audio file based on what language and color the user has selected. Since this algorithm is needed every time a user presses a button, the procedure helps the overall efficiency of the program by having the code located in one location that the program repeatedly calls on. When a user presses a certain color button, the button returns an index pertaining to the main audio list of colors. Then, the procedure takes the index of the color as a parameter and selects the respective list element, which is a string that contains the certain color. Then, depending on the language, the procedure will append a language identifier (for example, “-spanish”) and then add “.mp3”. It will then use this to call a certain color from the database of audio files that is named accordingly. The procedure is able to take parameters and inputs from the user and then output them as such by constructing certain audio file names and then pulling them from the database to play. This action demonstrates selection, and sequencing is when the procedure is able to order tasks accordingly and call from a list. Iteration is used when the procedure senses that there are no languages or both languages selected, and thus repeats the audio of “Select a language!” until the user does so.
Requirements | Score | Explanation |
---|---|---|
The written response:
|
1 |
The response earned the point for this row, meeting both criteria:
|
Additional Explanation
Row 6: Testing (Response 3D and Procedure from 3C)
Student Response
3D. The test cases are based on the conditions of what language is selected and what button for what color is pressed, which is represented by the parameter “index”. We would want to check the program for both Spanish and French. For the language Spanish, we could select one of the colors, for example Orange, and the program should give us the correct translation for
Spanish. For the language French, we could select one of the colors, for example Orange, and the program should give us the correct translation for French. To further test the program, we should select another color, for example green, and the program should give us the correct translation for the pre-selected language. Each of these test cases executes different parts of the algorithm, going by the condition of which checkboxes are checked for which languages.
Requirements | Score | Explanation |
---|---|---|
The written response:
|
1 |
The response earned the point for this row, meeting all three criteria:
|
Additional Explanation
8.11.2. Sample 2 - 2021’s Pilot Sample C¶
Row 1: Program Purpose and Function (Video and Response 3A)
Student Response
3a. My app is intended to lessen the effects of global warming and to decrease the amount of non recyclable waste we produce. In the video, you can see the question label that displays a random list item from “global questions list”. Once the user reads the question, they answer it using the text box. Depending on the users input, the program will produce various outputs, which it pulls from “global solutions list”. If the program decides the user spends too much time driving, using their AC, or doesn’t recycle enough, they will notify them by displaying an output on “output label” that tells them what they can do to lessen their carbon footprint. Also, a thumbs down image is displayed, unless the input indicates they are being good with their emissions. In that case, a thumbs up is displayed and “output label” tells the user they are doing good and to keep it up.
Requirements | Score | Explanation |
---|---|---|
A.) The video demonstrates the running of the program including: AND B.) The written response: |
1 |
The response earned the point for this row, meeting all six criteria:
|
Additional Explanation
Row 2: Data Abstraction (Response 3B)
Student Response
3b. The data in “questions_list” are questions that the program displays for the user. The questions are then interpreted by the user and the user gives the program its input through the text box. The procedure check through “questions list” to see which element in the list matches the question that is displayed on “question label” so that it can provided the right “output label” based on the “number of hours” that was input. The use of the questions_list manages complexity in my program, because the program would be more complicated if I had to type the question into the if statements.
Requirements | Score | Explanation |
---|---|---|
The written response:
|
1 |
The response earned the point for this row, meeting all three criteria:
|
Additional Explanation
Row 3: Managing Complexity (Response 3B)
Student Response
3b. The data in “questions_list” are questions that the program displays for the user. The questions are then interpreted by the user and the user gives the program its input through the text box. The procedure check through “questions list” to see which element in the list matches the question that is displayed on “question label” so that it can provided the right “output label” based on the “number of hours” that was input. The use of the questions_list manages complexity in my program, because the program would be more complicated if I had to type the question into the if statements.
Requirements | Score | Explanation |
---|---|---|
The written response:
|
0 |
The response did not earn the point for this row. The response does not meet either of the two criteria:
|
Additional Explanation
Remember that for managing complexity, the data abstraction must make the program easier to develop (alternatives would be more complex) or easier to maintain (future changes to the size of the list would otherwise require significant modifications to the program code). Consider how the code would change if they were adding/removing items from the list. In this particular sample, it might be difficult to understand why this sample did not earn a point for this row. The programmer of this sample would need to add more selection statements. Here is an example of how the sample could be modified to meet the criteria for this row (note that this example could be further modified so that the hard-coded index in the else statement is removed):
Row 4: Procedural Abstraction (Response 3C)
Student Response
3c. The procedure “interpret_response” has a parameter and selects the response for the user based on the question and the user input. Without it, my program wouldn’t function at all. So, the program displays the question, the user interprets it and then feeds the program data, which is their response to the question. The data that the user inputs to the program is the text from the text
box. That text is the parameter for procedure “interpret response”, in the procedure, the user's input iscalled “number of hours”. Procedure “interpret response” processes the “number of hours” and formulates an output that it will pull from the list “solution list” based on the question and the number of n hours.
The procedure uses a loop that checks what question is displayed to the user, so it can understand the parameter in the context of what question is being asked. After analyzing the question that is displayed and the “number of hours”, the procedure will pull different strings from a second list, “solutions list”. If the user indicates that they are harming the environment through the “number of hours”, the procedure will pull an output from the second list that notifies the user that they are doing harm to the environment, and give them ways to lessen their effects. Also, an image property is set to thumbs down. If “number of hours” indicates they are being good to the environment, the program will notify them and congratulate them on their safe living. Also, the image property is set to a thumbs up.
Requirements | Score | Explanation |
---|---|---|
The written response:
|
1 |
The response earned the point for this row, meeting both criteria:
|
Additional Explanation
Row 5: Algorithm Implementation (Response 3C)
Student Response
3c. The procedure “interpret_response” has a parameter and selects the response for the user based on the question and the user input. Without it, my program wouldn’t function at all. So, the program displays the question, the user interprets it and then feeds the program data, which is their response to the question. The data that the user inputs to the program is the text from the text
box. That text is the parameter for procedure “interpret response”, in the procedure, the user's input iscalled “number of hours”. Procedure “interpret response” processes the “number of hours” and formulates an output that it will pull from the list “solution list” based on the question and the number of n hours.
The procedure uses a loop that checks what question is displayed to the user, so it can understand the parameter in the context of what question is being asked. After analyzing the question that is displayed and the “number of hours”, the procedure will pull different strings from a second list, “solutions list”. If the user indicates that they are harming the environment through the “number of hours”, the procedure will pull an output from the second list that notifies the user that they are doing harm to the environment, and give them ways to lessen their effects. Also, an image property is set to thumbs down. If “number of hours” indicates they are being good to the environment, the program will notify them and congratulate them on their safe living. Also, the image property is set to a thumbs up.
Requirements | Score | Explanation |
---|---|---|
The written response:
|
0 |
The response did not earn the point for this row. The response met only one of the two criteria:
|
Additional Explanation
Row 6: Testing (Response 3D and Procedure from 3C)
Student Response
3D. If the question label is equal to the second element in “question list” and the parameter “number of hours” (equal to the text box text) is 6, then the second element in “solutions list” will be displayed on “output label” and image property will be set to badd.png. In this scenario, the question asked to the user asks how many hours their AC was on during that day. The user inputs 6 to the text box, indicating that their AC was on for 6 hours. This is where I wanted a message to display to the user that they are using their AC too much and offer them alternatives. So, I created a list with solutions and that message is the second element in “solution list”, so that is why the program pulls the second element from “solution list” and displays it on “output label” when the user inputs 6 for the question at index 2 in “questions list.
Another scenario, if the first element in “question list” is equal to the string displayed in “question label” and the text input by the user, or “number of hours”, is 1, then the fourth element in “solution list” is pulled and displayed on the output label and the image is set to “good.png”. In the context of my program, this scenario would mean the question asks how long the user had spent driving on that day. The program recognizes this is the question being asked and since the parameter is less than 3, then the program will display element 4 from “solutions list” that notifies the user that they are doing a good job and that they aren’t emitting too many fossil fuels. The user will also be encouraged to keep it up and a thumbs up image will pop up.
Requirements | Score | Explanation |
---|---|---|
The written response:
|
1 |
The response earned the point for this row, meeting all three criteria:
|
Additional Explanation
8.11.3. Sample 3 - 2021’s Pilot Sample E¶
Row 1: Program Purpose and Function (Video and Response 3A)
Student Response
3a. My program ultimately works to address the issue of screen addiction in society, as users who record their usage are more conscious of their own addiction. My program then tackles the issue head on, as new alternatives to screen usage can be selected with the activities button, mitigating overall screen usage. As can be seen from the illustration of my program, users are able to input the amount of time they spend on their screen each day. This data is collected and can be paused by the users, and resumed at whatever time they continue use of their screen. Then once the user feels that have used a sufficient amount of screen time in a day, they can click the screen free challenge button to output an amount of time to go screen free. They also have the activity button which outputs different activities to try that don’t involve screens.
Requirements | Score | Explanation |
---|---|---|
A.) The video demonstrates the running of the program including: AND B.) The written response: |
1 |
The response earned the point for this row, meeting all six of the criteria:
|
Additional Explanation
Row 2: Data Abstraction (Response 3B)
Student Response
3b. The list “activity” shown here is essential to my program because it contains the data that represents alternatives to screen usage and screen free challenge times. This list of data is essential to reducing screen addiction, and manage the overall complexity of my code. Instead of having several different buttons display alternative activities, the lists allow me to store all the data in one organized location. A procedure is then able to randomly select one of the strings for an index, to ensure that each string is displayed an approximately equal number of times. Without this list and another list that provides time amounts for the activities managing the complexity of the code, I would’ve had to individually enter each string into a separate button, creating redundancy in my code. I also would not have been able to ensure that each string was picked equally, because the individual buttons would not be controlled by the same procedure.
Requirements | Score | Explanation |
---|---|---|
The written response:
|
1 |
The response earned the point for this row, meeting all three of the criteria:
|
Additional Explanation
Row 3: Managing Complexity (Response 3B)
Student Response
3b. The list “activity” shown here is essential to my program because it contains the data that represents alternatives to screen usage and screen free challenge times. This list of data is essential to reducing screen addiction, and manage the overall complexity of my code. Instead of having several different buttons display alternative activities, the lists allow me to store all the data in one organized location. A procedure is then able to randomly select one of the strings for an index, to ensure that each string is displayed an approximately equal number of times. Without this list and another list that provides time amounts for the activities managing the complexity of the code, I would’ve had to individually enter each string into a separate button, creating redundancy in my code. I also would not have been able to ensure that each string was picked equally, because the individual buttons would not be controlled by the same procedure.
Requirements | Score | Explanation |
---|---|---|
The written response:
|
1 |
The response earned the point for this row, meeting both of the criteria:
|
Additional Explanation
Row 4: Procedural Abstraction (Response 3C)
Student Response
3c. The procedure, procedurerunclock, contributes to the overall functionality of my program, as it allows the stopwatch to both run and display the changing time every millisecond. The procedures, working in accordance, use the time parameter to make sure that the time is recorded by the stopwatch, and is then displayed live, when the user clicks the start button. Without the stopwatch it would not be possible for user to record the amount of time they spend on their screen, which is a crucial function to my app. If users are unable to see how much time they spend on their screens then they will not be conscious of their addictions, and therefore not willing or likely to take screen free challenges and try alternative activities. The algorithm accomplishes this task as it utilizes the parameter “time” to get the new time as the clock runs, and then updates this time so that it is displayed in a label. The parameter for time is essential to my algorithm, as procedure run clock would not work without it, and thus procedure display clock could not update either.
Requirements | Score | Explanation |
---|---|---|
The written response:
|
0 |
The response does not earn the point for this row. Because the response contains two code segments, the response must be scored based on the first procedure provided—the procedurerunclock procedure. The response met only one of the two criteria:
|
Additional Explanation
Row 5: Algorithm Implementation (Response 3C)
Student Response
3c. The procedure, procedurerunclock, contributes to the overall functionality of my program, as it allows the stopwatch to both run and display the changing time every millisecond. The procedures, working in accordance, use the time parameter to make sure that the time is recorded by the stopwatch, and is then displayed live, when the user clicks the start button. Without the stopwatch it would not be possible for user to record the amount of time they spend on their screen, which is a crucial function to my app. If users are unable to see how much time they spend on their screens then they will not be conscious of their addictions, and therefore not willing or likely to take screen free challenges and try alternative activities. The algorithm accomplishes this task as it utilizes the parameter “time” to get the new time as the clock runs, and then updates this time so that it is displayed in a label. The parameter for time is essential to my algorithm, as procedure run clock would not work without it, and thus procedure display clock could not update either.
Requirements | Score | Explanation |
---|---|---|
The written response:
|
0 |
The response did not earn the point for this row. Because the response contains two code segments, the response must be scored based on the first procedure provided—the procedurerunclock procedure. The response does not meet either of the two criteria:
|
Additional Explanation
Row 6: Testing (Response 3D and Procedure from 3C)
Student Response
3D. In the two test cases for my procedure the app user spent 30 minutes on their screen both times, before deciding to take a screen free challenge and try an alternative activity. In the first test, the user was directed to take a 60 minute screen free challenge, and try doing their homework instead. In the second test case, the user was directed to take a 120 minute screen free challenge and try visiting their friends instead. In my app the string data was programmed into the code, and each string was selected randomly, meaning that there was no expected CSP 2020 Sample E result for either of the test cases. The conditions being tested are which string will be randomly selected. Once the program selects a string it then joins “Go Screen Free For:” with an amount of time, or “Try this activity:” is joined with an activity. The procedure to do this task accomplishes this goal by selecting a random fraction between 0 and 1, and then each of the six strings corresponds with a fraction. The corresponding string closest to the fraction chosen is then selected and displayed in the label.
Requirements | Score | Explanation |
---|---|---|
The written response:
|
0 |
The response did not earn the point for this row. The response does not meet any of the three criteria:
|
Additional Explanation
8.11.4. Sample 4 - 2019’s Sample H¶
Row 1: Developing a Program with a Purpose (Video and Response 2A)
Student Response
2a.The programming language I used was MIT App Inventor. The purpose of my program is a game where the user clicks pictures of comets to get points within a time limit. My video shows how the game works, and shows what happens when you win and when you lose. It shows how the timer counts down, and how the score increases every time a comet is clicked. If the score reaches 10, then the user wins, If it does not reach 10, the user loses.
Requirements | Score | Explanation |
---|---|---|
A.) The video demonstrates the running of at least one feature of the program submitted. AND B.) The response (audio narration or written response) identifies the purpose of the program (what the program is attempting to do). |
1 |
A.) The video is continuously running and illustrates the running of the program. AND B.) The response states the purpose as "a game where the user clicks pictures of comets to get points within a time limit." |
Additional Explanation
The write up does a nice job of stating, “The purpose of my program…”
Row 2: Developing a Program with a Purpose (Response 2B)
Student Response
2b. To develop this app, I had to figure out a few small things to make sure it would run as intended. One difficulty I encountered was when I was coding the comets. I had to use a random integer procedure, and I did not know which numbers to use for the comets. I had to keep using different numbers and looking at the app to make sure none of the comets ever went off the screen, and then I went between the highest and lowest numbers for both the x and the y coordinates. Another difficulty came up when I wanted to increase the speed of the comets. They were moving whenever the clock ticked, and I tried decreasing the amount of time between each tick. However, there was also a timer feature that counted down the seconds every time the clock ticked, and this was affected with the decreased intervals. To fix this, I added a second clock, and separated the timer from the comets. Both of these were independent program development.
Requirements | Score | Explanation |
---|---|---|
Describes or outlines steps used in the incremental and iterative development process to create the entire program. |
0 |
The response does not address the development process. |
Additional Explanation
Focus on the process for this row of the scoring criteria. The response to section 2b needs to cover both row 2 and row 3 on the scoring criteria. This response tries to cover row 3, but neglects to cover row 2. By keeping a journal of the process, a step-by-step description of the development of the app should be easy to put together for this requirement.
Row 3: Developing a Program with a Purpose (Response 2B)
Student Response
2b. To develop this app, I had to figure out a few small things to make sure it would run as intended. One difficulty I encountered was when I was coding the comets. I had to use a random integer procedure, and I did not know which numbers to use for the comets. I had to keep using different numbers and looking at the app to make sure none of the comets ever went off the screen, and then I went between the highest and lowest numbers for both the x and the y coordinates. Another difficulty came up when I wanted to increase the speed of the comets. They were moving whenever the clock ticked, and I tried decreasing the amount of time between each tick. However, there was also a timer feature that counted down the seconds every time the clock ticked, and this was affected with the decreased intervals. To fix this, I added a second clock, and separated the timer from the comets. Both of these were independent program development.
Requirements | Score | Explanation |
---|---|---|
A.) Specifically identifies at least two program development difficulties or opportunities. AND B.) Describes how the two identified difficulties or opportunities are resolved or incorporated. |
1 |
A.) The response describes two program development difficulties/opportunities AND B.) explains how each was resolved. |
Additional Explanation
Row 4: Applying Algorithms (Response 2C)
Student Response
2c.
Requirements | Score | Explanation |
---|---|---|
Selected code segment implements an algorithm. Indicated by placing an oval around the specific piece of code in the entire program code section. If using the template, a screenshot is provided directly with the response. |
1 |
By the definition of an algorithm, the selected code segment does implement an algorithm. |
Additional Explanation
When selecting an algorithm, please be mindful of the definition. It must be a formula or a set of steps in order to solve a problem. Also be sure the selected algorithm will be sufficient to earn the points awarded for both row 5 and row 6.
Row 5: Applying Algorithms (Response 2C)
Student Response
2c. Whenever the clock ticks, the time variable decreases by one. Also, the timer label is changed to Timer: and the current value of the variable. This makes it so that the screen shows the timer label decreasing by one every second. If the time variable gets to zero, then another screen is opened, and the score variable (which changes from other events in the app) is sent to the new screen. Because of all of this, the time variable counts down every second, which is visible to the user of the app, and once it hits zero, another screen is opened to show the user the result of the game.
Requirements | Score | Explanation |
---|---|---|
A.) Selected code segment implements an algorithm that uses mathematical or logical concepts. AND B.) Explains how the selected algorithm functions AND C.) Describes what the selected algorithm does in relation to the overall program. |
1 |
A.) The selected code segment in this case is the main algorithm - the Clock1.Timer block. It satisfies the math/logic requirement because it uses an If/Else statement with Boolean conditions which counts as logic. The decrementing also counts as math. AND B.)The response explains how the algorithm functions: "the time variable decreases by one ... the timer label is changed." AND C.) The response also describes what the algorithm does in relation to the program: "the time variable counts down every second, which is visible to the user of the app, and once it hits zero, another screen is opened to show the user the result of the game." |
Additional Explanation
To be sure to earn the point for row 5, students must clearly touch on all three of the “and” requirements.
Row 6: Applying Algorithms (Response 2C)
Student Response
2c. Whenever the clock ticks, the time variable decreases by one. Also, the timer label is changed to Timer: and the current value of the variable. This makes it so that the screen shows the timer label decreasing by one every second. If the time variable gets to zero, then another screen is opened, and the score variable (which changes from other events in the app) is sent to the new screen. Because of all of this, the time variable counts down every second, which is visible to the user of the app, and once it hits zero, another screen is opened to show the user the result of the game.
Requirements | Score | Explanation |
---|---|---|
A.) Selected code segment implements an algorithm that includes at least two or more algorithms. AND B.) At least one of the included algorithms uses mathematical or logical concepts. AND C.) Explains how one of the included algorithms functions independently. |
0 |
The response does not identify any sub-algorithms. While the reader may be able to identify sub-algorithms in the main algorithm, the student’s response must clearly identify the sub- algorithms and explain at least one sub-algorithm. |
Additional Explanation
Row 7: Applying Abstraction (Response 2D)
Student Response
2d.
Requirements | Score | Explanation |
---|---|---|
Selected code segment is a student-developed abstraction. Indicated by placing a rectangle around the specific piece of code in the entire program code section. If using the template, a screenshot is provided directly with the response. |
0 |
The response identifies a variable as the abstraction. Variables are explicitly excluded as student-defined
abstractions. |
Additional Explanation
Row 8: Applying Abstraction (Response 2D)
Student Response
2d. The score variable is an abstraction that changes every time a Sprite is touched. If a sprite is touched, the abstraction allows the number to continuously increase by one. At the end of the game, this variable is sent to the next screen. If the value of the variable is greater than 10, the user wins. If it is less than 10, the user loses. This abstraction allows the score to be easily tracked by the user and by the app. Without it, score would not be able to be easily recorded.
Requirements | Score | Explanation |
---|---|---|
Explains how the selected abstraction manages the complexity of the program. |
0 |
The response does not address managing program complexity |
Additional Explanation
8.11.5. Sample 5 - 2018’s Sample E¶
Row 1: Developing a Program with a Purpose (Video and Response 2A)
Student Response
Click here to watch video2a.The program is a study guide app. The program was created in App Inventor 2. The purpose of this app is so that the user can put in whatever terms and definitions they desire and study off them later on flashcards. At first, the user puts in the desired term and definition in the two textboxes and then click submit allowing them to put in different terms and definitions after. When they are finally done, they click the study button which takes away the terms and definitions and just shows the term as a flashcard. Then to see what the definition is, they can click the flash card. The video shows the user plugging in values and later studying them as if there were real flashcards.
Requirements | Score | Explanation |
---|---|---|
A.) The video demonstrates the running of at least one feature of the program submitted. AND B.) The response (audio narration or written response) identifies the purpose of the program (what the program is attempting to do). |
1 |
A.) The video is continuously running and illustrates the running of the program. AND B.) The response states the purpose as allowing the user to "put in whatever terms and definitions they desire and study off them later on flashcards." |
Additional Explanation
While the video shows the running of the app, please be sure to take into consideration the atmosphere in which you record your video. The background noise does not make the student lose points, but it does distract from the focus of the video. The write up does a nice job of stating, “The purpose of the app…”
Row 2: Developing a Program with a Purpose (Response 2B)
Student Response
2b. There were many problems that arose while coding the program. One of the early problems encountered was deciding how I should set up my study guide. For example, I could have chosen to do flashcards along with doing multiple choice. However, I felt that the flash cards would be more effective and efficient way of creating this app. Furthermore, when making this study guide app, I felt that there needed to be something else that could have made the study guide more useful for the reader. Originally, there were just flashcards, but I felt there was something else that could be done. So I included another button that allowed the user to type in the definition as the word was being given. This was a major development addition as it is more effective for the user to write the information than by just looking at cards. This is also more effective for memorization.
Requirements | Score | Explanation |
---|---|---|
Describes or outlines steps used in the incremental and iterative development process to create the entire program. |
0 |
The response does not describe the incremental or iterative process used in developing the entire program. The response focuses on two decisions that were made in determining what would be in the program. A good response would describe the steps taken to develop the program including information about the testing, debugging, and refinement of the program once the initial code was written. |
Additional Explanation
Focus on the process for this row of the scoring criteria. The response to section 2b needs to cover both row 2 and row 3 on the scoring criteria. This response tries to cover row 3, but neglects to cover row 2. By keeping a journal of the process, a step-by-step description of the development of the app should be easy to put together for this requirement.
Row 3: Developing a Program with a Purpose (Response 2B)
Student Response
2b. There were many problems that arose while coding the program. One of the early problems encountered was deciding how I should set up my study guide. For example, I could have chosen to do flashcards along with doing multiple choice. However, I felt that the flash cards would be more effective and efficient way of creating this app. Furthermore, when making this study guide app, I felt that there needed to be something else that could have made the study guide more useful for the reader. Originally, there were just flashcards, but I felt there was something else that could be done. So I included another button that allowed the user to type in the definition as the word was being given. This was a major development addition as it is more effective for the user to write the information than by just looking at cards. This is also more effective for memorization.
Requirements | Score | Explanation |
---|---|---|
A.) Specifically identifies at least two program development difficulties or opportunities. AND B.) Describes how the two identified difficulties or opportunities are resolved or incorporated. |
0 |
A.) The response only describes one program development difficulty/opportunity. AND B.) explains how that one difficulty/opportunity was resolved. The response identifies an opportunity as adding functionality to allow users to enter the "definition as the word was being given." This is resolved by including "another button." The difficulty identified is the decision to use flashcards over multiple choice, which is a design choice, not a program development difficulty. |
Additional Explanation
The lack of clarity in the response led this scorer to not award the point for this row. “One of the early problems I encountered…” is the only part that stuck in the graders mind. After describing that problem and its resolution, the student should have added the phrase, “Then I came across an opportunity to…” This would have redirected the scorer’s attention to check off the requirements from the scoring criteria.
Row 4: Applying Algorithms (Response 2C)
Student Response
2c.
Requirements | Score | Explanation |
---|---|---|
Selected code segment implements an algorithm. Indicated by placing an oval around the specific piece of code in the entire program code section. If using the template, a screenshot is provided directly with the response. |
1 |
By the definition of an algorithm, the selected code segment does implement an algorithm. |
Additional Explanation
When selecting an algorithm, please be mindful of the definition. It must be a formula or a set of steps in order to solve a problem. Also be sure the selected algorithm will be sufficient to earn the points awarded for both row 5 and row 6.
Row 5: Applying Algorithms (Response 2C)
Student Response
2c. This particular algorithm is essential to the program because it allows the user to go to the next flashcard. When the next button is clicked, it displays the label font text and then doesn't show the back text. The index also determined which flashcard that you are on, in which you keep going to the next term as the next button is clicked. Furthermore, if the index is bigger than the number of items in the list then it restarts back to 1, or the first item in the list. This is the same for the other algorithm as they both use an index. One of the independent algorithms makes so that user can type in the term as the other algorithm is displaying the definition as a flashcard. Together as a combination, this makes it so that the user has a study guide environment in which they can type in the necessary term to the definition and then be able to go to the next set of terms.
Requirements | Score | Explanation |
---|---|---|
A.) Selected code segment implements an algorithm that uses mathematical or logical concepts. AND B.) Explains how the selected algorithm functions AND C.) Describes what the selected algorithm does in relation to the overall program. |
1 |
A.) The selected code segment in this case is the main algorithm - the NextButton.click block. It satisfies the math/logic requirement because it uses an If/Else statement with Boolean conditions which counts as logic. AND B.)The response explains how the algorithm works: "When the next button is clicked, it displays the label font text and then doesn't show the back text. The index also determined which flashcard that you are on, in which you keep going to the next term as the next button is clicked. Furthermore, if the index is bigger than the number of items in the list then it restarts back to 1, or the first item in the list. This is the same for the other algorithm as they both use an index." AND C.) The response also describes what the purpose is for this algorithm in relation to the entire program: "allows the user to go to the next flashcard" and "the user has a study guide environment in which they can type in the necessary term to the definition and then be able to go to the next set of terms. |
Additional Explanation
To be sure to earn the point for row 5, students must clearly touch on all three of the “and” requirements. The first is to assure that the algorithm uses mathematical or logical concepts. The if/else block is used in this example meets that requirement. The second part should follow with the step-by-step process of the algorithm. This example doesn’t do a good job of that, but does enough to get the point across. The last requirement is met as it relates the algorithm to the overall program in the introductory sentence. This explicit type of technical writing leaves nothing up to interpretation.
Row 6: Applying Algorithms (Response 2C)
Student Response
2c. This particular algorithm is essential to the program because it allows the user to go to the next flashcard. When the next button is clicked, it displays the label font text and then doesn't show the back text. The index also determined which flashcard that you are on, in which you keep going to the next term as the next button is clicked. Furthermore, if the index is bigger than the number of items in the list then it restarts back to 1, or the first item in the list. This is the same for the other algorithm as they both use an index. One of the independent algorithms makes so that user can type in the term as the other algorithm is displaying the definition as a flashcard. Together as a combination, this makes it so that the user has a study guide environment in which they can type in the necessary term to the definition and then be able to go to the next set of terms.
Requirements | Score | Explanation |
---|---|---|
A.) Selected code segment implements an algorithm that includes at least two or more algorithms. AND B.) At least one of the included algorithms uses mathematical or logical concepts. AND C.) Explains how one of the included algorithms functions independently. |
0 |
A.) The selected code segment includes at least two algorithms that are integrated to create the main algorithm (NextButton). AND B.) The included algorithms all contain If/Else statements with Boolean conditions which count as logical concepts to satisfy the math/logic requirement. AND C.) The response briefly states that one algorithm "makes [it] so that user can type in the term as the other algorithm is displaying the definition as a flashcard." However, it is not clear where each of these algorithms is in the supplied code segment, so it is not clear if these algorithms are included in the identified algorithm. While the reader may be able to identify sub-algorithms in the main algorithm, the student’s response must clearly identify the sub- algorithms and explain at least one sub-algorithm. |
Additional Explanation
Again, covering all three requirements is necessary to earn this point in the scoring criteria- 2 out of 3 did not get the job done on this example. The two integrated algorithms from the overall algorithm are both if/else statements so that covers the first two requirements. While the sentence starter “One of the independent algorithms…” is a great attention-getter for the reader, this example follows it up with an algorithm that is not part of the selected one. Be sure students double-check their continuity to clean up this type of mistake.
Row 7: Applying Abstraction (Response 2D)
Student Response
2d.
Requirements | Score | Explanation |
---|---|---|
Selected code segment is a student-developed abstraction. Indicated by placing a rectangle around the specific piece of code in the entire program code section. If using the template, a screenshot is provided directly with the response. |
1 |
By the definition of abstraction, the selected code segment does implement an abstraction. The abstraction pictured here is a student-developed procedure called procedure. The written response matches the selected code. |
Additional Explanation
The abstraction chosen is a procedure. This is one of the easiest types of abstractions to develop and explain.
Row 8: Applying Abstraction (Response 2D)
Student Response
2d. This particular abstraction is used to determine if the word you type in, is correct. This abstraction uses mathematical concepts by determining if the word you type in and the actual term, are equal. If they do happen to be equal, then this will be shown in the “lblWriteWrong.” Furthermore, this abstraction uses logical concepts by determining if the word the user types in is true, then it will be displayed as correct through the Write Wrong label. However if the word the user types in is a false word, then it will show that it is incorrect through the Write Wrong label. By creating this abstraction it makes the general coding clearer and easier to read as it is already being used once.
Requirements | Score | Explanation |
---|---|---|
Explains how the selected abstraction manages the complexity of the program. |
1 |
The response gives a reason why the abstraction (procedure) manages complexity: "By creating this abstraction it makes the general coding clearer and easier to read as it is already being used once." |
Additional Explanation
While this explanation does a good job of telling what the procedure does, it waits until the last sentence to earn the point. Giving the reader the reasons “...makes the general coding clearer and easier to read…” effectively illustrates the managing of the complexity. It also subtly points out how it reduces redundancy.
8.11.6. Sample 6 - 2017’s Sample A¶
Row 1: Developing a Program with a Purpose (Video and Response 2A)
Student Response
2a. Narration in video Note: This video is no longer available from the College Board.
Requirements | Score | Explanation |
---|---|---|
A.) The video demonstrates the running of at least one feature of the program submitted. AND B.) The response (audio narration or written response) identifies the purpose of the program (what the program is attempting to do). |
1 |
A.) The video is a continuous running of the program that demonstrates several features (i.e. log in, review, add entries) in under a minute. AND B.) The response (in this case the audio narration) matches the video and indicates that the purpose of the program is “to allow users to have an app where they can privately journal about their day” |
Additional Explanation
The video and narration are well planned out and executed. It is simple and yet thoroughly explains the app. The two things to remember the difference between are purpose and function. Purpose is the intended goal or objective of the program. Function is how the program works.
Row 2: Developing a Program with a Purpose (Response 2B)
Student Response
2b. Being unfamiliar with Firebase’s structure, I encountered a problem while programming when I tried to include a 3rd Firebase database. Upon the addition of the component and the corresponding coding elements, my app could no longer be packaged or loaded onto a device for testing. My app would always crash while loading. Unable to find a clear syntax error, I resolved the issue by debugging and deleting portions of the code until the app would finally successfully load and then reprogramming the deleted portions of code. Another difficulty I encountered was transferring variables across screens in order to access the correct user’s data. Opening a new screen in App Inventor would clear the values of the variable on the device, which would render them unusable on the next screen. I resolved this independently by assembling the contents of each screen into its own arrangement, and utilizing the .visible property of these arrangements to make them appear and disappear, providing the illusion of multiple screens and allowing the accessed variable values to be consistent across all “screens”.
Requirements | Score | Explanation |
---|---|---|
Describes or outlines steps used in the incremental and iterative development process to create the entire program. |
0 |
The response only describes the development at two specific points in time. The response lacks discussion of the overall development process of the app. A good response would describe the steps taken to develop the program including information about the testing, debugging, and refinement of the program once the initial code was written. |
Additional Explanation
Students should focus on conveying the overall process of the app development. Clearly defining the start and finish of the process while touching on important milestones along the way is very important to this response.
Row 3: Developing a Program with a Purpose (Response 2B)
Student Response
2b. Being unfamiliar with Firebase’s structure, I encountered a problem while programming when I tried to include a 3rd Firebase database. Upon the addition of the component and the corresponding coding elements, my app could no longer be packaged or loaded onto a device for testing. My app would always crash while loading. Unable to find a clear syntax error, I resolved the issue by debugging and deleting portions of the code until the app would finally successfully load and then reprogramming the deleted portions of code. Another difficulty I encountered was transferring variables across screens in order to access the correct user’s data. Opening a new screen in App Inventor would clear the values of the variable on the device, which would render them unusable on the next screen. I resolved this independently by assembling the contents of each screen into its own arrangement, and utilizing the .visible property of these arrangements to make them appear and disappear, providing the illusion of multiple screens and allowing the accessed variable values to be consistent across all “screens”.
Requirements | Score | Explanation |
---|---|---|
A.) Specifically identifies at least two program development difficulties or opportunities. AND B.) Describes how the two identified difficulties or opportunities are resolved or incorporated. |
1 |
A.) The response describes two program development difficulties/opportunities AND B.) explains how each was resolved. The first difficulty is that when including a third Firebase database, the program could no longer be packaged or loaded onto a device for testing. This is resolved by deleting portions of the code until the app worked, and then adding back in the deleted portions. The second difficulty is transferring variables across screens. This is resolved by using the visible property of these arrangements to make them appear and disappear, providing the illusions of multiple screens. |
Additional Explanation
Students should explicitly label their opportunities or difficulties as done in this example. Adding the sentence structures “the first…” and “the second…” also makes it unmistakeable for the grader to identify. The way the student points out the resolution of the difficulties is spot-on by specifically using the phrase “I resolved”.
Row 4: Applying Algorithms (Response 2C)
Student Response
2c.
Requirements | Score | Explanation |
---|---|---|
Selected code segment implements an algorithm. Indicated by placing an oval around the specific piece of code in the entire program code section. If using the template, a screenshot is provided directly with the response. |
1 |
By the definition of an algorithm, the selected code segment does implement an algorithm. |
Additional Explanation
By providing a screenshot of the algorithm, the student simplified the process of identifying the algorithm. Students need to be very careful to select an algorithm that fills the requirements for both rows 5 and 6.
Row 5: Applying Algorithms (Response 2C)
Student Response
2c. As my program uses Firebase databases to store user data, AccountDB.GotValue is an important algorithm as it handles all data retrieved from the account database such as users and passwords. Because Firebase data requests are handled asynchronously to the program, it is necessary that when data is sent back from Firebase, the algorithm examines the tag and values sent back in order to properly redirect the program to either proceed with a login or create account procedure. One of the integrated algorithms is the procedure called loginProcedure (above). When called, the procedure loginProcedure will login in the user and load up the user’s diary entries if the correct password is entered. Otherwise, an error message will appear and the user will have to try again. The procedure createAccount shown above is another integrated algorithm that helps create a user’s account and mark the designated locations for the user’s data in Firebase given that they had provided a valid password and an unique username. The integration of the two procedures createAccount and loginProcedure helps the overall algorithm perform and regulate the core functions of the login screen of creating accounts and logging in.
Requirements | Score | Explanation |
---|---|---|
A.) Selected code segment implements an algorithm that uses mathematical or logical concepts. AND B.) Explains how the selected algorithm functions AND C.) Describes what the selected algorithm does in relation to the overall program. |
1 |
A.) The selected code segment in this case is the main algorithm - the AccountDB.GotValue block. It satisfies the math/logic requirement because it uses an If/Else statement with Boolean conditions which counts as logic. AND B.) The response explains how the algorithm functions by stating it “examines the tag and values sent back in order to properly redirect the program to either proceed with a login or create account procedure”. AND C.) The response describes what the algorithm does in relation to the overall purpose of the program (stores user data). |
Additional Explanation
Students should take the time to explicitly describe the logical or mathematical concepts used in the design of the algorithm. This statement, “redirect the program to either proceed with a login or create account procedure.” talks about the selection process, but could put more emphasis on it being the logical part of the algorithm. Great use of the phrase “the algorithm examines” points out the function of it. To show the relation to overall program, this example uses another great sentence structure “...is an important algorithm as it handles...”
Row 6: Applying Algorithms (Response 2C)
Student Response
2c. As my program uses Firebase databases to store user data, AccountDB.GotValue is an important algorithm as it handles all data retrieved
from the account database such as users and passwords. Because Firebase data requests are handled asynchronously to the program, it is
necessary that when data is sent back from Firebase, the algorithm examines the tag and values sent back in order to properly redirect the
program to either proceed with a login or create account procedure.
One of the integrated algorithms is the procedure called loginProcedure (above). When called, the procedure loginProcedure will login in the
user and load up the user’s diary entries if the correct password is entered. Otherwise, an error message will appear and the user will have to
try again.
The procedure createAccount shown above is another integrated algorithm that helps create a user’s account and mark the designated locations
for the user’s data in Firebase given that they had provided a valid password and an unique username. The integration of the two procedures
createAccount and loginProcedure helps the overall algorithm perform and regulate the core functions of the login screen of creating accounts
and logging in.
Requirements | Score | Explanation |
---|---|---|
• A.) Selected code segment implements an algorithm that includes at least two or more algorithms. AND • B.) At least one of the included algorithms uses mathematical or logical concepts. AND • C.) Explains how one of the included algorithms functions independently. |
1 |
A.) The selected code segment includes two algorithms (loginProcedure and createAccount procedures) that are integrated to create a new main algorithm (account access). AND B.) Both of the included procedures contain If/Else statements with Boolean conditions which count as logical concepts to satisfy the math/logic requirement. AND C.) The response explains how the loginProcedure procedure functions (“login in the user and load up the user’s diary entries if the correct password is entered. Otherwise, an error message will appear and the user will have to try again.”) |
Additional Explanation
The statement “One of the integrated algorithms…” is a great way to call attention to the requirements for this part of the scoring criteria. When it comes to the logical/mathematical concepts, this response leaves a lot to the imagination and only states “ load up the user’s diary entries if the correct password is entered”. By explicitly stating “My program uses logic to determine…”, one can take the guesswork out of awarding points for the grader. This example does a nice job of explaining how both procedures do their work independently, but then also connects what they do in the conclusion.
Row 7: Applying Abstraction (Response 2D)
Student Response
2d. One abstraction I developed to manage the complexity of my code was the procedure loadUserEntryData. loadUserEntryData helps populate a list of user’s entries and is called multiple times throughout the program using different (albeit only slightly) parameters. Implementing this abstraction improves the readability of the code by reducing redundancy and the overall line count. Instead of repeating the nine lines of code in every place, I would only need to call the procedure loadUserEntryData. In addition, this abstraction manages complexity as any future changes that need to be made to loading user entry data can be done in a single place. Overall, this abstraction was a helpful in managing redundancy, length of code, editability, and overall complexity.
Requirements | Score | Explanation |
---|---|---|
Selected code segment is a student-developed abstraction. Indicated by placing a rectangle around the specific piece of code in the entire program code section. If using the template, a screenshot is provided directly with the response. |
1 |
By the definition of abstraction, the selected code segment does implement an abstraction. The abstraction pictured here is a student-developed procedure called loadUserEntryData. The written response matches the selected code. |
Additional Explanation
The abstraction chosen is a procedure. This is one of the easiest types of abstractions to develop and explain.
Row 8: Applying Abstraction (Response 2D)
Student Response
2d. One abstraction I developed to manage the complexity of my code was the procedure loadUserEntryData. loadUserEntryData helps populate a list of user’s entries and is called multiple times throughout the program using different (albeit only slightly) parameters. Implementing this abstraction improves the readability of the code by reducing redundancy and the overall line count. Instead of repeating the nine lines of code in every place, I would only need to call the procedure loadUserEntryData. In addition, this abstraction manages complexity as any future changes that need to be made to loading user entry data can be done in a single place. Overall, this abstraction was a helpful in managing redundancy, length of code, editability, and overall complexity.
Requirements | Score | Explanation |
---|---|---|
Explains how the selected abstraction manages the complexity of the program. |
1 |
The response indicates that the abstraction (procedure loadEntryData) “manages complexity as any future changes that need to be made to loading user entry data can be done in a single place. Overall, this abstraction was helpful in managing redundancy, length of code, edit ability, and overall complexity.” |
Additional Explanation
This response is very well written. It hits on several examples that would earn the point for the scoring criteria. One simple example is “Instead of repeating the nine lines of code in every place, I would only need to call the procedure loadUserEntryData.”