the course, but not necessarily the sequence. The topics in the right-hand column will not be tested on the Computer Science A examination.
A. Program design
|
|
|
Computer Science A and AB
|
Computer Science AB only
|
|
1.
Read and understand a problem description purpose, and goals.
|
1.
Specify the purpose and goals, for a problem.
|
|
2.
Apply data abstraction and encapsulation
|
|
|
3.
Read and understand class specifications and relationships (“is-a,” ”has-a”
relationships).
|
3.
Decompose a problem into classes; define relationships among the classes
and responsibilities of those classes.
|
|
4.
Understand and implement a given class hierarchy.
|
|
|
5.
Identify reusable components from existing code using classes and class
libraries.
|
|
|
B.
Class design
|
|
|
Computer Science A and AB
|
Computer Science AB only
|
|
1.
Design and implement a class
|
1.
Design and implement a set of interacting classes.
|
|
2.
Design an interface.
|
|
|
3.
Choose appropriate data representation and algorithms.
|
3.
Choose appropriate advanced data structures and algorithms.
|
|
4.
Apply functional decomposition.
|
|
|
5.
Extend a given class using inheritance.
|
|
.
A. Implementation techniques
|
|
|
Computer Science A and AB
|
Computer Science AB only
|
|
1.
Methodology
a. Object-oriented development b. Top-down development c. Encapsulation and information hiding d. Procedural abstraction |
|
B. Programming constructs |
|
|
Computer Science A and AB
|
Computer Science AB only
|
|
1.
Primitive types vs. objects
2. Declaration a. Constant declarations b. Variable declarations c. Class declarations d. Interface declarations e. Method declarations f. Parameter declarations |
|
|
3.
Console output (System.out.print/println)
|
|
|
4.
Control
a. Methods b. Sequential c. Conditional d. Iteration e. Recursion |
|
C. Java library classes |
C. Java library classes |
|
(included
in the A level AP Java Subset)
|
(included
in the AB level AP Java Subset)
|
|
|
|
|
|
|
|
|
|
|
|
|
A. Testing |
|
|
Computer Science A and AB
|
Computer Science AB only
|
|
1. Test classes and libraries in isolation
|
|
|
2. Identify boundary cases and generate appropriate
test data
|
|
|
3. Perform integration testing
|
|
B. Debugging |
|
|
Computer Science A and AB
|
Computer Science AB only
|
|
1. Categorize errors: compile-time, run-time, logic
|
|
|
2. Identify and correct errors
|
|
|
3. Techniques: use a debugger, add extra output
statements, hand-trace code
|
|
C. Understand and modify existing code |
|
|
D.
Extend existing code using inheritance
|
|
E. Understand error handling |
|
|
1. Understand runtime exceptions
|
|
|
|
2. Throw runtime exceptions
|
F. Reason about programs |
|
|
1. Pre- and post-conditions
|
|
|
2. Assertions
|
|
|
|
3. Invariants
|
G. Analysis of algorithms |
|
|
1. Informal comparisons of running times
|
|
|
2. Exact calculation of statement execution counts
|
|
|
|
|
|
|
4. Worst-case and average-case time and space analysis
|
H. Numerical representations and limits |
|
|
1. Representations of numbers in different bases
|
|
|
2. Limitations of finite representations (e.g.,
integer bounds, imprecision of floating-point representations, and roundoff
error)
|
|
data structures.
|
Computer Science A and AB
|
Computer Science AB only
|
|
A. Simple data types (int, boolean, double)
|
|
|
B. Classes
|
|
|
C. One-dimensional arrays
|
|
|
|
D. Two-dimensional arrays
|
|
|
E. Linked lists (singly, doubly, circular)
|
|
|
F. Stacks
|
|
|
G. Queues
|
|
|
H. Trees
|
|
|
I. Heaps
|
|
|
J. Priority queues
|
|
|
K. Sets
|
|
|
L. Maps
|
|
|
|
|
A.
Operations on A-level data structures previously listed
|
A.
Operations on AB-level data structures previously listed
|
|
1. Traversals
|
1. Traversals
|
|
2. Insertions
|
2. Insertions
|
|
3. Deletions
|
3. Deletions
|
|
|
4. Iterators
|
|
B.
Searching
|
|
|
1. Sequential
|
|
|
2. Binary
|
|
|
|
3. Hashing
|
|
C.
Sorting
|
|
|
1. Selection
|
|
|
2. Insertion
|
|
|
3. Mergesort
|
|
|
|
4. Quicksort
|
|
|
5. Heapsort
|
A. Major hardware components |
|
|
1. Primary and secondary memory
|
|
|
2. Processors
|
|
|
3. Peripherals
|
|
|
B.
System
software
|
|
|
1. Language translators/compilers
|
|
|
2. Virtual machines
|
|
|
3. Operating systems
|
|
|
C.
Types of systems
|
|
|
1. Single-user systems
|
|
|
2. Networks
|
|
|
D.
Responsible use of computer systems
|
|
|
1. System reliability
|
|
|
2. Privacy
|
|
|
3. Legal issues and intellectual property
|
|
|
4. Social and ethical ramifications
|
|