Search this site
Embedded Files
AP CS A
  • AP CS A Home
  • AP CSA Cornell
  • CS Awesome
  • JAVA for Python Programmers
  • FCSP Developed Resources
AP CS A
  • AP CS A Home
  • AP CSA Cornell
  • CS Awesome
  • JAVA for Python Programmers
  • FCSP Developed Resources
  • More
    • AP CS A Home
    • AP CSA Cornell
    • CS Awesome
    • JAVA for Python Programmers
    • FCSP Developed Resources

CS Awesome

Cornell Notes For AP CSA | CS Awesome - FCPS Developed Resources | Java for Python Programmers


AP CS A Java Course

Welcome to CS Awesome! It’s time to start your journey to learn how to program with Java. A shortcut way to get to this course is to type in the url: course.csawesome.org

This course is adapted from the Runestone Java Review course to follow the 2019 College Board unit ordering and learning objectives. 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 course. As you complete lessons, click the “Mark as completed” button at the bottom. Enjoy the course!

  • Unit 1 Getting Started and Primitive Types

  • Unit 2 Using Objects

  • Unit 3 If Statements

  • Unit 4 Iteration/Loops

  • Unit 5 Writing Classes

  • Unit 6 Arrays

  • Unit 7 ArrayLists

  • Unit 8 2D Arrays

  • Unit 9 Inheritance

  • Unit 10 Recursion

  • Practice units: 11, 12, 13, 14, 15

Table of Contents

  • Assignments

  • 1. Getting Started and Primitive Types

    • 1.1. Getting Started

      • 1.1.1. Preface

      • 1.1.2. About the AP CS A Exam

      • 1.1.3. Transitioning from AP CSP to AP CS A

      • 1.1.4. Java Development Environments

      • 1.1.5. Growth Mindset and Pair Programming

      • 1.1.6. Pretest for the AP CS A Exam

      • 1.1.7. Survey

    • 1.2. Why Programming? Why Java?

      • 1.2.1. First Java Program

      • 1.2.2. Print Commands

      • 1.2.3. Syntax Errors and Debugging

      • 1.2.4. Comments

      • 1.2.5. Debugging Challenge

      • 1.2.6. Summary

      • 1.2.7. AP Practice

    • 1.3. Variables and Data Types

      • 1.3.1. What is a Variable?

      • 1.3.2. Data Types

      • 1.3.3. Declaring Variables in Java

      • 1.3.4. Naming Variables

      • 1.3.5. Debugging Challenge : Weather Report

      • 1.3.6. Summary

      • 1.3.7. AP Practice

    • 1.4. Expressions and Assignment Statements

      • 1.4.1. Assignment Statements

      • 1.4.2. Adding 1 to a Variable

      • 1.4.3. Input with Variables

      • 1.4.4. Operators

      • 1.4.5. The Modulo Operator

      • 1.4.6. Programming Challenge : Dog Years

      • 1.4.7. Summary

      • 1.4.8. AP Practice

    • 1.5. Compound Assignment Operators

      • 1.5.1. Code Tracing Challenge and Operators Maze

      • 1.5.2. Summary

    • 1.6. Casting and Ranges of Variables

      • 1.6.1. Programming Challenge : Average 3 Numbers

      • 1.6.2. Summary

    • 1.7. Unit 1 Summary

      • 1.7.1. Concept Summary

      • 1.7.2. Java Keyword Summary

      • 1.7.3. Vocabulary Practice

      • 1.7.4. Common Mistakes

    • 1.8. Unit 1 Mixed Up Code Practice

    • 1.9. Unit 1 Coding Practice

    • 1.10. Multiple Choice Exercises

  • 2. Using Objects

    • 2.1. Objects - Instances of Classes

      • 2.1.1. What are Objects and Classes?

      • 2.1.2. Intro to Objects with Turtles

      • 2.1.3. Creating Turtle Objects

      • 2.1.4. Programming Challenge : Turtle Drawing

      • 2.1.5. Summary

      • 2.1.6. AP Practice

    • 2.2. Creating and Initializing Objects: Constructors

      • 2.2.1. Overloading Constructors

      • 2.2.2. The World Class Constructors

      • 2.2.3. The Turtle Class Constructors

      • 2.2.4. Object Variables and References

      • 2.2.5. Constructor Signatures

      • 2.2.6. Formal and Actual Parameters

      • 2.2.7. Programming Challenge: Custom Turtles

      • 2.2.8. Summary

      • 2.2.9. AP Practice

    • 2.3. Calling Methods Without Parameters

      • 2.3.1. Procedural Abstraction

      • 2.3.2. Programming Challenge : Draw a Letter

      • 2.3.3. Summary

      • 2.3.4. AP Practice

    • 2.4. Calling Methods With Parameters

      • 2.4.1. Tracing Methods

      • 2.4.2. Programming Challenge : Turtle House

      • 2.4.3. Summary

      • 2.4.4. AP Practice

    • 2.5. Calling Methods that Return Values

      • 2.5.1. Get Methods

      • 2.5.2. toString() Methods

      • 2.5.3. Methods with Arguments and Return Values

      • 2.5.4. Programming Challenge : Turtle Distances

      • 2.5.5. Summary

      • 2.5.6. AP Practice

    • 2.6. Strings

      • 2.6.1. String Operators - Concatenation

      • 2.6.2. Programming Challenge : Mad Libs

      • 2.6.3. Summary

    • 2.7. String Methods

      • 2.7.1. String Methods: length, substring, indexOf

      • 2.7.2. CompareTo and Equals

      • 2.7.3. Common Mistakes with Strings

      • 2.7.4. Programming Challenge : Pig Latin

      • 2.7.5. Summary

      • 2.7.6. String Methods Game

    • 2.8. Wrapper Classes - Integer and Double

      • 2.8.1. Programming Challenge : Debugging

      • 2.8.2. Summary

    • 2.9. Using the Math Class

      • 2.9.1. Programming Challenge : Random Numbers

      • 2.9.2. Summary

    • 2.10. Unit 2 Summary

      • 2.10.1. Concept Summary

      • 2.10.2. Java Keyword Summary

      • 2.10.3. Vocabulary Practice

      • 2.10.4. Common Mistakes

    • 2.11. Mixed Up Code Practice

    • 2.12. Coding Practice

    • 2.13. Practice Test for Objects (2.1-2.5)

    • 2.14. Multiple Choice Exercises

      • 2.14.1. Easier Multiple Choice Questions

      • 2.14.2. Medium Multiple Choice Questions

      • 2.14.3. Hard Multiple Choice Questions

    • 2.15. Java Swing GUIs (optional)

  • 3. Boolean Expressions and If Statements

    • 3.1. Boolean Expressions

      • 3.1.1. Testing Equality (==)

      • 3.1.2. Relational Operators (<, >)

      • 3.1.3. Testing with mod (%)

      • 3.1.4. Programming Challenge : Prime Numbers POGIL

      • 3.1.5. Summary

      • 3.1.6. Relational Operators Practice Game

    • 3.2. if Statements and Control Flow

      • 3.2.1. Relational Operators in If Statements

      • 3.2.2. Common Errors with If Statements

      • 3.2.3. Programming Challenge : Magic 8 Ball

      • 3.2.4. Summary

    • 3.3. Two-way Selection: if-else Statements

      • 3.3.1. Nested Ifs and Dangling Else

      • 3.3.2. Programming Challenge : 20 Questions

      • 3.3.3. Summary

    • 3.4. Multi-Selection: else-if Statements

      • 3.4.1. Programming Challenge : Adventure

      • 3.4.2. Summary

    • 3.5. Compound Boolean Expressions

      • 3.5.1. And (&&), Or (||), and Not (!)

      • 3.5.2. Truth Tables

      • 3.5.3. Short Circuit Evaluation

      • 3.5.4. Programming Challenge : Truth Tables POGIL

      • 3.5.5. Summary

      • 3.5.6. Boolean Game

    • 3.6. Equivalent Boolean Expressions (De Morgan’s Laws)

      • 3.6.1. De Morgan’s Laws

      • 3.6.2. Truth Tables

      • 3.6.3. Simplifying Boolean Expressions

      • 3.6.4. Programming Challenge : Truth Tables POGIL

      • 3.6.5. Summary

    • 3.7. Comparing Objects

      • 3.7.1. String Equality

      • 3.7.2. Equality with New Strings

      • 3.7.3. Comparing with null

      • 3.7.4. Programming Challenge : Tracing Code

      • 3.7.5. Summary

    • 3.8. Unit 3 - Summary

      • 3.8.1. Concept Summary

      • 3.8.2. Java Keyword Summary

      • 3.8.3. Vocabulary Practice

      • 3.8.4. Common Mistakes

    • 3.9. Mixed Up Code Practice

    • 3.10. Coding Practice

    • 3.11. Multiple Choice Exercises

      • 3.11.1. Easier Multiple Choice Questions

      • 3.11.2. Medium Multiple Choice Questions

      • 3.11.3. Hard Multiple Choice Questions

    • 3.12. Magpie Chatbot Lab

      • 3.12.1. Magpie ChatBot Lab

      • 3.12.2. Activity 2: Running Simplified Magpie Code

      • 3.12.3. Activity 3: Better Keyword Detection

      • 3.12.4. Activity 4: Responses that Transform Statements

      • 3.12.5. Mixed Up Code Practice

  • 4. Iteration (Loops)

    • 4.1. While Loops

      • 4.1.1. Three Steps to Writing a Loop

      • 4.1.2. Tracing Loops

      • 4.1.3. Common Errors with Loops

      • 4.1.4. Input-Controlled Loops

      • 4.1.5. Programming Challenge : Guessing Game

      • 4.1.6. Summary

    • 4.2. For Loops

      • 4.2.1. Three Parts of a For Loop

      • 4.2.2. Decrementing Loops

      • 4.2.3. Turtle Loops

      • 4.2.4. Programming Challenge : Turtles Drawing Shapes

      • 4.2.5. Summary

    • 4.3. Loops and Strings

      • 4.3.1. While Find and Replace Loop

      • 4.3.2. For Loops: Reverse String

      • 4.3.3. Programming Challenge : String Replacement Cats and Dogs

      • 4.3.4. Summary

    • 4.4. Nested For Loops

      • 4.4.1. Nested Loops with Turtles

      • 4.4.2. Programming Challenge : Turtle Snowflakes

      • 4.4.3. Summary

    • 4.5. Loop Analysis

      • 4.5.1. Tracing Loops

      • 4.5.2. Counting Loop Iterations

      • 4.5.3. Programming Challenge : POGIL Analyzing Loops

      • 4.5.4. Summary

      • 4.5.5. Loop Analysis Game

    • 4.6. Unit 4 Summary

      • 4.6.1. Concept Summary

      • 4.6.2. Java Keyword Summary

      • 4.6.3. Vocabulary Practice

      • 4.6.4. Common Mistakes

    • 4.7. Mixed Up Code Practice

    • 4.8. Coding Practice with Loops

    • 4.9. Multiple Choice Exercises

      • 4.9.1. Easier Multiple Choice Questions

      • 4.9.2. Medium Multiple Choice Questions

      • 4.9.3. More Practice

    • 4.10. Free Response Questions (FRQs) for Control Structures

      • 4.10.1. 2019 APCalendar FRQ

      • 4.10.2. Part A: numberOfLeapYear()

      • 4.10.3. How to solve numberOfLeapYears()

      • 4.10.4. Part B: dayOfWeek()

    • 4.11. Free Response - Self Divisor A

      • 4.11.1. How to solve this problem

      • 4.11.2. Video - One way to code the solution

    • 4.12. Free Response - String Scramble A

      • 4.12.1. How to solve this problem

      • 4.12.2. Figuring out the algorithm

      • 4.12.3. Write the Code

      • 4.12.4. Video - One way to code the solution

    • 4.13. Consumer Review Lab

      • 4.13.1. Activity 0 Analyzing Reviews

      • 4.13.2. Activity 1 : Sentiment Value

      • 4.13.3. Activity 2 :Total Sentiment Value and Star Ratings

      • 4.13.4. Activity 3 : Autogenerate a Fake Review

      • 4.13.5. Activity 4 : Create a More Positive or Negative Review

      • 4.13.6. Activity 5 : Open-ended Activity

  • 5. Writing Classes

    • 5.1. Anatomy of a Java Class

      • 5.1.1. Creating a Class

      • 5.1.2. Instance Variables

      • 5.1.3. Methods

      • 5.1.4. Object-Oriented Design

      • 5.1.5. Programming Challenge : Riddle Class

      • 5.1.6. Summary

      • 5.1.7. AP Practice

    • 5.2. Writing Constructors

      • 5.2.1. Programming Challenge : Student Class

      • 5.2.2. Summary

      • 5.2.3. AP Practice

    • 5.3. Comments and Conditions

      • 5.3.1. Comments

      • 5.3.2. Preconditions and Postconditions

      • 5.3.3. Software Validity and Use-Case Diagrams

      • 5.3.4. Agile Software Development

      • 5.3.5. Programming Challenge : Comments and Conditions

      • 5.3.6. Summary

    • 5.4. Accessor Methods

      • 5.4.1. toString()

      • 5.4.2. Programming Challenge : Class Pet

      • 5.4.3. Summary

      • 5.4.4. AP Practice

    • 5.5. Mutator Methods

      • 5.5.1. Programming Challenge : Class Pet Setters

      • 5.5.2. Summary

      • 5.5.3. AP Practice

    • 5.6. Writing Methods

      • 5.6.1. Parameters

      • 5.6.2. Programming Challenge : Song with Parameters

      • 5.6.3. Summary

      • 5.6.4. AP Practice

    • 5.7. Static Variables and Methods

      • 5.7.1. Programming Challenge : Static Song and counter

      • 5.7.2. Summary

    • 5.8. Scope and Access

      • 5.8.1. Programming Challenge : Debugging

      • 5.8.2. Summary

      • 5.8.3. AP Practice

    • 5.9. this Keyword

      • 5.9.1. Programming Challenge : Bank Account

      • 5.9.2. Summary

      • 5.9.3. AP Practice

    • 5.10. Social Impacts of CS

      • 5.10.1. POGIL Groupwork: Impacts of CS

      • 5.10.2. Summary

    • 5.11. Unit 5 Summary

      • 5.11.1. Concept Summary

      • 5.11.2. Java Keyword Summary

      • 5.11.3. Vocabulary Practice

    • 5.12. Exercises

    • 5.13. Free Response Question (FRQ) for Classes

      • 5.13.1. 2019 StepTracker Class FRQ

      • 5.13.2. Determining the Instance Variables

      • 5.13.3. Writing the Class Header and Constructor

      • 5.13.4. Writing the Accessor Method activeDays

      • 5.13.5. Writing the Mutator Method addDailySteps

      • 5.13.6. Writing the Accessor Method averageSteps

    • 5.14. Free Response Question - Time

    • 5.15. Free Response Question - APLine

      • 5.15.1. Try and Solve It

    • 5.16. Midterm Test

    • 5.17. College Board Celebrity and Data Labs

  • 6. Arrays

    • 6.1. Array Creation and Access

      • 6.1.1. Declaring and Creating an Array

      • 6.1.2. Using new to Create Arrays

      • 6.1.3. Initializer Lists to Create Arrays

      • 6.1.4. Array length

      • 6.1.5. Access and Modify Array Values

      • 6.1.6. Programming Challenge : Countries Array

      • 6.1.7. Summary

      • 6.1.8. Arrays Game

    • 6.2. Traversing Arrays with For Loops

      • 6.2.1. Index Variables

      • 6.2.2. For Loop to Traverse Arrays

      • 6.2.3. Looping From Back to Front

      • 6.2.4. Looping through Part of an Array

      • 6.2.5. Common Errors When Looping Through an Array

      • 6.2.6. Programming Challenge : SpellChecker

      • 6.2.7. Summary

      • 6.2.8. Arrays Game

    • 6.3. Enhanced For-Loop (For-Each) for Arrays

      • 6.3.1. Foreach Loop Limitations

      • 6.3.2. Foreach Loop Algorithms

      • 6.3.3. Programming Challenge : SpellChecker 2

      • 6.3.4. Summary

    • 6.4. Array Algorithms (FRQs)

      • 6.4.1. Free Response - Horse Barn A

      • 6.4.2. Free Response - Horse Barn B

      • 6.4.3. Free Response - Self Divisor B

      • 6.4.4. Free Response - Sound A

      • 6.4.5. Free Response - Sound B

      • 6.4.6. Free Response - Number Cube A

      • 6.4.7. Free Response - Number Cube B

    • 6.5. Unit 6 Summary

      • 6.5.1. Concept Summary

      • 6.5.2. Java Keyword Summary

      • 6.5.3. Vocabulary Practice

      • 6.5.4. Common Mistakes

    • 6.6. Mixed Up Code Practice

    • 6.7. Code Practice with Arrays

      • 6.7.1. More Practice

    • 6.8. Multiple-Choice Exercises

      • 6.8.1. Easier Multiple Choice Questions

      • 6.8.2. Medium Multiple Choice Questions

      • 6.8.3. Hard Multiple Choice Questions

    • 6.9. Practice Exam for Arrays

  • 7. ArrayList

    • 7.1. Intro to ArrayLists

      • 7.1.1. Import Package

      • 7.1.2. Declaring and Creating ArrayLists

      • 7.1.3. Programming Challenge : FRQ Digits

      • 7.1.4. Summary

    • 7.2. ArrayList Methods

      • 7.2.1. Size()

      • 7.2.2. Add(obj) to an ArrayList

      • 7.2.3. Add(index,obj) in an ArrayList

      • 7.2.4. Remove(index) from ArrayList

      • 7.2.5. ArrayList get/set Methods

      • 7.2.6. Comparing arrays and ArrayLists

      • 7.2.7. Programming Challenge : Array to ArrayList

      • 7.2.8. Summary

    • 7.3. Traversing ArrayLists with Loops

      • 7.3.1. Enhanced For Each Loop

      • 7.3.2. For Loop

      • 7.3.3. While Loop

      • 7.3.4. ArrayList of Student Objects

      • 7.3.5. Programming Challenge : FRQ Word Pairs

      • 7.3.6. Summary

    • 7.4. ArrayList Algorithms

      • 7.4.1. Free Response - String Scramble B

      • 7.4.2. Free Response - Climbing Club A

      • 7.4.3. Free Response - Climbing Club B

      • 7.4.4. Free Response - Climbing Club C

      • 7.4.5. Free Response - CookieOrder A

      • 7.4.6. Free Response - CookieOrder B

      • 7.4.7. Free Response - StringFormatter A

      • 7.4.8. Free Response - StringFormatter B

      • 7.4.9. Free Response - Delimiters A

      • 7.4.10. Free Response - Delimiters B

      • 7.4.11. Free Response - Grid World A (Not Complete)

    • 7.5. Searching Algorithms

      • 7.5.1. Sequential Search

      • 7.5.2. Binary Search

      • 7.5.3. Runtimes

      • 7.5.4. Programming Challenge : Search Runtimes

      • 7.5.5. Summary

    • 7.6. Sorting Algorithms

      • 7.6.1. Selection Sort

      • 7.6.2. Insertion Sort

      • 7.6.3. Programming Challenge : Sort Runtimes

      • 7.6.4. Summary

    • 7.7. Ethics of Data Collection and Data Privacy

      • 7.7.1. POGIL Groupwork: Data Privacy

      • 7.7.2. Summary

    • 7.8. ArrayList Summary

      • 7.8.1. Concept Summary

      • 7.8.2. Vocabulary Practice

      • 7.8.3. Common Mistakes

    • 7.9. Mixed Up Code Practice

    • 7.10. Code Practice with ArrayLists

    • 7.11. Multiple-Choice Exercises

      • 7.11.1. Easier Multiple Choice Questions

      • 7.11.2. Medium Multiple Choice Questions

      • 7.11.3. Hard Multiple Choice Questions

      • 7.11.4. Easier Search/Sort Multiple Choice Questions

      • 7.11.5. Medium Search/Sort Multiple Choice Questions

      • 7.11.6. Hard Search/Sort Multiple Choice Questions

    • 7.12. College Board Celebrity and Data Labs

  • 8. 2D Arrays

    • 8.1. Two-dimensional (2D) Arrays

      • 8.1.1. 2D Arrays (Day 1)

      • 8.1.2. Array Storage

      • 8.1.3. How Java Stores 2D Arrays

      • 8.1.4. Declaring 2D Arrays

      • 8.1.5. Set Value(s) in a 2D Array (Day 2)

      • 8.1.6. Initializer Lists for 2D Arrays

      • 8.1.7. Get a Value from a 2D Array

      • 8.1.8. Programming Challenge : ASCII Art

      • 8.1.9. Summary

      • 8.1.10. 2D Arrays Game

    • 8.2. Traversing 2D Arrays (nested loops)

      • 8.2.1. Nested Loops for 2D Arrays (Day 1)

      • 8.2.2. Getting the Number of Rows and Columns

      • 8.2.3. Looping Through a 2D Array

      • 8.2.4. Enhanced For-Each Loop for 2D Arrays (Day 2)

      • 8.2.5. 2D Array Algorithms

      • 8.2.6. Programming Challenge : Picture Lab

      • 8.2.7. Summary

      • 8.2.8. 2D Arrays and Loops Game

    • 8.3. 2D Arrays Summary

      • 8.3.1. Concept Summary

      • 8.3.2. Vocabulary Practice

      • 8.3.3. Common Mistakes

    • 8.4. Mixed Up Code Practice

    • 8.5. Code Practice with 2D Arrays

    • 8.6. Free Response Questions

      • 8.6.1. Free Response - Gray Image A

      • 8.6.2. Free Response - Gray Image B

      • 8.6.3. Free Response - Route Cipher A

      • 8.6.4. Free Response - Route Cipher B

    • 8.7. Multiple-Choice Exercises

      • 8.7.1. Easier Multiple Choice Questions

      • 8.7.2. Medium Multiple Choice Questions

      • 8.7.3. Hard Multiple Choice Questions

      • 8.7.4. More Practice

    • 8.8. College Board Labs for 2D Arrays

      • 8.8.1. Picture Lab Day 3: Exploring a Picture (not complete)

      • 8.8.2. Picture Lab Day 4: 2D Arrays in Java (not complete)

  • 9. Inheritance

    • 9.1. Inheritance, Superclass, Subclass

      • 9.1.1. Inheritance (Day 1)

      • 9.1.2. Subclass extends Superclass

      • 9.1.3. Why Use Inheritance?

      • 9.1.4. is-a vs. has-a (Day 2)

      • 9.1.5. is-a Substitution Test

      • 9.1.6. Programming Challenge : Online Store

      • 9.1.7. Summary

    • 9.2. Inheritance and Constructors

      • 9.2.1. Programming Challenge : Square is-a Rectangle

      • 9.2.2. Summary

    • 9.3. Overriding Methods

      • 9.3.1. Overloading Methods

      • 9.3.2. Inherited Get/Set Methods

      • 9.3.3. Programming Challenge : Pet Sounds

      • 9.3.4. Summary

    • 9.4. super Keyword

      • 9.4.1. Programming Challenge : Customer Info

      • 9.4.2. Summary

    • 9.5. Inheritance Hierarchies

      • 9.5.1. Superclass References

      • 9.5.2. Superclass Method Parameters

      • 9.5.3. Superclass Arrays and ArrayLists

      • 9.5.4. Programming Challenge : Shopping Cart

      • 9.5.5. Summary

    • 9.6. Polymorphism

      • 9.6.1. Programming Challenge : Shopping Cart 2

      • 9.6.2. Summary

    • 9.7. Object Superclass

      • 9.7.1. toString() method

      • 9.7.2. equals Method

      • 9.7.3. Overriding the equals Method

      • 9.7.4. Programming Challenge : Savings Account

      • 9.7.5. Summary

    • 9.8. Inheritance Summary

      • 9.8.1. Concept Summary

      • 9.8.2. Java Keyword Summary

      • 9.8.3. Vocabulary Practice

      • 9.8.4. Common Mistakes

    • 9.9. Free Response Questions

      • 9.9.1. Free Response - Trio A

      • 9.9.2. Trio Student Solution 1

      • 9.9.3. Trio Student Solution 2

      • 9.9.4. Trio Student Solution 3

    • 9.10. Mixed Up Code Practice

    • 9.11. Code Practice with Object Oriented Concepts

    • 9.12. Multiple-Choice Exercises

      • 9.12.1. Easier Multiple Choice Questions

      • 9.12.2. Medium Multiple Choice Questions

      • 9.12.3. Hard Multiple Choice Questions

      • 9.12.4. More Practice

    • 9.13. College Board Celebrity Lab

  • 10. Recursion

    • 10.1. Recursion

      • 10.1.1. What is Recursion? (Day 1)

      • 10.1.2. Why use Recursion?

      • 10.1.3. Factorial Method

      • 10.1.4. Base Case

      • 10.1.5. Tracing Recursive Methods (Day 2)

      • 10.1.6. Tracing Challenge : Recursion

      • 10.1.7. Summary

    • 10.2. Recursive Searching and Sorting

      • 10.2.1. Recursive Binary Search

      • 10.2.2. Merge Sort

      • 10.2.3. Tracing Challenge : Recursive Search and Sort

      • 10.2.4. Summary

    • 10.3. Recursion Summary

      • 10.3.1. Concept Summary

      • 10.3.2. Vocabulary Practice

      • 10.3.3. Common Mistakes

    • 10.4. Mixed Up Code Practice

    • 10.5. More Mixed Up Code Practice

    • 10.6. Code Practice for Recursion

    • 10.7. Exercises

      • 10.7.1. Base Case Practice

      • 10.7.2. Easier Multiple Choice Questions

      • 10.7.3. Medium Multiple Choice Questions

      • 10.7.4. Hard Multiple Choice Questions

  • 11. Post Test and Survey

    • 11.1. Post Test

    • 11.2. Post-Survey

  • 12. Preparing for the Exam

    • 12.1. Preparing for the AP CS A Exam

    • 12.2. Exam 1 for the AP CS A Exam (not timed)

    • 12.3. Exam 2 for the AP CS A Exam (not timed)

    • 12.4. Exam 3 for the AP CS A Exam (not timed)

    • 12.5. Exam 4 for the AP CS A Exam (not timed)

    • 12.6. Exam 5 for the AP CS A Exam (not timed)

    • 12.7. Exercises

  • 13. Timed Multiple-Choice Exams

    • 13.1. Practice Exam 1 for the AP CS A Exam

    • 13.2. Practice Exam 2 for the AP CS A Exam

    • 13.3. Practice Exam 3 for the AP CS A Exam

    • 13.4. Practice Exam X

  • 14. Mixed Up Code - Free Response Practice

    • 14.1. RandomStringChooser - Part A Parsons

      • 14.1.1. Mixed Up Code Practice

      • 14.1.2. More Mixed Up Code Practice

    • 14.2. RandomStringChooser - Part A

      • 14.2.1. Try and Solve It - Again

    • 14.3. RandomStringChooser - Part B Parsons

    • 14.4. RandomStringChooser - Part B - 2nd time

      • 14.4.1. Try and Solve It - Again

    • 14.5. Exercises

  • 15. Free Response Practice

    • 15.1. RandomStringChooser - Part A

      • 15.1.1. Try and Solve It

    • 15.2. RandomStringChooser - Part B

      • 15.2.1. Try and Solve It

    • 15.3. StringCoder - Part A

      • 15.3.1. Try and Solve It

    • 15.4. StringCoder - Part B

      • 15.4.1. Try and Solve It

    • 15.5. StudentAnswerSheet - Part A

      • 15.5.1. Try and Solve It

    • 15.6. StudentAnswerSheet - Part B

      • 15.6.1. Try and Solve It

    • 15.7. SkyView - Part A

      • 15.7.1. Try and Solve It

    • 15.8. SkyView - Part B

      • 15.8.1. Try and Solve It

    • 15.9. Hidden Word - Write Class

      • 15.9.1. Try and Solve It

    • 15.10. ArrayTester - Part A

      • 15.10.1. Try and Solve It

    • 15.11. ArrayTester - Part B

      • 15.11.1. Try and Solve It

    • 15.12. NumberGroup - Part B

      • 15.12.1. Try and Solve It

    • 15.13. NumberGroup - Part C

      • 15.13.1. Try and Solve It

    • 15.14. Exercises

Index

  • Index

  • Search Page

If you see errors or bugs, please report them with this errors form. If you are a teacher who is interested in CS Awesome 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 5/26/2021)

© Copyright 2015 Barb Ericson, Univ. Michigan, 2019 revised by Beryl Hoffman (Elms College). Created using Runestone.


Report abuse
Page details
Page updated
Report abuse