Library

CSAwesome
by Beryl Hoffman and Barbara Ericson
Published by CSAwesome
Computer ScienceAP
Free, interactive AP Computer Science A curriculum using Java, endorsed by the College Board and aligned with the new AP CSA standards for 2025–2026.
Adopted pages stay linked to the book. Make your own copy of any page to change it for your class.
Attribution
CSAwesome by Beryl Hoffman and Barbara Ericson, published on GitHub under CC BY-NC-SA 4.0 (https://creativecommons.org/licenses/by-nc-sa/4.0/). Access the original for free at https://github.com/bhoffman0/CSAwesome2.
Table of contents
230 pages in 11 modules. Sign up to read and adopt them.
0Getting Started9 pages
- Welcome to CSAwesome
- Preface
- About the AP CSA Exam
- Transitioning from AP CSP to AP CSA
- Java Development Environments
- Growth Mindset and Pair Programming
- Short PD Pretest
- Pretest for the AP CSA Exam
- Survey
1Using Objects and Methods30 pages
- 1.1Introduction to Algorithms, Programming, and Compilers
- 1.2Variables and Data Types
- 1.3Expressions and Output
- 1.4Assignment and Input
- 1.5Casting and Ranges of Values
- 1.6Compound Assignment Operators
- 1.7APIs and Libraries
- 1.8Documentation with Comments and Preconditions
- 1.9Method Signatures
- 1.10Calling Class Methods
- 1.11Using the Math Class
- 1.12Objects - Instances of Classes
- 1.13Creating and Initializing Objects: Constructors
- 1.14Calling Instance Methods
- 1.15Strings
- Unit Summary 1a (1.1-1.6)
- Toggle Code Practice 1a (1.1-1.6)
- Coding Practice 1a (1.1-1.6)
- Multiple Choice Exercises for Unit 1a (1.1-1.6)
- Unit Summary 1b (1.7-1.15)
- Toggle Code Practice 1b (1.7-1.15)
- Coding Practice 1b (1.7-1.15)
- Multiple Choice Exercises for Unit 1b (1.9-1.15)
- Practice Test for Objects (1.12-1.14)
- Java Swing GUIs (optional)
- Unit 1 Free Response Question (FRQ) Practice
- Unit 1A Projects
- Unit 1B Projects
- Mixed Up Code Practice 1a (1.1-1.6)
- Mixed Up Code Practice 1b (1.7-1.15)
2Selection and Iteration34 pages
- 2.1Algorithms with Selection and Repetition
- 2.2Boolean Expressions
- 2.3if Statements
- 2.4Nested if Statements
- 2.5Compound Boolean Expressions
- 2.6Comparing Boolean Expressions (De Morgan’s Laws)
- 2.7While Loops
- 2.8For Loops
- 2.9Implementing Selection and Iteration Algorithms
- 2.10Implementing String Algorithms
- 2.11Nested Iteration
- 2.12Informal Runtime Analysis of Loops
- Unit 2 Part 1 Summary on Selection (2.1-2.6)
- Selection Toggle Code Practice (2.1-2.6)
- Selection Coding Practice (2.1-2.6)
- Selection Multiple Choice Exercises (2.1-2.6)
- Selection Free Response Question (FRQ) Game Practice (2.1-2.6)
- FRQ Style Selection Coding Practice (2.1-2.6)
- Group Work - Remainder Operator (%)
- Unit 2 Part 2 Summary on Loops (2.7-2.12)
- Loops Toggle Code Practice (2.7-2.12)
- Loops Coding Practice (2.7-2.12)
- Loops Multiple Choice Exercises (2.7-2.12)
- Unit 2 Test
- FRQ 1 MessageBuilder with Loops and Strings
- FRQ APCalendar for Loops and Control Structures
- FRQ Self Divisor A
- FRQ String Scramble A
- Magpie Chatbot Lab
- Consumer Review Lab
- Unit 2A Projects
- Unit 2B Projects
- Selection Mixed Up Code Practice (2.1-2.6)
- Loops Mixed Up Code Practice (2.7-2.12)
3Class Creation22 pages
- 3.1Abstraction and Program Design
- 3.2Impact of Program Design
- 3.3Anatomy of a Java Class
- 3.4Writing Constructors
- 3.5Methods: How to Write Them
- 3.6Methods: Passing and Returning References of an Object
- 3.7Class (static) Variables and Methods
- 3.8Scope and Access
- 3.9this Keyword
- Unit 3 Summary
- Toggle Code Practice 3 (3.4-3.9)
- Unit 3 Mixed Up Code Practice
- Unit 3 Write Code Practice for Classes
- Multiple-Choice Exercises - Objects and Classes
- Unit 3 Test
- Free Response Question (FRQ) 2 Class Design - CupcakeMachine Class
- FRQ 2 Practice with Classes
- Free Response Question (FRQ) - StepTracker Class
- Free Response Question - Time
- College Board Labs
- Design a Class for your Community Project
- Unit 3 Projects
4Data Collections76 pages
- 4.1Ethical and Social Issues Around Data Collection
- 4.2Data Sets
- 4.3Array Creation and Access
- 4.4Array Traversals
- 4.5Implementing Array Algorithms
- 4.6Using Text Files
- 4.7Wrapper Classes - Integer and Double
- 4.8ArrayList and its Methods
- 4.9ArrayList Traversals
- 4.10Implementing ArrayList Algorithms
- 4.112D Array Creation and Access
- 4.122D Array Traversals: Nested Loops
- 4.13Implementing 2D Array Algorithms
- 4.14Searching Algorithms
- 4.15Sorting Algorithms
- 4.16Recursion
- 4.17Recursive Searching and Sorting
- Unit 4A - Arrays Summary
- Unit 4A - Toggle Code Practice 4a Arrays (4.1-4.6)
- Unit 4A - Arrays Code Practice
- Unit 4A - More Code Practice with Arrays
- Unit 4A - Arrays Multiple-Choice Exercises
- Unit 4A - Practice Exam for Arrays
- Unit 4A - Free Response - Horse Barn A
- Unit 4A - Free Response - Horse Barn B
- Unit 4A - Free Response - Self Divisor B
- Unit 4A - Free Response - Sound A
- Unit 4A - Free Response - Sound B
- Unit 4A - Free Response - Number Cube A
- Unit 4A - Free Response - Number Cube B
- Unit 4B - ArrayList Summary
- Unit 4B - Toggle Code Practice 4b ArrayList (4.7-4.10)
- Unit 4B - Code Practice with ArrayLists
- Unit 4B - ArrayList Multiple-Choice Exercises
- Unit 4B - Free Response Question (FRQ) 3 - ItemInventory
- Unit 4B - Free Response - Climbing Club A
- Unit 4B - Free Response - Climbing Club B
- Unit 4B - Free Response - Climbing Club C
- Unit 4B - Free Response - CookieOrder A
- Unit 4B - Free Response - CookieOrder B
- Unit 4B - Free Response - StringFormatter A
- Unit 4B - Free Response - StringFormatter B
- Unit 4B - Free Response - Delimiters A
- Unit 4B - Free Response - Delimiters B
- Unit 4D - Search/Sort Multiple-Choice Exercises
- Unit 4C - 2D Arrays Summary
- Unit 4C - Toggle Code Practice 4c 2D Arrays (4.11-4.13)
- Unit 4C - Code Practice with 2D Arrays
- Unit 4C - More Code Practice with 2D Arrays
- Unit 4C - 2D Arrays Multiple-Choice Exercises
- Unit 4C - Free Response Question (FRQ) 4 - Two-dimensional Arrays
- Unit 4C - Free Response - Gray Image A
- Unit 4C - Free Response - Gray Image B
- Unit 4C - Free Response - Route Cipher A and B
- Unit 4D - Recursion Summary
- Unit 4D - Recursion Mixed Up Code Practice
- Unit 4D - Recursion More Mixed Up Code Practice
- Unit 4D - Code Practice for Recursion
- Unit 4D - Recursion Exercises
- Optional: HashMap (Dictionary) Data Structure
- College Board Labs
- Picture Lab for 2D Arrays
- Picture Lab A1 - A3
- Picture Lab A4: 2D Arrays in Java
- Picture Lab A5: Picture Classes and Inheritance
- Picture Lab A5: Modifying a Picture
- Picture Lab A6: Mirroring Pictures
- Picture Lab A7: Mirroring Part of a Picture
- Picture Lab A8: Creating a Collage
- Picture Lab A9: Simple Edge Detection
- Unit 4A Projects
- Unit 4B Projects
- Unit 4C Projects
- Unit 4A - Arrays Mixed Up Code Practice
- Unit 4B - ArrayList Mixed Up Code Practice
- Unit 4C - 2D Arrays Mixed Up Code Practice
5Inheritance (optional)15 pages
- 5.1Inheritance, Superclass, Subclass
- 5.2Inheritance and Constructors
- 5.3Overriding Methods
- 5.4super Keyword
- 5.5Inheritance Hierarchies
- 5.6Polymorphism
- 5.7Object Superclass
- Inheritance Summary
- Free Response Questions
- Mixed Up Code Practice
- Code Practice with Object Oriented Concepts
- Inheritance Multiple-Choice Exercises
- College Board Celebrity Lab
- Practice Exam - Inheritance (not timed)
- Practice Exam - Inheritance (Timed)
6Untimed Practice Exams5 pages
- Exam 1 for the AP CSA Exam (not timed)
- Exam 2 for the AP CSA Exam (not timed)
- Exam 3 for the AP CSA Exam (not timed)
- Exam 4 for the AP CSA Exam (not timed)
- Exam 5 for the AP CSA Exam (not timed)
7Timed Practice Exams4 pages
- Practice Exam 1 for the AP CSA Exam
- Practice Exam 2 for the AP CSA Exam
- Practice Exam 3 for the AP CSA Exam
- Practice Exam 4 for the AP CSA Exam
8Free Response Practice16 pages
- FRQ 1A - Methods and Control - Part 1
- FRQ 1A - Methods and Control - Part 2
- FRQ 1A - Methods and Control - Part 3
- FRQ 1B - Strings - Part 1
- FRQ 1B - Strings - Part 2
- FRQ 1B - Strings - Part 3
- FRQ 2 - Class Design - Part 1
- FRQ 2 - Class Design - Part 2
- FRQ 2 - Class Design - Part 3
- FRQ3 - ArrayLists - Part 1
- FRQ3 - ArrayLists - Part 2
- FRQ3 - ArrayLists - Part 3
- FRQ4 - 2D Arrays - Part 1
- FRQ4 - 2D Arrays - Part 2
- FRQ4 - 2D Arrays - Part 3
- 2018 AP Exam Free Response Questions
9Mixed Up Code - Free Response Practice4 pages
- RandomStringChooser - Part A Parsons
- RandomStringChooser - Part A
- RandomStringChooser - Part B Parsons
- RandomStringChooser - Part B
10Stories15 pages
- Challenges In Computing
- Anaya Taylor
- Bryan Hickerson
- Briceida Mariscal
- Carla De Lira
- Camille Mbayo
- Destini Deinde-Smith
- Eric Espinoza
- Dr. Gloria Opoku-Boateng
- Dr. Juan Gilbert
- Luisa Morales
- Lucas Vocos
- Lien Diaz
- Milly Rodriguez
- Dr. Nettrice Gaskins