1. Read and understand a problem description, purpose, and goals.
2. Apply data abstraction and encapsulation.
3. Read and understand class specifications and relationships among the classes
(“is-a,” “has-a” relationships).
4. Understand and implement a given class hierarchy.
5. Identify reusable components from existing code using classes and class
1.2 Class Design
1. Design and implement a class.
2. Choose appropriate data representation and algorithms.
3. Apply functional decomposition.
4. Extend a given class using inheritance.
2 Program Implementation
2.1 Programming constructs
2.1.1 Primitive types vs. objects
a. Constant declarations
b. Variable declarations
c. Class declarations
d. Interface declarations
e. Method declarations
f. Parameter declarations
2.1.3 Console output (System.out.print/println)
e. Understand and evaluate recursive methods
2.2 Implementation Techniques
a. Object-oriented development
b. Top-down development
c. Encapsulation and information hiding
d. Procedural abstraction
2.3 Java library classes (included in the AP Java subset)
3 Program Analysis
1. Categorize errors: compile-time, run-time, logic.
2. Identify and correct errors.
3. Employ techniques such as using a debugger, adding extra output statements,
3.2 Understand and modify existing code
3.3 Extend existing code using inheritance
3.4 Understand error handling
Understand runtime exceptions
3.5 Reason about prograing
1. Pre- and post-conditions
3.6 Analysis of algorithms
1. Informal comparisons of running times
2. Exact calculation of statement execution counts
3.7 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 round-off error)
1. Test classes and libraries in isolation.
2. Identify boundary cases and generate appropriate test data.
3. Perform integration testing.
4 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.
4.1 Simple Data Types
5 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.
5.1 Operations on Data Structures
6 Computing in Context
An awareness of the ethical and social implications of computing systems is necessary
for the study of computer science. These topics need not be addressed in detail but
should be considered throughout the course.
6.1 System reliability
6.3 Legal issues and intellectual property
6.4 Social and ethical ramifications of computer use