AP CSA

Algorithms To facts …

Topic Basic Intermediate Advanced
Algorithmic analysis
Understand the concept of counting statement executions
Analyze simple loops to determine how many times they execute
Compare algorithms informally based on efficiency
Understand the concept of how runtime grows with problem size
Analyze more complex nested loops and recursive algorithms
Introduce the concept of Big O notation for algorithm analysis
Standard algorithms for arrays and ArrayLists
Implement algorithms to find sum, average, min, and max of an array
Write code to determine if at least one element has a particular property
Implement algorithms to check if all elements have a particular property
Write code to access all consecutive pairs of elements
Implement algorithms to detect duplicates, count elements meeting criteria
Write code to shift, rotate, or reverse elements in an array
String algorithms
Implement algorithms to find substrings with particular properties
Write code to count substrings meeting specific criteria
Implement more complex string manipulation algorithms
Write code to reverse a string
Implement efficient string matching algorithms
Understand and implement string compression algorithms
Search algorithms
Implement and understand linear search
Analyze the efficiency of linear search
Understand the concept of binary search
Implement binary search iteratively
Implement binary search recursively
Analyze and compare the efficiency of linear and binary search
Sort algorithms
Understand and implement selection sort
Analyze the efficiency of selection sort
Understand and implement insertion sort
Compare the efficiency of selection and insertion sort
Understand the concept of merge sort
Analyze the efficiency of merge sort compared to simpler sorts
Implement insertion sort.
Implement selection sort.
Recursion
Understand the concept of a recursive method
Identify base cases and recursive calls in simple recursive methods
Implement simple recursive methods
Understand how recursive calls manage their own set of local variables
Implement more complex recursive algorithms
Compare recursive and iterative solutions to the same problem