The exhaustive list of topics in Algorithms in which we provide Help with Homework Assignment and Help with Project is as follows:
- Karp-Rabin,rolling hashes principles and code
- Hashing
- Document distance
- More rolling hashes
- Python cost model, review for asymptotic notation and mergesort
- Breadth-first search and depth-first search
- Airplane scheduling, binary search trees
- Hashing: chaining, hash functions
- Searching: breadth-first search and depth-first search
- Document distance in Python
- Hashing in Python, mutability
- Balanced binary search trees
- Heaps as data structures: principles, sorting, priority queues
- Binary search trees
- Sorting: heaps
- Hashing: table doubling, Karp-Rabin
- Searching: graph search, representations, and applications
- Hashing: open addressing
- Sorting methods
- Sorting: lower bounds, linear-time sorting
- Searching: topological sort and NP-completeness
- Open addressing: theory review, Python code
- Sorting: stable sorting, radix sort
- Counting, radix and bucket sorting, gas simulation
- AVL Trees (balanced binary search trees)
- More document distance, mergesort
- Binary search trees
- Shortest paths
- Shortest paths: Bellman-Ford
- Generic shortest-path algorithm: concepts, properties
- Bellman-Ford: examples, negative-cost cycles
- Shortest paths: Dijkstra
- Hands-on Dijkstra: pseudocode, preconditions
- Priority queues: review, extended Python implementation
- Shortest paths: Dijkstra speedups
- Array implementation of Dijkstra
- Dynamic programming : memorization, Fibonacci, Crazy Eights, guessing
- Hands-on dynamic programming: big ideas, memorization in Fibonacci, crazy cards, Dijkstra and Bellman-Ford algorithm as dynamic programming
- Dynamic programming: longest common subsequence (LCS), parent pointers
- Beating Super Mario Brothers, getting points back on tests (LCS), Crazy Eights
- Dynamic programming: text justification, parenthesization, knapsack, pseudopolynomial time, Tetris training
- Dynamic programming: Maximum-sum sub-array, more Tetris
- Dynamic programming: piano fingering, structural DP (trees), vertex cover, dominating set, and beyond
- Knapsack and its variants, structural dynamic programming: covering a tree with templates, dominating set
- Numerics
- Dynamic programming: live Python coding, dominating sets, structural dynamic programming: covering a tree with templates
- Divide and conquer vs. dynamic programming on problems: matrix multiplication, tower, max-sum subarray, closest pair
- Numerics , Strassen's algorithm for matrix multiplication
- Geometric folding algorithms