Skip Navigation

AP Computer Science A (NCAA Approved)

Open to: Grades 9 - 12

Eligibility: CTY-level or Advanced CTY-level math score required

Prerequisites: Completion of Algebra I and high school Introductory Computer Science course.

Course Format: Session Based. See calendar for session dates and application deadlines.

Course Length: 30 weeks (Academic Year)

Recommended School Credit: One academic year

Student Expectations: Students are strongly encouraged to work an average of 8-9 hours per week for the 30-week session with breaks for holidays.

Course Code: APCS

Course Description


The AP Computer Science A course covers topics typically found in a college-level first course in computer science, and provides a solid preparation for the AP Computer Science A examination. The course emphasis is on procedural abstraction, data abstraction, object-oriented design and programming methodology using the Java programming language, and the use of algorithms and data structures.

Major topical areas include:

  • the concepts of computer science
  • program control constructs
  • use of arrays and strings
  • class methods
  • object-oriented design and programming concepts
  • creating and modifying classes
  • understanding existing designs and code
  • the use of sorting and searching algorithms
  • recursion
  • use of standard Java class libraries

Highly qualified instructors guide students through video lectures, readings, forum discussions, design and programming exercises, project assignments, and other resources. Student knowledge is assessed through homework assignments, projects, and exams.

This course does not have any synchronous class meetings, but students may schedule one-on-one virtual meetings directly with the instructor to answer questions or concerns.

Students may be invited to interact in CTY community spaces that include students and instructors and potentially specially invited guests that are not enrolled in their course. Student contributions (e.g., projects, forum posts, etc.) may remain in the course after the student completes the course. These artifacts may be preserved to showcase student work or to continue important conversations.

Materials Needed

A textbook purchase is required for this course:

Java: How to Program (Late Objects Version), P. Deitel and H. Deitel, 11th Edition, Prentice-Hall, 2017.

ISBN-13: 9978-0134791401

Please note: If students purchase a used book, they may need to purchase a subscription to the online resources offered by the book.

Detailed Course Information

Course Details

Getting Started with Computer Science & Java

  • Computing Concepts
  • Computing Languages
  • Software Development Steps
  • Social & Ethical Issues
  • Java History & Architecture
  • The Structure of a Java Program
  • Compiling & Running a Java Program
  • Compiler, runtime, and logic errors
  • Source Code Comments & Program Documentation
  • Doing Basic Program Output

Java Programming Basics

  • Declaring & Initializing Java Variables
  • The Scope & Lifetime of Variables
  • Defining & Using Constants
  • Java Primitive Types
  • Arithmetic Operators
  • Relational Operators
  • Precedence & Order of Evaluation
  • Mixed Mode Expressions & Type Conversion
  • Getting User Input

Program Control Structures - 1

  • Increment & Decrement Operators
  • Logical Operators
  • The if-else Construct
  • The switch Construct
  • The Conditional Operator
  • Nesting Control Structures

Program Control Structures - 2

  • Assignment Operators
  • The for Construct
  • The while Construct
  • The do-while Construct
  • Comparing the Java Iteration Constructs
  • Nested Iteration Constructs
  • Additional Iteration Topics

Introduction to Java Class Methods

  • Defining Class Methods
  • The Scope of Method Arguments & Variables
  • Passing Arguments to Class Methods
  • Returning Values From Class Methods
  • Method Overloading
  • Type Conversion & Type Checking
  • Some Built-In Java Class Methods
  • Method documentation


  • Creating & Using Arrays
  • Initializing Arrays
  • Passing Arrays As Method Arguments
  • Returning Arrays From Methods
  • Multi-Dimensional Arrays
  • Referencing Arrays Dynamically

Working with Java Strings

  • Creating & Using String Objects
  • Manipulating Strings
  • String Immutability & Equality
  • Passing Strings To & From Methods
  • String Arrays
  • Number systems

Introduction to Object-Oriented Design & Programming – Part 1

  • Identifying Classes, Attributes & Behaviors
  • Defining & Using Classes
  • Controlling Access To Class Members
  • Class Constructors
  • Class Variables & Class Methods
  • Method Overloading

Object-Oriented Design & Programming – Part 2

  • Class Design Guidelines
  • Designing Classes Using Containment
  • Designing Classes Using Aggregation & Composition
  • Layered Design Principles
  • Translating Requirements Into a Design
  • GUI input (dialog boxes)


  • Introduction to Inheritance
  • Inheritance & Class Visibility
  • Base Class Constructors
  • Method Overriding
  • Preventing Inheritance
  • The Object superclass
  • Casting Objects
  • Runtime Polymorphism
  • Inheritance Design Guidelines

Java Wrappers, Collections & Generics

  • Java Wrapper Classes – Integer & Double
  • Collections & Generics
  • Working With The ArrayList Class

Exception Handling

  • Introduction to Exceptions
  • The Java Exception Hierarchy
  • Handling Exceptions

Working With JavaFX Components – 1

  • The Structure of a JavaFX Program
  • Panels, UI Controls, and Shapes
  • Stages and Scenes
  • Working with Buttons

Working With JavaFX Components – 2

  • Working With Labels
  • Working With Check Boxes
  • Working With Radio Buttons
  • Working with Text Fields and Text Areas
  • Working With Combo Boxes
  • Working With List Views

Recursion, Searching & Sorting

  • Recursion Concepts
  • Recursion vs. Iteration
  • Recursion Applications
  • Linear Search
  • Binary Search
  • Selection Sort
  • Insertion Sort
  • Merge Sort
  • Algorithm complexity

Preparation for AP Exam

Technical Requirements

This course requires a properly maintained computer with high-speed internet access and an up-to-date web browser (such as Chrome or Firefox). The student must be able to communicate with the instructor via email. Visit the Technical Requirements and Support page for more details.

The student will need the Java Runtime Environment.

Zoom online virtual classroom
This course uses an online virtual classroom which can be used for instructor-student communication if the student has any questions about the course or curriculum. The classroom works on standard computers with the Zoom desktop client and also tablets or handhelds that support the Zoom Mobile app. Students will need a computer with the Zoom desktop client installed to watch any recorded meetings. The Zoom desktop client and Zoom Mobile App are both available for free download.

Most course lectures may be viewed on mobile devices, but in some cases assignments and quizzes must be completed on a desktop or laptop computer.

Chromebooks are not recommended due to required downloading of specialized software.

This course uses Respondus LockDown Browser proctoring software for designated assessments. LockDown Browser is a client application that is installed to a local computer. Visit the Respondus website for system requirements.

While Chromebook can be used to progress through the course, all exams must be completed on a PC or Mac.