Written Response 2: Algorithms, errors and testing, and abstraction
Finding lost packets
- Units 3 and 4
- 3 points
- About 45 minutes
Three prompts about the program's code. (a) Algorithm development: explain how a loop or condition works, such as how many times a loop runs or what makes it stop. (b) Errors and testing: describe a call, input or change that causes an error or wrong behavior and explain why. (c) Data and procedural abstraction: explain how the list or procedure manages complexity, or explain, step by step, an algorithm that uses the list. On the exam: Question 2 of 2 (3 points: parts (a), (b) and (c) are worth 1 point each). Section II has 2 written-response questions (4 prompts) in 60 minutes, taken in Bluebook at the end-of-course exam; no calculator. On the real exam the questions are about your own Create performance task program, and you can see your Personalized Project Reference (screenshots of your procedure and list code). The Create task is 30% of the AP score, scored on 6 one-point rows: video, program requirements, WR1, WR2(a), WR2(b) and WR2(c). On this site you answer the same kinds of prompts about a short sample program given with the question.
The question and its sources
Answer parts (a), (b) and (c) about the sample program below. On the exam these prompts are about your own Create task program and your Personalized Project Reference; here, the code segments below play that role. Refer to the specific code in every answer, and write in complete sentences.
About the program
A file is split into packets numbered 1, 2, 3, … up to total. The packets travel across the internet separately and can arrive in any order. Every file has at least one packet.
The receiving computer's program reads the total number of packets, then each packet number received, ending with 0. findMissing is supposed to return every packet number from 1 to total that was not received, so those packets can be requested again.
Example: total 6, with packets 3, 1, 5 and 2 received, displays Send again: 4.
Source: Sample program written for this practice question (hypothetical)
Procedure: findMissing
PROCEDURE findMissing(received, total)
{
missing ← []
seq ← 1
REPEAT UNTIL(seq = total)
{
found ← false
FOR EACH num IN received
{
IF(num = seq)
{
found ← true
}
}
IF(NOT found)
{
APPEND(missing, seq)
}
seq ← seq + 1
}
RETURN(missing)
}Source: Sample program written for this practice question (hypothetical)
List: storing the packet numbers in received
received ← []
total ← INPUT()
packet ← INPUT()
REPEAT UNTIL(packet = 0)
{
APPEND(received, packet)
packet ← INPUT()
}Source: Sample program written for this practice question (hypothetical)
Calling the procedure and using the list
toResend ← findMissing(received, total)
IF(LENGTH(toResend) = 0)
{
DISPLAY("File complete")
}
ELSE
{
DISPLAY("Send again:")
FOR EACH num IN toResend
{
DISPLAY(num)
}
}Source: Sample program written for this practice question (hypothetical)
Suggested time: 45 minutes
Your answers are saved in this browser as you type.
Part (a)
1 pointConsider the first iteration statement in findMissing (the REPEAT UNTIL loop). Identify the variable(s) that determine when it stops, and the specific value(s) that make it stop for the example (total = 6). Explain why those value(s) cause it to stop.
0 / 2,500 characters
Part (b)
1 pointWrite a call to findMissing with specific argument(s) that the procedure accepts but that cause it to behave incorrectly. Describe the incorrect behavior, and explain why it happens as a result of your call. If no call with accepted arguments can make findMissing behave incorrectly, explain why.
0 / 2,500 characters
Part (c)
1 pointExplain how the procedure findMissing manages complexity in this program.
0 / 2,500 characters
Checking scoring…
Scoring it yourself shows you the rubric, examples and a model answer. Try writing your answer first.