AP CSP Big Idea 1 Creative Development
AP CSP Big Idea 1: Creative Development — Complete Study Guide
Exam Weight: 10–13% • Approximately 7–9 Questions • 2025–2026 AP Exam
Table of Contents
Collaboration in Program Development
The AP CSP curriculum emphasizes that programming is a collaborative activity. Working with others produces better software because different people bring different perspectives, catch different errors, and contribute different strengths.
Why Collaboration Matters
A team with diverse backgrounds — including people of different genders, ethnicities, and academic disciplines — is more likely to notice problems that a homogeneous team would miss. For example, a developer who uses assistive technology is more likely to notice that an app is not accessible to users with disabilities.
How Programmers Collaborate
Common collaboration strategies on the AP exam include:
- Online collaboration tools — shared documents, version control (like Git), comment threads
- Pair programming — one person writes code while the other reviews it in real time
- Code reviews — teammates examine each other's code before it is merged
- Project management tools — tracking tasks, assigning work, setting milestones
Intellectual Property in Collaboration
When working in teams or using outside resources, intellectual property considerations apply:
- Open-source software can be freely used, modified, and distributed under specific license terms
- Using someone else's code without attribution or in violation of a license is a problem even in collaborative settings
- Creative Commons licenses specify what others can do with a creator's work
The Program Development Process
Programs are not written in a single pass. Professional software development is iterative, meaning developers repeatedly cycle through designing, building, testing, and refining their work.
Iterative vs. Linear Development
| Iterative Development | Linear (Waterfall) Development |
|---|---|
| Design → Build → Test → Refine → repeat | All planning done upfront, then all building, then all testing |
| Adjusts to new information and feedback | Hard to incorporate changes after a phase is complete |
| Errors caught earlier, cheaper to fix | Errors discovered late, expensive to fix |
| Better for complex, evolving projects | Better for well-defined, stable requirements |
The Development Cycle
An iterative development cycle typically includes these phases:
- Investigating and reflecting — understand the problem, identify requirements
- Designing — plan the program's structure, algorithms, and data
- Prototyping — build a working version, even if incomplete
- Testing — run the program, find bugs, and evaluate against requirements
These phases repeat. A prototype is tested, the results inform a new design, and the cycle continues until the program meets its goals.
Using Existing Code
Good developers do not reinvent the wheel. Programs are often built by:
- Using libraries and APIs that provide pre-built functionality
- Adapting existing programs or code segments
- Combining components from multiple sources
Types of Programming Errors
One of the most tested topics in Big Idea 1 is identifying and classifying programming errors. There are three types, and the exam will give you a scenario or code snippet and ask which type of error it represents.
| Error Type | What It Is | When It Appears | Example |
|---|---|---|---|
| Syntax Error | Violates the rules of the programming language's grammar | Program won't run at all; caught before execution | Missing a closing bracket, misspelled keyword |
| Logic Error | Program runs but produces the wrong output | During or after execution; no crash occurs | Using < instead of ≤, wrong formula, off-by-one in a loop |
| Runtime Error | Program crashes while running due to an invalid operation | During execution when invalid data is encountered | Dividing by zero, accessing a list index that does not exist |
Identifying Errors: Practice
The exam often presents a small piece of pseudocode and asks you to identify the error type. Use this approach:
- Does the code break a language rule so it cannot even start? → Syntax
- Does the code run but produce a wrong result? → Logic
- Does the code crash mid-run (divide by zero, bad index, etc.)? → Runtime
A student writes a procedure to calculate the average of a list. When the list has items, it works correctly. But when the list is empty, the program crashes.
Answer: Runtime error — dividing by zero (the list length is 0) causes a crash during execution. The program runs fine under normal conditions but fails when it encounters an edge case.
Testing Strategies
Testing is how developers verify that a program behaves correctly. Good testing requires choosing input values strategically — not just inputs that work, but inputs that might reveal hidden bugs.
Types of Test Cases
| Test Type | Description | Purpose |
|---|---|---|
| Expected (Normal) Input | Typical, valid values the program should handle | Confirms basic functionality works |
| Boundary Input | Values at the edges of the valid range (minimum, maximum, exactly at a threshold) | Reveals off-by-one errors and edge cases |
| Unexpected (Invalid) Input | Values the program was not designed to handle (empty string, negative number, zero) | Tests how the program handles bad data |
What Testing Can and Cannot Prove
This is a subtle but important concept for the AP exam:
- Testing can show that a program contains errors (if a test fails)
- Testing cannot prove a program is completely correct — there may be untested inputs that cause failures
- The more diverse and comprehensive the test cases, the more confidence you have in the program
Test-Driven Development
Some developers write test cases before writing the program. This ensures the program meets its requirements by design. The AP exam may describe this approach as a way to clarify requirements early.
Documentation and Comments
Documentation makes programs readable, maintainable, and shareable. Well-documented code allows other developers (or your future self) to understand what the program does and how it works without having to trace every line.
Types of Comments
| Comment Type | Purpose | Example |
|---|---|---|
| Inline Comment | Explains a specific line or section of code | // multiply by 2 to convert diameter to radius |
| Procedure Header Comment | Describes what a function does, what it takes as input, and what it returns | Comment above a function listing its parameters and return value |
| Program-Level Comment | Describes the overall purpose of the program | Comment at the top of the file explaining the program's goal |
What Documentation Should Include
- The purpose of the program or procedure
- What inputs a procedure expects and what output it returns
- Any preconditions (what must be true before the procedure is called)
- The programmer's name and the date the code was written or updated
// increment x by 1 next to x ← x + 1) add no value. Good comments explain the why, not just the what.
// add 1 to score — this just repeats the codeStrong comment:
// award 1 point for each correct answer; incorrect answers receive no penalty — this explains the purpose and design decision
Limitations of Documentation
Documentation describes intended behavior but does not guarantee correctness. A comment saying "this function returns the maximum value" does not mean the code actually does that — only testing can verify that.
Key Vocabulary
| Term | Definition |
|---|---|
| Iterative development | A development process that cycles repeatedly through design, build, test, and refine stages |
| Collaboration | Working with others to produce a shared outcome; brings diverse perspectives that improve quality |
| Syntax error | An error that violates the grammatical rules of the programming language; prevents the program from running |
| Logic error | An error where the program runs but produces incorrect output due to a flaw in the algorithm |
| Runtime error | An error that causes the program to crash during execution when an invalid operation is attempted |
| Test case | A specific input used to evaluate whether a program produces the expected output |
| Boundary input | A test value at the edge of the valid range (minimum, maximum, or exactly at a threshold) |
| Documentation | Written explanations within or alongside code that describe what a program or procedure does |
| Abstraction | Hiding the complexity of implementation details so users (or other programmers) only need to know what something does, not how it works |
| Prototype | An early, working version of a program used for testing and feedback before the final version is built |
| Pair programming | A collaboration technique where one person writes code and another reviews it in real time |
| Open source | Software whose source code is publicly available and can be freely used, modified, and shared |
AP Exam-Style Practice Questions
These questions are written in AP exam style. Predict your answer before revealing it.
Question 1
A programmer writes a procedure that is supposed to calculate the average of all values in a list. When tested with a list of five numbers, the procedure always returns a value that is too large. The procedure does not crash. Which type of error does this describe?
- (A) Syntax error, because the code violates the language's grammar rules
- (B) Logic error, because the program runs but produces an incorrect result
- (C) Runtime error, because the program crashes while calculating the average
- (D) Documentation error, because the procedure is not commented correctly
Show Answer & Explanation
Answer: B — Logic error
The program runs without crashing, which rules out syntax and runtime errors. Since it produces an incorrect result (too large), there is a flaw in the algorithm — this is a logic error. A common cause would be using the wrong formula or failing to divide by the correct count. Slash the trash: eliminate (A) because the program runs, and (C) because it does not crash.
Question 2
Which of the following best explains why using diverse teams when developing software is beneficial?
- (A) Diverse teams require less time to complete a project because more people can work in parallel
- (B) Diverse teams are required by law when developing commercial software products
- (C) Diverse teams are more likely to identify potential issues that a homogeneous team might overlook
- (D) Diverse teams produce programs that run faster because they use more efficient algorithms
Show Answer & Explanation
Answer: C
The key benefit of diverse teams in the AP CSP curriculum is broader perspective — people from different backgrounds notice different potential problems. (A) is not necessarily true; more people can mean more coordination overhead. (B) is false. (D) has nothing to do with team diversity.
Question 3 — Select TWO answers
A student is developing a program that accepts a user's age as input and calculates a discount. Which of the following test inputs represent effective testing strategies? Select TWO.
- (A) Testing with an age of 0 and an age of 150 to check boundary behavior
- (B) Testing with a typical age of 30 only, since most users will be around that age
- (C) Testing with a negative number and a letter to check how the program handles invalid input
- (D) Testing the program only after it is fully complete to avoid disrupting the development process
Show Answer & Explanation
Answers: A and C
(A) Tests boundary values — exactly what good testing requires. Edge cases like 0 and very large values often reveal off-by-one errors in discount calculations. (C) Tests unexpected inputs (invalid data), which checks whether the program handles bad input gracefully. (B) tests only one normal input, which is insufficient. (D) delays testing until the end — iterative development favors testing throughout, not only at the end.
Question 4 — I, II, and III format
A team is developing a mobile app and chooses an iterative development process. Which of the following statements about iterative development are true?
I. Iterative development allows the team to incorporate feedback after each cycle.
II. Iterative development guarantees that the final program will be error-free.
III. Iterative development helps catch errors earlier in the process than a purely linear model.
- (A) I only
- (B) I and II only
- (C) I and III only
- (D) I, II, and III
Show Answer & Explanation
Answer: C — I and III only
Statement I is true: iterative development explicitly includes feedback loops that allow design adjustments between cycles. Statement III is true: testing happens repeatedly throughout development, so errors surface earlier and are cheaper to fix. Statement II is false: no development process guarantees error-free software — testing can only show the presence of errors, not prove their absence. Since II is false, eliminate (B) and (D).
Question 5
A programmer adds the following comment above a procedure:
"This procedure takes a list of test scores and returns the highest score in the list."
A second programmer uses this procedure in their program. Later, the second programmer discovers that the procedure actually returns the lowest score, not the highest. What does this situation best illustrate?
- (A) The first programmer made a syntax error by writing an incorrect comment
- (B) Comments are unnecessary because they only add clutter to code
- (C) The second programmer should have written their own version of the procedure to avoid this problem
- (D) Documentation describes intended behavior but does not guarantee that the implementation is correct
Show Answer & Explanation
Answer: D
This is a key AP CSP concept: documentation and comments describe what a program is supposed to do, not what it actually does. The comment was wrong, or the code had a logic error — either way, the documentation did not match the behavior. Only testing would have revealed this discrepancy. (A) is wrong because comments are not subject to syntax rules. (B) is wrong; comments are valuable even if this one was incorrect. (C) misses the point entirely.
Get in Touch
Whether you're a student, parent, or teacher — I'd love to hear from you.
Just want free AP CS resources?
Enter your email below and check the subscribe box — no message needed. Students get daily practice questions and study tips. Teachers get curriculum resources and teaching strategies.
Message Sent!
Thanks for reaching out. I'll get back to you within 24 hours.
Prefer email? Reach me directly at [email protected]