AP Computer Science Topic Outline

 

Following is an outline of the major topics covered by the AP Examinations in Computer Science. This outline is intended to define the scope of

the course, but not necessarily the sequence. The topics in the right-hand column will not be tested on the Computer Science A examination.

 

I. Object-Oriented Program Design 

The overall goal for designing a piece of software (a computer program) is to correctly solve the given problem. At the same time, this goal should encompass specifying and designing a program that is understandable, can be adapted to changing circumstances, and has the potential to be reused in whole or in part. The design process needs to be based on a thorough understanding of the problem to be solved.


 

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.

.

II. Program Implementation 

The overall goals of program implementation parallel those of program design. Classes that fill common needs should be built so that they can be reused easily in other programs. Object-oriented design is an important part of program implementation.


 

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)

III. Program Analysis

The analysis of programs includes examining and testing programs to determine whether they correctly meet their specifications. It also includes the analysis of programs or algorithms in order to understand their time and space requirements when applied to different data sets.

 

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) 

IV. Standard Data Structures

Data structures are used to represent information within a program. Abstraction is an important theme in the development and application of

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

V. Standard Algorithms

Standard algorithms serve as examples of good solutions to standard problems. Many are intertwined with standard data structures. These algorithms provide examples for analysis of program efficiency.


 
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
1. Selection
2. Insertion
3. Mergesort
4. Quicksort
5. Heapsort

VI. Computing in Context

A working knowledge of the major hardware and software components of computer systems is necessary for the study of computer science, as is the awareness of the ethical and social implications of computing systems. These topics need not be covered in detail, but should be considered throughout the course.


 

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