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
|