AP® Computer Science A

  10-12 graders

  Credits awarded on transcript  

  Algebra II completed with B- or better

  UC A-G approved for [C] Mathematics credits

  Self paced instructor-guided  

  Personalized 1-1 support

  Office hours 1 hour per week

  1499 per student, per semester  

  90 minutes per class

  4-8 students per class

  Twice per week over 36 weeks

  1499 per student, per semester  

  2 hours per day (summer)  

  8-10 students per class

  4 days per week 2, 4, or 6 weeks

  549 per student, per week  

AP® Computer Science A (AP CSA) is an introductory college-level computer science course developed by the College Board as equivalent to a first-semester, college-level CS1 course in computer science. The course introduces students to computer science with fundamental topics that include problem solving, design strategies and methodologies, organization of data (data structures), approaches to processing data (algorithms), analysis of potential solutions, and the ethical and social implications of computing.

The course emphasizes both object-oriented and imperative problem solving and design using the Java programming language. These techniques represent proven approaches for developing solutions that can scale up from small, simple problems to large, complex problems. The Java Programming portion of this course teaches students skills to —

  • Design and develop the Algorithm to solve a given problem
  • Write the logic in Java to produce the expected output
  • Test and analyze code written in Java for correctness, equivalence, and errors
  • Document the behavior and conditions that produce results of a program

In addition to a strong foundation on programming, students learn computer science fundamentals concepts such as sorting, searching, recursion, error handling, and so on. This course adequately covers the requirements of the AP® CSA curriculum and allows students to go further in more advanced topics that are outside of AP CSA requirements if they have interest and time.

2Sigma School emphasizes project-based learning where students work on programming challenges, or mini-labs, throughout the course so that they are actively engaging with the concepts of modularity, variables, control, code logic, algorithm design, code testing, and the impact of computing on a daily basis. Completing these mini-labs prepares students to build their skills to complete full labs on their own. By the end of the course students will create multiple complete programming projects, or labs, on their own where they will design solutions to problems, express their solutions precisely, test their solutions, identify and correct errors, and compare possible solutions.

No prior programming experience is necessary, but it is highly recommended that students have successfully completed Algebra II with a strong foundation of basic linear functions, composition of functions, and problem-solving strategies that require multiple approaches and collaborative efforts. In addition, students should be able to use a Cartesian (x, y) coordinate system to represent points on a plane. The highest performing students enjoy logical thinking similar to proof building found in most Geometry courses. Computer science builds upon a foundation of mathematical reasoning that should be acquired before attempting this course.


Students will be provided access to lessons and practice AP exams through AP Classroom.
  Authorized by the College Board to use the AP® designation.
   University of California A-G approved for [C] Mathematics credits.      NCAA Approved.

Course Outline

    hide details
  1. Primitive Types
    This unit introduces students to the Java programming language and the use of classes and primitive data types, providing students with a firm foundation. Through interactive coding challenges and exercises, students will learn about built-in data types, how to create variables, store values, and interact with those variables using basic operations.
  2. Using Objects
    This unit introduces a new type of data: Objects, that allows real-world objects to be represented in a computer program. Students will learn about modularity in object-oriented programming, which allows us to use abstraction to break complex programs down into individual classes and methods, through interactive coding challenges and exercises.
  3. Boolean Expressions and if Statements
    Algorithms are composed of three building blocks: sequencing, selection, and iteration. This unit focuses on selection, which is represented by conditional statements. Students learn how conditional control structures give the program the ability to decide and respond to different conditions.
  4. Iteration with Loops
    This unit focuses on iteration using while and for loops and introduces standard algorithms such as searching and sorting as well as traversal of data structures such as Arrays. Students will learn to use boolean expressions as a key component in iteration and will do run-time analysis using code tracing throughout each iteration.
  5. Writing Classes
    Students will create user-defined data types along with their attributes and behaviors in the form of classes to accurately model real-world entities in a computer program. Students will understand the importance of documentation and will be able to describe pre and post conditions that are necessary for a program to work as intended.
  6. Data Structure Introduction with Arrays
    Data structures allow representing collections of related data using a single variable rather than multiple variables and processing them using iterative statements. In this unit, students apply standard algorithms to arrays and identify errors in program code found in programming challenges and interactive activities throughout the unit.
  7. ArrayList Data Structures
    Students will learn how to address the static size and other limitations of Arrays with an ArrayList object that has dynamic size as well as abstractions for insertion, deletion, reordering, and shifting items. Students will also learn about privacy and security concerns related to storing large amounts of personal data.
  8. 2D Array Data Structures
    This unit introduced two-dimensional (2D) arrays to represent a table along with row and column indices to access each element. Students will learn to use nested iterative statements to traverse a table and access elements using row-major, column-major, and random access retrieval.
  9. Inheritance
    Students will learn one of the strongest differentiators of object-oriented programming – the ability to categorize classes into hierarchies and share state and behavior through inheritance. Recognizing and utilizing existing hierarchies will help students create more powerful, readable and maintainable programs.
  10. Recursion
    Recursion is a powerful math and computer science idea that provides an elegant alternative to iterations in solving complex problems. Students will learn how to write simple recursive methods and determine the purpose or output of a recursive method by tracing.
  11. Capstone Project
    Students will create a program from scratch in an area that they are interested in by leveraging all of the concepts covered in the course. The program will need to implement data structures, conditionals, iteration, and a hierarchy of classes. Students will first outline their design with planned testing points, which will then become the comments in the code. Students will present the capstone project and complete a reflection on the entire process.

Summer of Code
    see detailed summer schedule

To take any of our courses, students must be familiar with opening a browser, navigating to a website, and joining a Zoom meeting.

Students must have a quiet place to study and participate in the class for the duration of the class. Some students may prefer a headset to isolate any background noise and help them focus in class.

Most course lectures and content may be viewed on mobile devices but programming assignments and certain quizzes require a desktop or laptop computer.

Students are required to have their camera on at all times during the class, unless they have an explicit exception approved by their parent or legal guardian.

Our technology requirements are similar to that of most Online classes.

A desktop or laptop computer running Windows (PC), Mac OS (Mac), or Chrome OS (Chromebook).
Students must be able to run a Zoom Client.
A working microphone, speaker, webcam, and an external mouse.
A high-speed internet connection with at least 15mbps download speed (check your Internet speed).

We encourage (but do not require) students taking AP® courses to take the AP Exams administered in May by the College Board. Being an Online School, we do not conduct AP® Exams ourselves yet. See the College Board's website to find a local location near you, if your school doesn't offer these exams.

This course includes several timed tests where you will be asked to complete a given number of questions within a 1-3 hour time limit. These tests are designed to keep you competitively prepared but you can take them as often as you like. We do not proctor these exams, neither do we require that you install special lockdown browser.

In today's environment, when students have access to multiple devices, most attempts to avoid cheating in online exams are symbolic. Our exams are meant to encourage you to learn and push yourself using an honor system.

We do assign a grade at the end of the year based on a number of criteria which includes class participation, completion of assignments, and performance in the tests. We do not reveal the exact formula to minimize students' incentive to optimize for a higher grade.

We believe that your grade in the course should reflect how well you have learnt the skills, and a couple of timed-tests, while traditional, aren't the best way to evaluate your learning.