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.
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.
🎯 Unit Objectives
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
✅ AP Classroom Practice
The following practice on AP Classroom can be assigned during the Show What You Know week:
- Code.org Unit 1 Practice Questions: This is an introductory quiz to help make sure students have logins and to start practicing with AP multiple-choice questions.
Finished Teaching This Unit?
Answer this short survey to let the Code.org curriculum team know how the unit went.
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.
🎯 Unit Objectives
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
✅ AP Classroom Practice
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.
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.
🎯 Unit Objectives
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 enhancedfor
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
✅ AP Classroom Practice
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.
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.
🎯 Unit Objectives
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
==
andequals()
-
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
✅ AP Classroom Practice
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.
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.
🎯 Unit Objectives
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
✅ AP Classroom Practice
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.
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.
🎯 Unit Objectives
By the end of this unit, students will be able to . . .
-
Use the
Integer
andDouble
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 anArrayList
, 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
✅ AP Classroom Practice
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.
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.
🎯 Unit Objectives
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
✅ AP Classroom Practice
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.
This unit expands on algorithms students have learned to introduce common approaches to searching and sorting 1D and 2D arrays and ArrayList
s. 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.
🎯 Unit Objectives
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
ArrayList
s
✅ AP Classroom Practice
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.
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.
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.