The exhaustive list of topics in Algorithms in which we provide **Help with Homework Assignment** and **Help with Project** is as follows:

- Algorithmic thinking
- Peak finding
- Computation
- Python cost model
- Document distance
- Sorting and Trees
- Insertion sort
- Merge sort
- Heaps and heap sort
- Binary search trees
- BST sort
- AVL trees
- AVL sort
- Counting sort
- Radix sort

- Hashing
- Hashing with chaining
- Table doubling
- Karp-Rabin
- Open addressing
- Cryptographic hashing

- Numeric’s
- Integer arithmetic
- Karatsuba multiplication
- Square roots
- Newton's method

- Graphs
- Breadth-first search (BFS)
- Depth-first search (DFS),
- Topological sorting

- Shortest Paths
- Single-source shortest paths problem
- Dijkstra
- Bellman-Ford
- Speeding up Dijkstra

- Dynamic Programming
- Memoization
- Sub problems
- Guessing
- Bottom-up
- Fibonacci
- Shortest paths
- Parent pointers
- Text justification
- Perfect-information blackjack
- String
- Psuedopolynomial time
- Parenthesization
- Knapsack
- Computational complexity
- Algorithms
- Document distance in Python (
- Python cost model
- Asymptotic notation and merge sort
- Binary search trees
- Binary search trees
- Balanced binary search trees
- AVL Trees (balanced binary search trees)
- Hashing
- Chaining
- Hash functions
- Hashing in Python
- Doubling, Karp-Rabin
- Open addressing
- Theory review
- Python code
- Rolling hashes

- Sorting
- Heaps
- Sorting methods
- Heaps as data structures
- Priority queues
- Lower bounds
- Linear-time sorting
- Stable sorting
- Radix sort
- Counting
- Radix and bucket sorting
- Gas simulation

- Graph search
- Breadth-first search and depth-first search
- Topological sort and NP-completeness
- Breadth-first search and depth-first search
- Shortest paths
- Bellman-Ford
- Generic shortest-path algorithm
- Bellman-Ford
- Dijkstra
- Priority queues
- Array implementation of Dijkstra
- Memorization
- Fibonacci
- Crazy Eights
- Guessing

- Beating Super Mario Brothers
- Getting points back on tests (LCS)
- Crazy Eights
- Piano fingering
- Structural DP (trees)
- Vertex cove
- Dominating set
- Structural dynamic programming
- Dynamic programming practice
- Live Python coding
- Dominating sets
- Structural dynamic programming

- Divide and conquer
- Matrix multiplication
- Tower
- Max-sum sub array
- Closest pair
- Stassen’s algorithm for matrix multiplication
- Insertion Sort
- Merge sort
- Horner's rule
- Asymptotic Notation
- Polynomial Multiplication
- Recurrences
- Sloppiness
- Quick sort
- Randomized Algorithms
- Heap sort
- Dynamic Sets
- Priority Queues
- Linear-time Sorting
- Lower Bounds
- Counting Sort
- Radix Sort

- Order Statistics
- Median
- Bucket sort
- Binary Search Trees,
- Tree Walks
- Bests to Quick sort
- Random BST
- Red-black Trees
- Rotations
- Insertions
- Deletions
- 2-3 Trees
- B-trees

- Amortized Algorithms
- Table Doubling
- Potential Method
- Greedy Algorithms
- Minimum Spanning Trees
- Bellman-Ford
- Linear Programming
- Difference Constraints
- Graph Searching
- Depth-first Search
- Topological Sort

- All-pairs Shortest Paths
- Matrix Multiplication
- Floyd-War shall