Algorithms & Data Structures Tutor

Algorithms feels impossible right up until you see the patterns. Then the same five ideas — divide and conquer, greedy, DP, graphs, two-pointer — solve everything. We build that pattern library together using your course problems, your textbook, or LeetCode practice.

CS major background 700+ sessions Python, Java, C, C++ Exam & interview prep

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
A 60-Second Sample

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.

Problem: Given coins [1, 2, 5] and amount 11, what is the minimum number of coins to make 11?
  1. 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 says 4 + 1 + 1 = 3, when 3 + 3 = 2 is better. Greedy fails in general. That's signal #1 for DP.
  2. 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.
  3. Define the state. dp[n] = minimum coins to make amount n. State is just "the amount left."
  4. Write the recurrence. dp[n] = 1 + min(dp[n-c] for c in coins if n-c >= 0). Base case: dp[0] = 0.
  5. Choose top-down (memo) or bottom-up (table). Bottom-up is cleaner here: loop n from 1 to 11, fill dp as you go. Final answer: dp[11]. Complexity: O(amount × coins).
The real lesson: Every DP problem has the same 3 questions — what's the state, what's the recurrence, what's the base case? Once you can answer those for one problem, you can answer them for any DP problem. The code is the easy part.

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."

Ethan — Brooklyn, NY · C Programming

Bring me a problem you're stuck on.

First 30-minute consultation is free. Whether it's a class assignment, a LeetCode problem, or "I just don't get DP" — we'll start where you are.