Raahaao Code: Algorithms & Data Structures
Write code that stays fast, and pass the coding interview.
10+ hours of lessons · 2 projects · €35
Helps you prepare for: Technical coding interviews
Or get it in a monthly plan from €3.46 a week (billed €15 monthly) →
You need an account to open any lessons. Without one you can browse the towers and prices.
What you'll learn, floor by floor
- 1
Measuring code (Beginner)
- What an algorithm costs
- Big-O notation
- Arrays and strings
- 2
Core structures (Beginner)
- Hash maps and sets
- Stacks and queues
- Linked lists
- 3
Searching and sorting (Intermediate)
- Binary search
- Sorting algorithms
- Recursion and divide and conquer
- 4
Trees and graphs (Intermediate)
- Trees and binary search trees
- Heaps and priority queues
- Graphs: BFS and DFS
- 5
Interview-ready (Job-ready)
- Dijkstra and weighted paths
- Dynamic programming
- Greedy algorithms and sliding windows
- The interview playbook
The two rooftop projects
Route planner
Build a route planner for a small train network. Represent stations and track costs in a graph, then find routes by number of stops or ticket cost.
- build_graph(edges) builds an undirected weighted graph from (station_a, station_b, cost) edges
- fewest_stops(g, a, b) returns a path with the fewest edges, or None when b is unreachable
- cheapest_route(g, a, b) returns (total_cost, path) for the lowest-cost route, or None when b is unreachable
- reachable_within(g, a, budget) returns all stations whose cheapest cost from a is at most budget, including a, in alphabetical order
- When equally good routes exist, fewest_stops and cheapest_route choose the alphabetically earliest full station path
Autocomplete engine
Build an autocomplete engine that stores a weighted vocabulary and finds words by prefix. You will use a trie to keep shared prefixes together and a heap to rank popular matches.
- Trie.insert(word, weight) stores or updates a word with its weight, and Trie.contains(word) reports whether the complete word exists
- Trie.starts_with(prefix) returns all complete matching words in alphabetical order
- Trie.top_k(prefix, k) returns up to k (word, weight) pairs ordered by descending weight then alphabetical word, using a heap
- Trie.delete(word) removes a complete word without removing other words that share its prefix, and returns whether a word was removed
- edit_distance(a, b) returns the Levenshtein edit distance using dynamic programming
- suggest(word, k) returns up to k words from WORD_LIST ordered by edit distance then alphabetically
Questions
Do I need to install anything?
No. Everything runs in your browser. For the projects you can also work on your own computer and upload your files.
Can I skip what I already know?
Yes. Once you own a tower, each floor has a skip test: score 8 out of 10 and that floor opens.
What is the refund policy?
Refunds within 5 days of purchase. After 5 days, no refunds or returns.
Do I keep access?
Yes. A tower you buy is yours, with no subscription.
The towers
HTML & CSS · JavaScript · Python · SQL · C++ · Node.js · Python for Data · Flask · Logic & Problem Solving · Java · Machine Learning · Building with AI