Who This Page Is For
The Algorithms class student
You're in CS 2 / CS 3 / Algorithms (or CLRS-style class) and the homework feels harder than the lectures suggested. Recursion and DP eat your weekends. We fix that.
The interview prepper
You're grinding LeetCode and need someone to help you stop solving problems by luck and start solving them by pattern. We work problems together with timing and complexity discussion.
The "I can write code but can't analyze it" student
You ship working solutions but can't say whether they're O(n) or O(n²). We build complexity intuition until Big-O becomes second nature.
What We Cover
Complexity & Analysis
- Big-O, Big-Theta, Big-Omega
- Amortized analysis
- Recursion tree method
- Master theorem
- Space vs. time tradeoffs
Data Structures
- Arrays, strings, hash tables
- Linked lists, stacks, queues
- Trees, BSTs, heaps
- Tries, segment trees, Fenwick trees
- Union-Find / DSU
- Graphs (adjacency list/matrix)
Sorting & Searching
- Bubble, insertion, selection
- Merge sort, quicksort, heapsort
- Counting / radix / bucket sort
- Binary search variations
- Search on rotated/sorted arrays
Recursion & Divide and Conquer
- Base cases and recursive structure
- Backtracking (N-queens, sudoku, permutations)
- Subsets and combinations
- Divide and conquer paradigm
Dynamic Programming
- Memoization vs. tabulation
- 1D DP, 2D DP, knapsack variants
- Longest common subsequence
- Coin change, edit distance
- Interval DP, bitmask DP
Graph Algorithms
- BFS, DFS, connected components
- Topological sort
- Dijkstra, Bellman-Ford
- Floyd-Warshall, A*
- Kruskal, Prim (MST)
- Max flow basics
How I'd Walk You Through Spotting Dynamic Programming
The hardest part of DP isn't writing the code — it's recognizing when a problem wants DP. Here's how we'd build that radar.
- Test whether greedy works. Greedy says "always take the biggest." That gives
5 + 5 + 1= 3 coins for 11. Lucky. But for coins [1, 3, 4] and amount 6, greedy says4 + 1 + 1= 3, when3 + 3= 2 is better. Greedy fails in general. That's signal #1 for DP. - Look for "overlapping subproblems." To make 11, you'd try every coin and recursively solve 10, 9, 6. To solve 10, you'd try 9, 8, 5 — and 9 already appeared. Same subproblems repeat. Signal #2 for DP.
- Define the state.
dp[n]= minimum coins to make amount n. State is just "the amount left." - Write the recurrence.
dp[n] = 1 + min(dp[n-c] for c in coins if n-c >= 0). Base case:dp[0] = 0. - Choose top-down (memo) or bottom-up (table). Bottom-up is cleaner here: loop n from 1 to 11, fill
dpas you go. Final answer:dp[11]. Complexity: O(amount × coins).
Where Students Usually Get Stuck
"Recursion makes my head spin"
We work through the recursion stack with diagrams, not just code. After you visualize a few recursions, the "magic" disappears.
"I memorized sorts but can't derive their Big-O"
We rebuild Big-O from scratch — counting operations, recognizing patterns. By the end you'll read code and see the complexity automatically.
"DP problems look totally different from each other"
They aren't — there are about 8 archetypes. We learn the archetypes, then map every new problem onto one.
"LeetCode mediums beat me up"
We do them together with timing, talk through the trade-offs, and build the muscle for fast pattern recognition.
Frequently Asked Questions
Do you tutor for college algorithms courses?
Yes. Algorithms courses (CS 2/3, CS 161, CLRS-based classes, university discrete math + algorithms) are a core focus. We work on your textbook, your homework, and your exam-style problems.
Can you help with LeetCode and interview prep?
Absolutely. We work through problems together with timing — focusing on pattern recognition, complexity analysis, and clean implementation, not just getting the right answer.
I freeze on recursion and dynamic programming. Can you help?
Yes — these are the two topics I see students struggle with most. We rebuild intuition with concrete examples, then progressively scale to harder problems until the patterns feel natural.
What languages do you use?
Whichever your class uses — Python, Java, C, or C++ are all comfortable. The algorithm ideas transfer across languages, but we write in the syntax you need.
Related Free Tools
Related Tutoring
What Students Say
"Alexander is a great tutor! He was patient with me when I didn't understand something, and he broke it all down so I could get it. He was instrumental in helping me salvage my C programming course, which I ended up passing with a decent grade, in just four lessons. I only wish I'd found him sooner."