|
|
AP COMPUTER
SCIENCE COURSE SYLLABUS |
|
|
|
Introduction The following is a
description of the topics covered in AP Computer Science. It is the intent of
this course to cover material sufficiently to prepare students to take the AP
Computer Science Examination A (there is also an AB examination which covers
material beyond the scope of this course). |
|
|
|
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 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 libraries. B. Class design 1.
Design and implement a class. 2.
Design an interface. 3.
Choose appropriate data representation 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 1.
Methodology a.
Object-oriented development b.
Top-down development c.
Encapsulation and information hiding d.
Procedural abstraction B. Programming constructs 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 (included
in the A 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 1.
Test classes and libraries in isolation 2.
Identify boundary cases and generate appropriate test data 3.
Perform integration testing B. Debugging 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 F. Reason about programs 1.
Pre- and post-conditions 2.
Assertions G. Analysis of algorithms 1.
Informal comparisons of running times 2.
Exact calculation of statement execution counts 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. A. Simple data types (int, boolean, double) B. Classes C. One-dimensional arrays |
|
|
|
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 1.
Traversals 2.
Insertions 3.
Deletions B. Searching 1.
Sequential 2.
Binary C. Sorting 1.
Selection 2.
Insertion 3.
Mergesort |
|
|
|
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 of computer use |
|
|
|
|
|