Skip to main content

Written Response 2: Algorithms, errors and testing, and abstraction

Home internet survey

  • Units 2, 3 and 5
  • 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 town surveys households about home internet. Each response is the household's download speed in megabits per second (Mbps); 0 means the household has no home internet. The survey worker types -1 after the last response.

surveySummary returns a two-item list: the number of households with no home internet, then the number whose speed is below the goal. The town's goal is 100 Mbps.

Example: the responses 0, 40, 150, 0, 300 and 25 display No home internet: 2 Below goal speed: 2.

Source: Sample program written for this practice question (hypothetical)

Procedure: surveySummary

Pseudocode
PROCEDURE surveySummary(speeds, goal)
{
    noAccess ← 0
    slow ← 0
    FOR EACH s IN speeds
    {
        IF(s = 0)
        {
            noAccess ← noAccess + 1
        }
        ELSE
        {
            IF(s < goal)
            {
                slow ← slow + 1
            }
        }
    }
    summary ← [noAccess, slow]
    RETURN(summary)
}

Source: Sample program written for this practice question (hypothetical)

List: storing the responses in speeds

Pseudocode
speeds ← []
response ← INPUT()
REPEAT UNTIL(response = -1)
{
    APPEND(speeds, response)
    response ← INPUT()
}

Source: Sample program written for this practice question (hypothetical)

Calling the procedure and using the list

Pseudocode
results ← surveySummary(speeds, 100)
DISPLAY("No home internet:")
DISPLAY(results[1])
DISPLAY("Below goal speed:")
DISPLAY(results[2])

Source: Sample program written for this practice question (hypothetical)

Suggested time: 45 minutes

Your answers are saved in this browser as you type.

Something wrong with this question?

What's wrong?

Please don't include personal details.

Part (a)

1 point

Consider the iteration statement in the List section (the loop that stores the responses). Identify the variable and the specific value that make it stop, and explain why that value stops it. Explain also why that value is never stored in speeds.

0 / 2,500 characters

Part (b)

1 point

Write two calls to surveySummary that each cause a different code segment in the procedure to execute. For each call, describe what the procedure does and what it returns.

0 / 2,500 characters

Part (c)

1 point

The town also wants the average download speed of the households that have home internet. Using the list speeds, explain in detailed steps an algorithm that finds this average, and give the result for the example responses. Your explanation must be detailed enough for someone else to write the program code.

0 / 2,500 characters

Checking scoring…

Scoring it yourself shows you the rubric, examples and a model answer. Try writing your answer first.