How do I learn DSA properly, without shortcuts, without overwhelm, and without forgetting everything later?
To achieve that, this repository is designed around:
- 📖 Concept-first learning (every topic starts with theory)
- 🧠 Pattern-based thinking (algorithms grouped by ideas, not platforms)
- 🧩 Incremental difficulty (easy → medium → advanced)
- 🛠️ Hands-on problem solving (no copy-paste grinding)
- 🧼 Clean organization (folders mirror the DSA syllabus)
This repository serves as a fully functional, interactive side-by-side reading app designed to cleanly present problems natively.
Instead of browsing heavily through raw files locally, you can launch a local React UI to navigate the folders visually:
- Open your terminal in the root folder.
- Run
npm install(first time only). - Run
npm run dev. - Open the localhost link in your browser!
The UI will automatically coordinate parsing hierarchies and beautifully render any .md contextual text alongside the accompanying .py (or identical cpp/java code strings) in a premium dark-mode interface.
This is not a LeetCode dump or a cheat-sheet repo.
This repo assumes:
- You want to understand algorithms, not just pass tests
- You want to recognize patterns, not memorize solutions
- You are okay going slow now to go fast later
- Fire up the Interactive Dashboard (
npm run dev) or use your IDE. - Read the
concept.mdof a topic - Understand the
description.mdof a problem before looking at the code - Try solving the problem yourself
- Compare with the
solution.pyand add notes or variations if needed
If you skip step 4, you lose most of the benefit ;)
/src
/notes <-- All actual DSA concepts live here
/Topic
/SubTopic
solution.py
description.md
concept.md
/AnotherTopic
/SubTopicContainingImportantProblems
/Problems
solution.py
solution.py
description.md
concept.md
/components <-- React Web UI Logic
App.tsx <-- React Web UI Framework
package.json <-- Project Dependencies
vite.config.ts <-- Compilation Engine
- All foundational data naturally binds sequentially under
/src/notes. - Mirrors standard DSA syllabus used in exams & interviews.
- Separates algorithmic frameworks cleanly from frontend rendering.
Each topic folder follows the exact identical internal structure natively:
/src/notes/TopicName
concept.md # Conceptual explanation of the topic
/ProblemName
solution.py # Fully commented Python implementation
description.md # Problem-specific explanation
- Consistency reduces cognitive load
- You always know where to look
- Learning scales cleanly as topics grow
- Time & Space Complexity
- Big-O, Big-Ω, Big-Θ
- Recursion basics
- Memory models
- Arrays
- Linked Lists
- Stacks
- Queues
- Hash Tables
- Heaps
- Trees
- Graphs
- Sorting
- Searching
- Two Pointers
- Sliding Window
- Greedy Algorithms
- Divide & Conquer
- Dynamic Programming
- Backtracking
- Strings
- Bit Manipulation
- Mathematics for DSA
- Geometry Algorithms
- Specialized / Niche Problems
Each topic is studied deeply, not superficially.
Two Pointers is not an algorithm — it is a problem-solving technique.
So instead of one file, it contains:
- A deep
description.mdexplaining the concept - Dozens of categorized problems
- Gradual progression from basic to advanced patterns
This philosophy applies to all technique-based topics.
- Foundations
- Arrays
- Sorting
- Searching
- Two Pointers
- Sliding Window
- Stacks
- Queues
- Hashing
- Linked Lists
- Trees
- Graphs
- Dynamic Programming
- Backtracking
This order minimizes mental load and maximizes pattern reuse.
You should be able to:
- Explain the concept without code
- Identify when the pattern applies
- Derive the solution again from scratch
- Solve variants without memorizing steps
If not — revisit the concept.md.
This repository is designed to be:
- Calm
- Methodical
- Durable
- Honest
There is no rush. There is no pressure. Just consistent learning.
If you are reading this months or years later:
Progress is not how many problems you solved. Progress is how clearly you can think now. Happy learning!