It looks like you accidentally went to a different version of the course. You've been redirected to the recommended version or the version assigned by your teacher.

Computer Science A ('24-'25)

Computer Science A (CSA) introduces students to software engineering and object-oriented programming and design using the Java programming language. This curriculum covers a broad range of topics, including the design of solutions to problems, the use of data structures to organize large sets of data, the development and implementation of algorithms to process data and discover new information, the analysis of potential solutions, and the ethical and social implications of computing systems.

Unit 1 - Object-Oriented Programming

This unit introduces students to object-oriented programming principles as they explore The Neighborhood and discover their identity as a software engineer. Students learn fundamental Java concepts as they navigate and paint in The Neighborhood with Painter objects and extend the Painter class to expand the capabilities of their programs. Students practice predicting the outcome of program code and developing algorithms using sequencing, selection, and iteration to navigate mazes and paint murals. Students also learn to document program code using comments to describe the behavior of specific code segments and conduct code reviews to receive feedback from their peers.

By the end of this unit, students will be able to . . .

  • Use inheritance to create subclasses that extend an existing class

  • Write methods with and without parameters to perform a specific task

  • Implement algorithms sequencing, selection, and iteration

  • Write clear and readable code using methods, control structures, and comments

  • Improve a program through iterative development based on feedback

The following practice on AP Classroom can be assigned during the Show What You Know week:

Finished Teaching This Unit?

Answer this short survey to let the Code.org curriculum team know how the unit went.

Go to Unit
Unit 2 - Class Structure and Design

This unit expands on the object-oriented programming principles introduced in Unit 1 to explore design principles as students develop classes with attributes and behaviors and work with primitive and object data. Students learn to write no-argument constructors to assign default values and parameterized constructors to assign specific values to an object's instance variables. They explore how the this keyword can be used to reduce ambiguity and redundancies in their program and how the super keyword can be used to call a superclass constructor or method. Students also learn how to work with variables and write expressions using arithmetic and compound assignment operators and practice tracing code segments to determine the output. After working with instance variables and constructors, they write accessor and mutator methods to work with the values assigned to an object's instance variables and toString() methods to display information about an object to the console. Throughout this unit, students continue to develop software engineering skills as they learn to make design decisions and use inheritance to create class hierarchies.

By the end of this unit, students will be able to . . .

  • Represent attributes of an object using instance variables

  • Write no-argument and parameterized constructors to set the state of an object

  • Use the super keyword to refer to the superclass in constructors and methods

  • Write expressions using arithmetic operators and compound assignment operators with variables and object data

  • Write accessor and mutator methods to obtain and modify object data

  • Write toString() methods and use escape sequences to display and format information about an object to the console

The following practice on AP Classroom can be assigned during the Show What You Know week:

Additionally, the following Personal Progress Checks in AP Classroom can be assigned during the Show What You Know week:

  • Personal Progress Check 1

  • Personal Progress Check 5

  • Personal Progress Check 9

Note: Some Learning Objectives and Essential Knowledge statements in the suggested Personal Progress Checks are covered in later units.

Finished Teaching This Unit?

Answer this short survey to let the Code.org curriculum team know how the unit went.

Go to Unit
Unit 3 - Arrays and Algorithms

This unit introduces students to data structures to store primitive values and object references. Students use one-dimensional (1D) arrays to store multiple related values while expanding their knowledge of loops and conditionals to analyze and process data in a 1D array. Students learn to use for loops to traverse arrays and discover that an algorithm involving loops can be implemented with either a for loop or a while loop. Throughout the unit, students develop and modify algorithms to find and manipulate elements in a 1D array while also discovering the concept of polymorphism when traversing arrays of objects. While developing algorithms, students identify preconditions and postconditions and implement solutions to ensure that these conditions are satisfied. Students continue to develop software engineering skills as they learn to make design decisions and use 1D arrays to store and analyze data.

By the end of this unit, students will be able to . . .

  • Declare and initialize one-dimensional (1D) arrays to store primitive values and objects using the new keyword and initializer lists

  • Traverse the elements in one-dimensional (1D) arrays using for loops, while loops, and enhanced for loops

  • Write algorithms to find and modify elements in one-dimensional (1D) arrays

  • Implement solutions to satisfy the preconditions and postconditions of an algorithm

  • Debug common errors that occur when traversing one-dimensional (1D) arrays

  • Use polymorphism to create and traverse one-dimensional (1D) arrays of a superclass type

The following practice on AP Classroom can be assigned during the Show What You Know week:

Additionally, the following Personal Progress Checks in AP Classroom can be assigned during the Show What You Know week:

  • Personal Progress Check 4

  • Personal Progress Check 6

Note: Some Learning Objectives and Essential Knowledge statements in the suggested Personal Progress Checks are covered in later units.

Finished Teaching This Unit?

Answer this short survey to let the Code.org curriculum team know how the unit went.

Go to Unit
Unit 4 - Conditions and Logic

This unit expands on the use of APIs, object-oriented programming concepts, and conditional statements to develop visuals and animations using The Theater. Students learn about the functionality of the static keyword and explore the methods in the Math class to perform calculations and incorporate randomness in program decisions and behaviors. While working with conditional statements and Boolean expressions, students realize the difference between using the == operator and the equals() method to compare objects for equality and discover the need for overriding the equals() method in their own classes. They deepen their understanding of conditional statements and logical operators as they learn to write nested conditional statements, use the AND ( && ) and OR ( || ) operators, and write multi-selection statements to test multiple conditions. Using their knowledge of Boolean expressions and logical operators, they practice evaluating truth tables to compare two expressions for equivalence and applying De Morgan's Laws to simplify expressions.

By the end of this unit, students will be able to . . .

  • Use the static keyword to to create static variables and methods in a class

  • Call Math class methods and constants to perform calculations and generate random numbers

  • Use casting operators to assign a value of one type to another

  • Explain the difference between == and equals()

  • Write nested if statements to test a combination of conditions

  • Construct a conditional statement involving logical operators

  • Evaluate compound Boolean expressions for equivalence

  • Write multi-selection statements to test multiple conditions

The following practice on AP Classroom can be assigned during the Show What You Know week:

Additionally, the following Personal Progress Checks in AP Classroom can be assigned during the Show What You Know week:

  • Personal Progress Check 3

Note: Some Learning Objectives and Essential Knowledge statements in the suggested Personal Progress Checks are covered in later units.

Go to Unit
Unit 5 - Two-Dimensional Arrays

This unit expands on data structures introduced in Unit 3 to create tables of data using two-dimensional (2D) arrays. Students identify similarities and differences between 1D and 2D arrays when creating, accessing, and traversing 2D arrays and apply standard algorithms to find and manipulate elements. As students analyze problems involving 2D arrays, they revisit these standard algorithms to determine what code needs to be added or modified and to interact with completed program code. Students apply these concepts to manipulate pixels and in The Theater to create image filters in addition to working with primitive values and various object references. Additionally, students use the programming knowledge and skills they have acquired to consider the impacts of programs on society, economies, and culture.

By the end of this unit, students will be able to . . .

  • Declare and initialize a two-dimensional (2D) array using the new keyword and an initializer list

  • Access and modify elements in a two-dimensional (2D) array using row and column indexes

  • Write nested loops to traverse a two-dimensional (2D) array in row-major and column-major order

  • Write nested enhanced for loops to traverse a two-dimensional (2D) array

  • Apply standard 1D array algorithms to a 2D array

  • Discuss the beneficial and harmful impacts of programs

The following practice on AP Classroom can be assigned during the Show What You Know week:

The following Personal Progress Checks in AP Classroom can be assigned during the Show What You Know week:

  • Personal Progress Check 8

Note: Some Learning Objectives and Essential Knowledge statements in the suggested Personal Progress Checks are covered in later units.

Finished Teaching This Unit?

Answer this short survey to let the Code.org curriculum team know how the unit went.

Go to Unit
Unit 6 - ArrayLists and String Methods

This unit continues to expand on data structures to introduce students to creating lists using the ArrayList class. In the process, students learn about the Integer and Double classes and use their methods to parse data from text files and explore the limits of integer values. Students differentiate between when to use each type of data structure while learning about the structure and functionality of an ArrayList. Students apply standard algorithms to find and manipulate data in an ArrayList of numerical and object data. Throughout the unit, students learn to use the String class to analyze and process text obtained from a user and from file input while learning about basic natural language processing techniques and applications. Additionally, students further develop software engineering skills by writing Javadoc comments to create API documentation for their programs.

By the end of this unit, students will be able to . . .

  • Use the Integer and Double class to represent primitive values as objects

  • Describe the structure and functionality of an ArrayList

  • Use methods in the ArrayList class to obtain the size of an ArrayList, add elements, retrieve elements, set values, and remove elements

  • Apply standard algorithms used with one-dimensional (1D) arrays to an ArrayList

  • Use methods in the String class to retrieve substrings and perform comparisons

  • Write standard algorithms to traverse a String object

The following practice on AP Classroom can be assigned during the Show What You Know week:

The following Personal Progress Checks in AP Classroom can be assigned during the Show What You Know week:

  • Personal Progress Check 2
  • Personal Progress Check 7

Note: Some Learning Objectives and Essential Knowledge statements in the suggested Personal Progress Checks are covered in later units.

Finished Teaching This Unit?

Answer this short survey to let the Code.org curriculum team know how the unit went.

Go to Unit
Unit 7 - Method Decomposition and Recursion

This unit allows students to practice software design and development using the skills they have learned throughout the curriculum while planning and developing a creative coding project to convey a personal interest or story using The Theater. Students use decomposition strategies and object-oriented principles to plan and implement their ideas while ensuring their projects meet specified requirements. In the process, students learn to write private, overloaded, and overridden methods and use the super keyword in a subclass method to call a superclass method while exploring the functionality of methods and their parameters. Throughout the unit, students practice tracing and writing recursive methods and comparing these methods to iterative solutions. With the knowledge and skills acquired throughout the year, students consider the need for maximizing system reliability as they explore bugs and issues in existing programs.

By the end of this unit, students will be able to . . .

  • Differentiate between passing primitive values and object references as parameters

  • Write and call overloaded, private, and overridden methods

  • Explain the legal issues and intellectual property concerns of programs that create AI-generated images

  • Trace a recursive method to determine its result

  • Identify strategies to maximize system reliability

The following practice on AP Classroom can be assigned during the Show What You Know week:

Finished Teaching This Unit?

Answer this short survey to let the Code.org curriculum team know how the unit went.

Go to Unit
Unit 8 - Searching and Sorting

This unit expands on algorithms students have learned to introduce common approaches to searching and sorting 1D and 2D arrays and ArrayLists. In the process, students analyze and compare the efficiencies of these algorithms using statement execution counts and further develop problem-solving skills to decompose complex problems. Throughout the unit, students apply their programming and software engineering skills to plan and develop a creative coding project using the console that incorporates object-oriented design, data structures, and algorithmic thinking. With the knowledge and skills acquired throughout the year, students consider the privacy and security of programs and users.

By the end of this unit, students will be able to . . .

  • Explain the functionality of standard searching and sorting algorithms

  • Analyze the efficiency of searching and sorting algorithms using execution counts

  • Implement algorithms involving multiple 1D or 2D arrays or ArrayLists

The following practice on AP Classroom can be assigned during the Show What You Know week:

Additionally, the following Personal Progress Checks in AP Classroom can be assigned during the Show What You Know week:

  • Personal Progress Check 10

Note: Some Learning Objectives and Essential Knowledge statements in the suggested Personal Progress Checks are covered in later units.

Finished Teaching This Unit?

Answer this short survey to let the Code.org curriculum team know how the unit went.

Go to Unit
Unit 9 - AP Exam Review and Practice

This unit prepares students for the AP CSA Exam by reviewing key concepts, practicing multiple-choice and free response questions, and strengthening test-taking strategies. Students identify strengths and areas of improvement to create individualized study plans to focus their practice and self-assess their progress.

Go to Unit
Unit 10 - Software Engineering & Computer Vision

This two-chapter post-AP CSA module offers high school students hands-on experience with professional software development tools, including GitHub and GitHub Copilot, and imparts them with the real-world skills to develop a computer vision program. Students will gain practical knowledge, learn industry-standard practices, and cultivate critical thinking through discussions and problem-solving centered around AI tools and models. These lessons aim not only to bolster their understanding of AI and its applications but also foster creativity and collaboration, equipping students with the set of skills and the beginning of a software development portfolio they can take with them beyond high school.

Go to Unit