**TEALS Program**
Home |
Curriculum Map
# Important updates for the 2024-25 school year!
- The 2024-25 school year is the LAST school year this AP CS A course will align with the College Board AP CS A framework.
- The College Board is revising the AP CS A exam and framework; the changes will launch during the 2025-26 school year. For the 2025-26 school year and beyond, visit the [College Board's endorsed providers of AP CS A curricula](https://apcentral.collegeboard.org/courses/ap-computer-science-a/classroom-resources/curricula-pedagogical-support).
- Protected content (such as solutions, quizzes, and additional resources) are available to those with a TEALS Dashboard account. Please email for access information.
# About the AP Computer Science A Curriculum
The [TEALS Program][] has designed these curriculum materials for the use of teachers and volunteer
tech professionals in high school classrooms. Any teacher with prior programming experience (or
access to a computer science professional) can use this curriculum to teach the AP Computer Science
A course.
This curriculum is based on and aligned with Professor Stuart Reges' course at the University of
Washington, CSE 142. The curriculum uses the textbook:
_Building Java Programs: A Back to Basics Approach_ by Stuart Reges and Marty Stepp.
Publisher: Pearson; 5 edition (March 28, 2019)
ISBN-10: 013547194X
ISBN-13: 978-0135471944
The TEALS curriculum requires each student to have a copy of the textbook. Many assignments require students to complete self-checks, exercises, and programming problems at the end of each chapter from the textbook. While Practice-it is available from the University of Washington, it is not necessary. As with all software services, it is the school’s sole decision to use the tool according to the use terms and privacy policies provided by its licensor and it is the school’s responsibility to ensure the tool meets it's IT policies.
The curriculum is aligned with the AP Computer Science A standards. TEALS has received AP Audit certification for previous versions of the course and syllabus.
The TEALS AP curriculum was approved by the College Board so partner schools may use the “claim
identical” function of the AP Audit website to obviate the need for their own curriculum audit.
Specific instructions are available in the [AP CS A Course Audit Instructions][].
This curriculum uses principles of universal design for learning (UDL). The curriculum was written
for and tested in classrooms with diverse learners; students with individualized education plans,
English language learners, students who have received sub-optimal math or language instruction in
the past, students who are gifted/talented, students who are otherwise “outside the average.” See
[Additional Resources](#additional-resources) for more information on universal design for learning.
## Accessing the curriculum
[College Board endorsed curriculum sequence (2020)](SUMMARY-Endorsed.md.html) This curriculum map follows the College Board Sequence of lessons.
[Textbook sequence (before 2020 school year)](SUMMARY.md.html)
This curriculum map follows the Building Java Program Textbook sequence of lessons
The AP Computer Science A Curriculum is located on GitHub pages:
[https://tealsk12.github.io/apcsa-public/](https://tealsk12.github.io/apcsa-public/)
For contributions to the curriculum, the AP Computer Science A GitHub repository is located at
[https://github.com/TEALSK12/apcsa](https://github.com/TEALSK12/apcsa).
## Using the curriculum
Each classroom has different physical, cultural, academic, and scheduling needs. Therefore, we have
tried to create a collection of lessons and materials that are adaptable to most situations. TEALS
volunteers and classroom teachers will find different aspects of the curriculum useful; you should
expect to skip over certain notes to focus on the information that is most useful to you.
We have provided classroom management tips and engagement tips for TEALS volunteers, who are new to
the classroom setting. Experienced teachers and volunteers will likely choose to skip such details
and focus on the step-by-step lecture notes.
You may browse the [Curriculum Map][] for an overview of the pacing, objectives, and assessments.
For TEALS schools in BC, Canada, please see [Aligning TEALS APCSA Teaching Resources with the BC Curriculum](CA-README.md.html).
### Year round pacing
The table-of-contents (included with Introduction materials) contains coarse-grained time estimates
on the scale of weeks and days so teachers can plan accordingly. Units 6 and 8 include extra days in
the time-estimate so teachers can re-adjust their unit plans if they have shifted due to unexpected
class cancellations or drift.
### Daily structure
Every classroom is different, and we expect that instructors will adapt the daily structure of the
class to suit their students' needs. That said, we've designed most of the lessons using the
following daily structure:
#### Hook & instruction
- Each lesson plan begins with one or several options for short (from seconds to 5 minutes) engaging
or mystifying activities that introduce students to the topics to be introduced later in the
lesson.
- Lecture notes, student prompts, and quick-assessments (with answers) are outlined in subsection
“introduction.” If you are teaching in a flipped classroom, this section can be pre-recorded for
students to view at home. For additional resources on flipping your classroom, please refer to
“Additional Resources” below.
#### Student practice
- Student practice/activities are outlined with step-by-step instructions including pacing
suggestions and alternative stopping points. Any special materials or preparation needed for the
hook, lecture, or activity are listed in the Materials & Prep section.
#### Warmup / Do now / Boardwork/ Ticket-to-leave
- Since each classroom progresses at different rates, we have not included warm-up and cool-down
questions (though time has been scheduled in the Pacing Guide for one or both of these
activities). You should choose your questions based on the topics you felt were most challenging
or confusing for your students. A good source for short-answer and multiple choice questions is
the [Barron's AP Computer Science A review book][], which TEALS ships to each AP CS A volunteer.
### Scaffolding
The Glossary of Education Reform defines scaffolding as:
A variety of instructional techniques used to move students progressively toward stronger
understanding and, ultimately, greater independence in the learning process.
Instructors provide successive levels of temporary support that help students reach higher levels of
comprehension than they would have been able to achieve without assistance. Support is gradually
removed as students move towards mastery, which occurs when students demonstrate skills and
knowledge without any outside assistance.
The University of Washington course CSE 142 and associated textbook do not contain much scaffolding.
This curriculum attempts to wrap the content of the UW course with scaffolding appropriate for high
school classes. Some classes may not require scaffolding, and other classes may need even more
scaffolding than those steps suggested within the lesson plan.
### Examples
Most lecture notes and classroom examples are slightly modified versions of the examples outlined in
the textbook. When the class needs additional examples, or re-teaching, instructors can refer
directly to the textbook for a fresh set of similar examples and explanations. The "additional
resources" section of this document lists some other sources for examples and labs.
### References to the textbook
Some classrooms are using earlier editions of the Building Java Programs textbook. To avoid
confusion, we have written all reading and practice assignments by chapter and section rather than
page number. In cases where practice problems or assignments differ between editions, we have copied
those assignments (with reference) into printable documents.
### Homework assignments
As written, the homework assignments contain material to be assigned, but are not phrased in terms
of learning goals. Teachers should choose specific learning goals for the evening's work depending
on student progress and timing within the week and school year, then phrase the assignment in terms
of learning goals, not output.
*For example, rather than "read section 3.1" assign the reading by saying "for tomorrow, be prepared
to pass data into methods using parameters. Section 3.1 in the textbook will show you how."*
### Pokémon
Throughout the course, this curriculum includes lab assignments using the Pokémon universe as a
subject-matter domain (often replacing textbook assignments on less salient topics like compound
interest). The Pokémon storyline and game rules are familiar to male and female students from all
socioeconomic backgrounds, available across the digital divide as both a card game and a video game,
and are available in 10 different languages (English, Spanish, Portuguese, Dutch, French, German,
Italian, Korean, Chinese, and Japanese).
Because the game relies on statistics, modulo operators, and the underlying 32-bit integer that
characterizes any given Pokémon, we will be using this theme to introduce students to much of the AP
CS A curriculum. Students will be entering the AP CS A course with varying degrees of math literacy,
and framing mathematical challenges in this familiar framework is helpful for avoiding stereotype
threat and math anxiety.
To learn more about the Pokémon storyline, game rules, underlying formulae, and characters, visit:
http://bulbapedia.bulbagarden.net/.
For a more general introduction to the Pokémon franchise, visit:
http://www.pokemon.com/.
### AP Exam preparation
All of the Unit tests are in the AP exam format. In classes where many students will take the exam, instructors should gradually adjust the testing environment to mimic that of the exam:
- Always provide/allow the [AP Java Quick Reference][]
- Move from open-note (see “Tricky Code Cheat Sheet”) to closed-note
- The AP exam has 40 multiple choice questions in 90 minutes (≈2 minutes per question). On the earlier tests, start at a slower pace (perhaps 4 minutes per question). As the course progresses, work to a pace even faster than the actual test (90 seconds per question).
Aligned to the College Board's curriculum framework, students explore the big ideas that encompass the core principles, theories, and processes of computer science. Throughout the course, the student learns and practices the skills necessary to be successful on the AP exam.
#### Big ideas of computer science
1. Modularity --
Incorporating elements of abstraction, by breaking problems down into interacting pieces, each with their own purpose, makes writing complex programs easier. Abstracting simplifies concepts and processes by looking at the big picture rather than being overwhelmed by the details. Modularity in object-oriented programming allows us to use abstraction to break complex programs down into individual classes and methods.
2. Variables --
Information used as a basis for reasoning, discussion, or calculation is referred to as data. Programs rely on variables to store data, on data structures to organize multiple values when program complexity increases, and on algorithms to sort, access, and manipulate this data. Variables create data abstractions, as they can represent a set of possible values or a group of related values.
3. Control --
Doing things in order, making decisions, and doing the same process multiple times are represented in code by using control structures and specifying the order in which instructions are executed. Programmers need to think algorithmically in order to define and interpret processes that are used in a program.
4. Impact of computing --
Computers and computing have revolutionized our lives. To use computing safely and responsibly, we need to be aware of privacy, security, and ethical issues. As programmers, we need to understand how our programs will be used and be responsible for the consequences.
#### Computational thinking practices: skills
1. Program design and algorithm development
A. Determine an appropriate program design to solve a problem or accomplish a task (not assessed by AP Exam).
B. Determine code that would be used to complete code segments.
C. Determine code that would be used to interact with completed program code.
*Curriculum Example of Skill 1.B:* In Lesson 1.06, students are challenged to design and write a class that reproduces a particular shape pattern that encourages decomposition into multiple static methods.
2. Code logic
A. Apply the meaning of specific operators.
B. Determine the result or output based on statement execution order in a code segment without method calls (other than output).
C. Determine the result or output based on the statement execution order in a code segment containing method calls.
D. Determine the number of times a code segment will execute.
*Curriculum Example of Skill 2.A:* In Lesson 2.01, students are introduced to the modulus operator and practice evaluating expressions that use it.
3. Code mplementation
A. Write program code to create objects of a class and call methods.
B. Writei program code to define a new type by creating a class.
C. Write program code to satisfy method specifications using expressions, conditional statements, and iterative statements.
D. Write program code to create, traverse, and manipulate elements in 1D array or ArrayList objects.
E. Write program code to create, traverse, and manipulate elements in 2D array objects.
*Curriculum Example of Skill 3.C:* In Lesson 2.08, students write a method to reproduce an hourglass shape using nested for loops.
4. Code testing
A. Use test-cases to find errors or validate results.
B. Identify errors in program code.
C. Determine if two or more code segments yield equivalent results.
*Curriculum Example of Skill 4.B:* In Lesson 3.09, students are asked to correct syntax errors in a series of conditional statements.
5. Documentation
A. Describe the behavior of a given segment of program code.
B. Explain why a code segment will not compile or work as intended.
C. Explain how the result of program code changes, given a change to the initial code.
D. Describe the initial conditions that must be met for a program segment to work as intended or described.
*Curriculum Example of Skill 5.A:* In Lesson 3.12, students are tasked with starting a program that will be finished by partner, with the only communication between them being well-commented code.
### Vocabulary
A comprehensive vocabulary list for each unit is provided for teachers to generate word walls in
their classroom. Some classrooms will be able to omit certain vocabulary words; as offered, the
lists offered include words that English language learners and students with previous sub-optimal
instruction may find challenging.
### Error-checking lessons
One class period in each unit has been devoted to student correction and resubmission of work. While
it may be tempting to “win back” class time by skipping these sessions, we strongly encourage
teachers to leave these sessions in.
When students have the opportunity to fix their work and earn back full or partial credit, it gives
students agency over their grade and teaches students to examine and reflect upon their own
learning. On a practical note, when error-checking lessons are included, teachers need only grade
answers as correct/incorrect, since students will be challenged with finding and fixing the errors
on their own later. Finally, students that have answered all or most of their work correctly receive
a day off to do silent work/play on their own, which positively reinforces students to put in the
initial effort to win a day off.
#### Big ideas of computer science
1. Modularity --
Incorporating elements of abstraction, by breaking problems down into interacting pieces, each with their own purpose, makes writing complex programs easier. Abstracting simplifies concepts and processes by looking at the big picture rather than being overwhelmed by the details. Modularity in object-oriented programming allows us to use abstraction to break complex programs down into individual classes and methods.
2. Variables --
Information used as a basis for reasoning, discussion, or calculation is referred to as data. Programs rely on variables to store data, on data structures to organize multiple values when program complexity increases, and on algorithms to sort, access, and manipulate this data. Variables create data abstractions, as they can represent a set of possible values or a group of related values.
3. Control --
Doing things in order, making decisions, and doing the same process multiple times are represented in code by using control structures and specifying the order in which instructions are executed. Programmers need to think algorithmically in order to define and interpret processes that are used in a program.
4. Impact of Computing --
Computers and computing have revolutionized our lives. To use computing safely and responsibly, we need to be aware of privacy, security, and ethical issues. As programmers, we need to understand how our programs will be used and be responsible for the consequences.
#### Computational Thinking Practices: Skills
1. Program Design and Algorithm Development
A. Determine an appropriate program design to solve a problem or accomplish a task (not assessed by AP Exam).
B. Determine code that would be used to complete code segments.
C. Determine code that would be used to interact with completed program code.
*Curriculum Example of Skill 1.B:* In Lesson 1.06, students are challenged to design and write a class that reproduces a particular shape pattern that encourages decomposition into multiple static methods.
2. Code Logic
A. Apply the meaning of specific operators.
B. Determine the result or output based on statement execution order in a code segment without method calls (other than output).
C. Determine the result or output based on the statement execution order in a code segment containing method calls.
D. Determine the number of times a code segment will execute.
*Curriculum Example of Skill 2.A:* In Lesson 2.01, students are introduced to the modulus operator and practice evaluating expressions that use it.
3. Code Implementation
A. Write program code to create objects of a class and call methods.
B. Write program code to define a new type by creating a class.
C. Write program code to satisfy method specifications using expressions, conditional statements, and iterative statements.
D. Write program code to create, traverse, and manipulate elements in 1D array or ArrayList objects.
E. Write program code to create, traverse, and manipulate elements in 2D array objects.
*Curriculum Example of Skill 3.C:* In Lesson 2.08, students write a method to reproduce an hourglass shape using nested for loops.
4. Code Testing
A. Use test-cases to find errors or validate results.
B. Identify errors in program code.
C. Determine if two or more code segments yield equivalent results.
*Curriculum Example of Skill 4.B:* In Lesson 3.09, students are asked to correct syntax errors in a series of conditional statements.
5. Documentation
A. Describe the behavior of a given segment of program code.
B. Explain why a code segment will not compile or work as intended.
C. Explain how the result of program code changes, given a change to the initial code.
D. Describe the initial conditions that must be met for a program segment to work as intended or described.
*Curriculum Example of Skill 5.A:* In Lesson 3.12, students are tasked with starting a program that will be finished by partner, with the only communication between them being well-commented code.
### Video tutorials
- [Timing and pacing][] — Adjusting lessons and the curriculum map for the speed of your learners
- [Projects and labs][] — Choosing whether your class completes the AP labs or the projects
(FracCalc/TextExcel)
- [Supporting visual-spatial learners][] — Using the physical space in your classroom to enhance
learning
- [Parson's problems][] — Assessing high-level programming skills quickly with Parson's Problems
- [Grudgeball][] — Reviewing material by playing a class game of Grudgeball
### Recommended hardware
In the classroom, it is recommended that each student have an internet-connected desktop computer capable of running an Integrated Design Environment (IDE). Students will need to be able to save and access their programming projects locally or in the cloud.
### Integrated design environment (IDE) or code editor
Coding in Java requires the Java Development Kit and a text editor or IDE. There are many Java IDEs available. There are any IDEs/Coded editors that can be used to teach AP CS A. Unit 1 includes directions for installing IDE/Code Editor for Eclipse and VS Code. You are free to choose the IDE/Code Editor that best fits your class.
### Detecting Cheating with MOSS
Although the curriculum does not specifically outline an approach for monitoring cheating, many
teachers have found it easier, faster, and less stressful to use a free plagiarism-detection program
offered by Stanford at [http://theory.stanford.edu/~aiken/moss/](http://theory.stanford.edu/~aiken/moss/). Teachers will still need to manually
inspect code flagged by MOSS, but the program does catch common tactics including renaming variables
and reordering methods.
Occasionally, teachers have difficulty registering for an account. If this occurs, you are
encouraged to email the program's creator Alex Aiken directly, at
[aiken@cs.stanford.edu](mailto:aiken@cs.stanford.edu).
## Additional Resources
- The free web-based game [Code Hunt](http://www.codehunt.com) offers opportunities for students to
find and fix errors by “discovering the missing code segments.” Assignments/Levels are
automatically graded, and students can compete against each other to hone their programming
skills.
- [CodingBat](http://www.codingbat.com) offers Java practice problems with
instant feedback for students. The problems in CodingBat are distinct from those in the Building
Java Programs textbook. CodingBat has a teacher dashboard, and a system of badges to motivate
learners. Instructors can also upload their own sets of java problems for their classes to
complete.
- If you are interested in learning more about principles of universal design for learning, please
visit [http://www.udlcenter.org/aboutudl/udlguidelines](http://www.udlcenter.org/aboutudl/udlguidelines).
- Emerging EdTech has collected a sample of 20 digital tools to increase collaboration in the
classroom. One of them might be perfect for your classroom:
- If your classroom does not already have a digital grade management system, previous TEALS teaching
teams have used Moodle, Canvas, Schoology, Excel Online, and Google Forms.
- If you are stationed in a high-performing school, or in a school where many students have already
mastered other programming languages, you may want to consider flipping (or inverting) your
classroom. To learn more about the theory and practice of teaching in a flipped classroom,
Vanderbilt University offers a comprehensive introduction and links to practical
resources/examples here: [http://cft.vanderbilt.edu/guides-sub-pages/flipping-the-classroom](http://cft.vanderbilt.edu/guides-sub-pages/flipping-the-classroom).
You should still be able to use most of the resources offered in this curriculum, but you will
have to shuffle how you use the lesson plans. Some quick recommendations:
1. Use the lecture notes as given, but record the lecture for student viewing.
2. Where lecture activities have been suggested (_e.g._ think-pair-shares), consider embedding
questions into your lesson plans.
3. Save class competitions for in-class, and leave reading and self check, and
worksheet exercises for home review.
- As you read through the lesson plans, you will find several classroom teaching activities and
strategies appear repeatedly. Brief video tutorials modeling these activities can be found within
the TEALS repository. Keep an eye out for specific adjustments to the lesson plans for
error-checking and test review. While these lesson plans look identical at first glance, small
adjustments have been made for content, timing, and AP test prep.
## Updates, giving feedback, and asking questions about the curriculum
TEALS will no longer be making any updates to this curricula.
TEALS intends for our curricula to be starting points for teaching teams. We invite volunteers and classroom teachers using our curricula to fork them as appopriate! If you'd like to suggest changes or additions to a curriculum be added to the master branch, please submit a pull request containing your changes. As a best practice, each pull request should contain a singular atomic change.
For general curriculum-related questions and discussion not tied to a specific reported issue, we encourage everyone to actively participate in the GitHub Discussions board for the corresponding curriculum. This is a great place to share alternative lesson ideas, share pro-tips for implementation and differentiation, pacing advice, etc...
[20 Fun Free Tools for Interactive Classroom Collaboration]: http://tinyurl.com/k62tstg
[AP Java Quick Reference]: http://apcentral.collegeboard.com/apc/public/repository/ap_comp_sci_a_quick_reference.pdf
[Barron's AP Computer Science A review book]: https://www.amazon.com/dp/1438009194
[Curriculum Map]: https://tealsk12.github.io/apcsa-public/SUMMARY-Endorsed.md.html
[Google Hangouts]: http://hangouts.google.com
[Grudgeball]: https://www.youtube.com/watch?v=u_GzWwSrDlo
[Parson's Problems]: https://www.youtube.com/watch?v=11n-AsaCd9w
[Projects and Labs]: https://www.youtube.com/watch?v=WHvuK7LBe-o
[Skype]: http://www.skype.com
[Supporting Visual-Spatial Learners]: https://www.youtube.com/watch?v=O6yBe3J10vQ
[TEALS Program]: https://www.tealsk12.org/
[Timing and Pacing]: https://www.youtube.com/watch?v=LkGh03UZ724
[Twiddla]: http://www.twiddla.com
[Vyew]: http://www.vyew.com
[AP CS A Course Audit Instructions]: https://apcentral.collegeboard.org/pdf/ap-course-audit-user-guide.pdf