CSAwesome2 AP CSA Java Course with College Board 2025-6 Revisions¶
Welcome to CSAwesome2! It’s time to start your journey to learn how to program with Java. A shortcut way to get to this site is to type in the url: course.csawesome.org
CSAwesome is a College Board endorsed curriculum for AP Computer Science A, an introductory college-level computer programming course in Java. If you are a teacher using this curriculum, please join the teaching CSAwesome group which will give you access to teacher resources at csawesome.org.
To make sure the site saves your answers on questions, please click on the person icon at the top to register or login to your Runestone course. As you complete lessons, click the “Mark as completed” button at the bottom. Enjoy the journey!
ATTENTION high school women of color taking AP CSA or CSP: if you identify as female and as Black, Hispanic/Latina, and/or Native American, apply to participate in Sisters Rise Up. The goal of Sisters Rise Up is to help you succeed in your AP Computer Science course and on the exam. They offer one-hour help sessions several times a week and once a month special help sessions often with guest speakers from computing. If you enroll in Sisters Rise Up and send in your AP CS exam score by the end of August, you will be sent a gift card for $100. See the flyer and apply at https://tinyurl.com/55z7tyb9.
CSAwesome Units:
Table of Contents¶
- 1. Using Objects and Methods
- 1.1. Introduction to Algorithms, Programming, and Compilers
- 1.2. Variables and Data Types
- 1.3. Expressions and Output
- 1.4. Assignment and Input
- 1.5. Casting and Ranges of Values
- 1.6. Compound Assignment Operators
- 1.7. APIs and Libraries
- 1.8. Documentation with Comments and Preconditions
- 1.9. Method Signatures
- 1.10. Calling Class Methods
- 1.11. Using the Math Class
- 1.12. Objects - Instances of Classes
- 1.13. Creating and Initializing Objects: Constructors
- 1.14. Calling Instance Methods
- 1.15. Strings
- 1.15.1. String references
- 1.15.2. String Operators - Concatenation
- 1.15.3. String Index and Length
- 1.15.4. String Methods
- 1.15.5. String Methods: length, substring, indexOf
- 1.15.6. CompareTo and Equals
- 1.15.7. Common Mistakes with Strings
- 1.15.8. Coding Challenge : Pig Latin
- 1.15.9. Summary
- 1.15.10. AP Practice
- 1.15.11. String Methods Game
- 1.15.12. Review/Practice for Unit 1 Part 3 on Using Objects
- 1.16. Unit Summary 1a (1.1-1.6)
- 1.17. Mixed Up Code Practice 1.1-1.6
- 1.18. Toggle Mixed Up or Write Code Practice 1.1-1.6
- 1.19. Coding Practice 1a (1.1-1.6)
- 1.20. Multiple Choice Exercises for Unit 1a (1.1-1.6)
- 1.21. Unit Summary 1b (1.7-1.15)
- 1.22. Mixed Up Code Practice 1b (1.7-1.15)
- 1.23. Toggle Mixed Up or Write Code Practice 1b (1.7-1.15)
- 1.24. Coding Practice 1b (1.7-1.15)
- 1.25. Multiple Choice Exercises for Unit 1b (1.9-1.15)
- 1.26. Practice Test for Objects (1.12-1.14)
- 1.27. Java Swing GUIs (optional)
- 1.28. Unit 1 Free Response Question (FRQ) Practice
- 2. Selection and Iteration
- 2.1. Algorithms with Selection and Repetition
- 2.2. Boolean Expressions
- 2.3. if Statements
- 2.4. Nested if Statements
- 2.5. Compound Boolean Expressions
- 2.6. Comparing Boolean Expressions (De Morgan’s Laws)
- 2.6.1. De Morgan’s Laws
- 2.6.2. Truth Tables
- 2.6.3. Simplifying Boolean Expressions
- 2.6.4. Comparing Objects
- 2.6.5. String Equality
- 2.6.6. Equality with New Strings
- 2.6.7. Comparing with null
- 2.6.8. Coding Challenge : Truth and Tracing Tables POGIL
- 2.6.9. Summary
- 2.6.10. AP Practice
- 2.6.11. Review/Practice for Selection
- 2.7. While Loops
- 2.8. For Loops
- 2.9. Implementing Selection and Iteration Algorithms
- 2.10. Implementing String Algorithms
- 2.11. Nested Iteration
- 2.12. Informal Runtime Analysis of Loops
- 2.13. Unit Summary 2a Selection (2.1-2.6)
- 2.14. Selection Mixed Up Code Practice (2.1-2.6)
- 2.15. Selection Toggle Mixed Up or Write Code Practice (2.1-2.6)
- 2.16. Selection Coding Practice (2.1-2.6)
- 2.17. Selection Multiple Choice Exercises (2.1-2.6)
- 2.18. Selection Free Response Question (FRQ) Game Practice (2.1-2.6)
- 2.19. FRQ Style Selection Coding Practice (2.1-2.6)
- 2.20. Group Work - Remainder Operator (%)
- 2.21. Unit Summary 2b Loops (2.7-2.12)
- 2.22. Loops Mixed Up Code Practice (2.7-2.12)
- 2.23. Loops Toggle Mixed Up or Write Code Practice (2.7-2.12)
- 2.24. Loops Coding Practice (2.7-2.12)
- 2.25. Loops Multiple Choice Exercises (2.7-2.12)
- 2.26. Unit 2 Test
- 2.27. FRQ APCalendar for Loops and Control Structures
- 2.28. FRQ Self Divisor A
- 2.29. FRQ String Scramble A
- 2.30. Magpie Chatbot Lab
- 2.31. Consumer Review Lab
- 3. Class Creation
- 3.1. Abstraction and Program Design
- 3.2. Impact of Program Design
- 3.3. Anatomy of a Java Class
- 3.4. Writing Constructors
- 3.5. Methods: How to Write Them
- 3.5.1. Defining and Calling Methods
- 3.5.2. void Methods
- 3.5.3. Non-void Methods
- 3.5.4. Accessors / Getters
- 3.5.5.
toString - 3.5.6. Mutators / Setters
- 3.5.7. Parameters
- 3.5.8. Methods with Parameters that Return Calculated values
- 3.5.9. Coding Challenge : Class Pet
- 3.5.10. Design a Class for your Community
- 3.5.11. Summary
- 3.5.12. AP Practice
- 3.6. Methods: Passing and Returning References of an Object
- 3.7. Class (static) Variables and Methods
- 3.8. Scope and Access
- 3.9. this Keyword
- 3.10. Unit 3 Summary
- 3.11. Mixed Up Code Practice
- 3.12. Toggle Mixed Up or Write Code Practice
- 3.13. Multiple-Choice Exercises - Objects and Classes
- 3.14. Unit 3 Test
- 3.15. Free Response Question (FRQ) - StepTracker Class
- 3.16. Free Response Question - Time
- 3.17. Free Response Question - APLine
- 3.18. College Board Celebrity and Data Labs
- 3.19. Design a Class for your Community Project
- 4. Data Collections
- 4.1. Ethical and Social Issues Around Data Collection
- 4.2. Data Sets
- 4.3. Array Creation and Access
- 4.3.1. Declaring and Creating an Array
- 4.3.2. Using new to Create Arrays
- 4.3.3. Initializer Lists to Create Arrays
- 4.3.4. Array length
- 4.3.5. Access and Modify Array Values
- 4.3.6. Coding Challenge : Countries Array
- 4.3.7. Design an Array of Objects for your Community
- 4.3.8. Summary
- 4.3.9. AP Practice
- 4.3.10. Arrays Game
- 4.4. Array Traversals
- 4.4.1. Index Variables
- 4.4.2. Loops to Traverse Arrays
- 4.4.3. Arrays as Objects and Parameters
- 4.4.4. Looping through Part of an Array
- 4.4.5. Common Errors When Looping Through an Array
- 4.4.6. Enhanced For-Loop (For-Each) for Arrays
- 4.4.7. Enhanced For Loop Limitations
- 4.4.8. Traversing Arrays of Objects
- 4.4.9. Coding Challenge : SpellChecker
- 4.4.10. Design an Array of Objects for your Community
- 4.4.11. Summary
- 4.4.12. Arrays Game
- 4.5. Implementing Array Algorithms
- 4.6. Using Text Files
- 4.6.1. Java
File,Scanner, andIOExceptionClasses - 4.6.2. Reading in Data with Scanner
- 4.6.3. Loop to Read in a File
- 4.6.4. Save File Data into an Array
- 4.6.5. Split Strings
- 4.6.6. Object-Oriented Design with CSV Files
- 4.6.7. Coding Challenge: Array of Pokemon from Input File
- 4.6.8. Optional Challenge with a Dataset
- 4.6.9. Summary
- 4.6.1. Java
- 4.7. Wrapper Classes - Integer and Double
- 4.8. ArrayList and its Methods
- 4.8.1. import java.util.ArrayList
- 4.8.2. Declaring and Creating ArrayLists
- 4.8.3. ArrayList Methods
- 4.8.4.
size() - 4.8.5.
add(obj) - 4.8.6.
add(index,obj) - 4.8.7.
remove(index) - 4.8.8.
get(index)andset(index, obj) - 4.8.9. Comparing arrays and
ArrayLists - 4.8.10. Coding Challenge : FRQ Digits
- 4.8.11. Summary
- 4.9.
ArrayListTraversals - 4.10. Implementing
ArrayListAlgorithms - 4.11. 2D Array Creation and Access
- 4.12. 2D Array Traversals: Nested Loops
- 4.13. Implementing 2D Array Algorithms
- 4.14. Searching Algorithms
- 4.15. Sorting Algorithms
- 4.16. Recursion
- 4.17. Recursive Searching and Sorting
- 4.18. Arrays Summary
- 4.19. Arrays Mixed Up Code Practice
- 4.20. Arrays Toggle Mixed Up or Write Code Practice
- 4.21. Arrays Code Practice
- 4.22. More Code Practice with Arrays
- 4.23. Arrays Multiple-Choice Exercises
- 4.24. Practice Exam for Arrays
- 4.25. Free Response - Horse Barn A
- 4.26. Free Response - Horse Barn B
- 4.27. Free Response - Self Divisor B
- 4.28. Free Response - Sound A
- 4.29. Free Response - Sound B
- 4.30. Free Response - Number Cube A
- 4.31. Free Response - Number Cube B
- 4.32. ArrayList Summary
- 4.33. ArrayList Mixed Up Code Practice
- 4.34. ArrayList Toggle Mixed Up or Write Code Practice
- 4.35. Code Practice with ArrayLists
- 4.36. ArrayList Multiple-Choice Exercises
- 4.37. Free Response - String Scramble B
- 4.38. Free Response - Climbing Club A
- 4.39. Free Response - Climbing Club B
- 4.40. Free Response - Climbing Club C
- 4.41. Free Response - CookieOrder A
- 4.42. Free Response - CookieOrder B
- 4.43. Free Response - StringFormatter A
- 4.44. Free Response - StringFormatter B
- 4.45. Free Response - Delimiters A
- 4.46. Free Response - Delimiters B
- 4.47. Free Response - Grid World A
- 4.48. Search/Sort Multiple-Choice Exercises
- 4.49. 2D Arrays Summary
- 4.50. 2D Arrays Mixed Up Code Practice
- 4.51. 2D Arrays Toggle Mixed Up or Write Code Practice
- 4.52. Code Practice with 2D Arrays
- 4.53. More Code Practice with 2D Arrays
- 4.54. 2D Arrays Multiple-Choice Exercises
- 4.55. Free Response - Gray Image A
- 4.56. Free Response - Gray Image B
- 4.57. Free Response - Route Cipher A
- 4.58. Free Response - Route Cipher B
- 4.59. Recursion Summary
- 4.60. Recursion Mixed Up Code Practice
- 4.61. Recursion More Mixed Up Code Practice
- 4.62. Recursion Toggle Mixed Up or Write Code Practice
- 4.63. Code Practice for Recursion
- 4.64. Recursion Exercises
- 4.65. College Board Celebrity and Data Labs
- 4.66. College Board Picture Lab and Steganography Lab for 2D Arrays
- 5. Inheritance (optional)
- 5.1. Inheritance, Superclass, Subclass
- 5.2. Inheritance and Constructors
- 5.3. Overriding Methods
- 5.4. super Keyword
- 5.5. Inheritance Hierarchies
- 5.6. Polymorphism
- 5.7. Object Superclass
- 5.8. Inheritance Summary
- 5.9. Free Response Questions
- 5.10. Mixed Up Code Practice
- 5.11. Toggle Mixed Up or Write Code Practice
- 5.12. Code Practice with Object Oriented Concepts
- 5.13. Inheritance Multiple-Choice Exercises
- 5.14. College Board Celebrity Lab
- 6. Post Test and Survey
- 7. Preparing for the Exam
- 8. Timed Multiple-Choice Exams
- 9. Mixed Up Code - Free Response Practice
- 10. Free Response Practice
- 10.1. RandomStringChooser - Part A
- 10.2. RandomStringChooser - Part B
- 10.3. StringCoder - Part A
- 10.4. StringCoder - Part B
- 10.5. StudentAnswerSheet - Part A
- 10.6. StudentAnswerSheet - Part B
- 10.7. SkyView - Part A
- 10.8. SkyView - Part B
- 10.9. Hidden Word - Write Class
- 10.10. ArrayTester - Part A
- 10.11. ArrayTester - Part B
- 10.12. NumberGroup - Part B
- 10.13. NumberGroup - Part C
- 11. Stories
- 11.1. Challenges In Computing
- 11.2. Meet The Interviewees
- 11.2.1. Anaya Taylor
- 11.2.2. Bryan Hickerson
- 11.2.3. Briceida Mariscal
- 11.2.4. Carla De Lira
- 11.2.5. Camille Mbayo
- 11.2.6. Destini Deinde-Smith
- 11.2.7. Eric Espinoza
- 11.2.8. Dr. Gloria Opoku-Boateng
- 11.2.9. Dr. Juan Gilbert
- 11.2.10. Luisa Morales
- 11.2.11. Lucas Vocos
- 11.2.12. Lien Diaz
- 11.2.13. Milly Rodriguez
- 11.2.14. Dr. Nettrice Gaskins
- 12. Hidden Items
Index¶
If you see errors or bugs, please report them with this errors form. If you are a teacher who is interested in CSAwesome PDs or community, please fill out this PD interest form and join the teaching CSAwesome group which will give you access to lesson plans at csawesome.org.
(last revised 1/2025)
© Copyright 2014-2025 Barb Ericson, Univ. Michigan; 2019-2025 Beryl Hoffman, Elms College; 2023-2025 Peter Seibel, Berkeley High School. All rights reserved.
Created using Runestone.
