APCS Java Syllabus 2020
APCS Java Syllabus 2020
Course Outline
The CSAwesome course follows the 2019 AP CSA unit outline and content as provided in the AP CS A
Course and Exam Description. The units that follow interweave the five AP CS A Computational
Thinking Practices of Program Design and Algorithm Development, Code Logic, Code Implementation,
Code Testing, and Documentation with the four Big Ideas of Modularity, Variables, Control, and Impact
of Computing:
# of 45 min class periods
❖ Unit 1. Getting Started and Primitive Types ~8-10
❖ Unit 2. Using Objects ~13-15
❖ Unit 3. Boolean Expressions and If Statements ~11-13
❖ Unit 4. Iteration (Loops) ~14-16
❖ Unit 5. Writing Classes ~12-14
❖ Unit 6. Arrays ~6-8
❖ Unit 7. ArrayList ~10-12
❖ Unit 8. 2D Arrays ~10-12
❖ Unit 9. Inheritance ~14-16
❖ Unit 10. Recursion ~3-5
❖ Unit 11. Post Test 1
❖ Unit 12. Preparing for the Exam ~5
Lab Component:
The course includes a structured-lab component in which students will complete a minimum of 20 hours
of hands-on lab experiences. The curriculum has small coding assignments called Programming
Challenges in each lesson, which they are encouraged to do using pair programming. In addition, students
Assessments
Teachers can track the progress of their students on these in the Runestone Teacher Dashboard.
AP CS A Exam
Students who complete this course will be prepared to take the AP CS A Exam in May.
Unit 6: Arrays
This unit focuses on data structures, which are used to represent collections of related data using a single
variable rather than multiple variables. Using a data structure along with iterative statements with
appropriate bounds will allow for similar treatment to be applied more easily to all values in the
collection. Just as there are useful standard algorithms when dealing with primitive data, there are
standard algorithms to use with data structures. In this unit, students apply standard algorithms to arrays
as well as identify errors in program code found in programming challenges and interactive activities
throughout the unit (Skill 4.B). Additional standard algorithms, such as standard searching and sorting
algorithms, will be covered in the next unit.
Unit 7: ArrayList
As students learned in Unit 6, data structures are helpful when storing multiple related data values. Arrays
have a static size, which causes limitations related to the number of elements stored, and it can be
challenging to reorder elements stored in arrays. The ArrayList object has a dynamic size, and the class
contains methods for insertion and deletion of elements, making reordering and shifting items easier.
Deciding which data structure to select becomes increasingly important as the size of the data set grows,
such as when using a large real-world data set. In this unit, students will also learn about privacy concerns
related to storing large amounts of personal data and about what can happen if such information is
compromised (IOC). Through POGIL group work and interactive activities, students will gain an
understanding of how to use computing safely and responsibly which requires being aware of privacy,
security, and ethical issues.
Unit 8: 2D Arrays
In Unit 6, students learned how 1D arrays store large amounts of related data. These same concepts will
be implemented with two-dimensional (2D) arrays in this unit. A 2D array is most suitable to represent a
table. Each table element is accessed using the variable name and row and column indices. Unlike 1D
arrays, 2D arrays require nested iterative statements to traverse and access all elements. The easiest way
to accomplish this is in row-major order, but it is important to cover additional traversal patterns, such as
back and forth or column-major. After completing programming challenges and interactive exercises,
such as the Picture Lab, students will be able to write program code to create, traverse, and manipulate
elements in 2D array objects (Skill 3.E).
Unit 9: Inheritance
Creating objects, calling methods on the objects created, and being able to define a new data type by
creating a class are essential understandings before moving into this unit. One of the strongest advantages
of Java is the ability to categorize classes into hierarchies through inheritance. Certain existing classes can
be extended to include new behaviors and attributes without altering existing code. These newly created