DEV Community

Cover image for I Built a Tool to Visualize DSA. Letโ€™s Learn Together! (DSA View View ๐Ÿ‘€๐Ÿ‘€)
nyaomaru
nyaomaru

Posted on

I Built a Tool to Visualize DSA. Letโ€™s Learn Together! (DSA View View ๐Ÿ‘€๐Ÿ‘€)

Features a timeline to step backward mid-loop

Hoi hoi!

Iโ€™m @nyaomaru, a frontend engineer currently fighting the intense European heatwave by building DIY window screens here in the Netherlands. ๐Ÿ› ๏ธ

https://medium.com/data-science-collective/should-you-still-learn-to-code-in-2026-034685e17707

As this article also discusses, I believe that improving our fundamental engineering skills is still essential in the age of AI.

Imagine that AI makes an F1 car fully autonomous. ๐ŸŽ๏ธ

Would you let someone without even a driverโ€™s license enter a race as its driver?

Or imagine that AI completely automates maintenance during pit stops.

Would you put someone who knows absolutely nothing about cars, their parts, or their internal structure in charge of that AI?

AI is certainly reducing the amount of code we need to write by hand. Typing quickly and memorizing every small piece of syntax or every method are becoming less important.

But can we confidently release a product without understanding its fundamental concepts or implementation? If something goes wrong in production, can we take responsibility and fix it?

My answer was no.

Building things faster is obviously a good thing. But if we build without understanding, we may simply produce fragile software with no long-term sustainability at a faster rate.

The real value comes from building meaningful things quickly.

Then, how can we develop the fundamental skills we still need in the AI era?

I believe one useful approach is learning DSA: Data Structures and Algorithms. So I decided to start learning DSA again.

However, while solving problems on LeetCode, I repeatedly ran into the same problem.

I want to visualize the data flow and understand what is happening, but I still canโ€™t clearly see it.

So I used the skills I have developed through frontend engineering and built a tool that visualizes the execution flow of DSA implementations! ๐Ÿš€

GitHub logo nyaomaru / dsa-view-view

DSA View View allows you to understand DSA to see the data flow. ๐Ÿ‘€๐Ÿ‘€ Of course, it's free.

DSA View View

DSA View View

DSA View View turns TypeScript algorithm functions into step-by-step visual stories. ๐Ÿ‘€๐Ÿ‘€

DSA View View TV

Write code, run it with structured inputs, and see the arrays, matrices trees, lists, stacks, pointers, and return values move as the function executes.

It is built for those moments when reading the code is not enough and you want to view why the answer changes.

DSA View View demo

Why Try It?

  • ๐Ÿง  Step through real TypeScript
    Paste or edit a function, validate it, then run the exact code in the browser.

  • ๐Ÿงฉ Views that match the data
    Arrays become bars, matrices become grids, trees become node graphs, linked lists become chains, and two-pointer area problems get their own visual view.

  • ๐ŸŒณ DSA-friendly inputs out of the box
    TreeNode, ListNode, nested arrays, matrices, strings, numbers, and class style inputs are supported without ceremony.

  • ๐Ÿ”Ž 39 built-in examples
    Search by name, browse by category, and jump intoโ€ฆ

DSA View View demo

In this article, Iโ€™ll explain how DSA View View works and how we can use it to study DSA.

Letโ€™s take a look together!

Disclaimer
I may sound confident so far, but Iโ€™m definitely not a DSA expert. Iโ€™m still learning, just like many of you.

In fact, I built this tool precisely because I was struggling. When I realized that I couldnโ€™t immediately solve Binary Search, I started to panic a little. ๐Ÿ˜ธ


๐Ÿ–ฅ๏ธ What Is DSA View View?

DSA View View is a tool that executes functions and classes written in TypeScript and lets you inspect how variables and return values change on each line through a runtime timeline.

The easiest way to understand is to try it yourself!

Open the tool and click the Run Demo button.

Run Demo Button

Youโ€™ll quickly see how the workflow works:

  1. Write your implementation
  2. Compile it
  3. Enter the input values
  4. Run it

Thatโ€™s really it.

Although I created it primarily for DSA problems, you can also use it to inspect and test smaller TypeScript implementations.

And, of course, itโ€™s completely free!


๐Ÿค” What Can It Do?

With DSA View View, you can:

  • Write DSA implementations in TypeScript
  • Test implementations with different input values
  • Move forward and backward through runtime steps
  • Visualize supported data structures and algorithms
  • Review LeetCode solutions and confirm your understanding

You can also use it as a lightweight environment for executing functions or formatting code blocks for technical articles such as Dev.to ๐Ÿ˜ธ

Feel free to experiment with it and find your own use cases!


๐Ÿง‘โ€๐Ÿซ How to Use It

The main workflow consists of three modes:

  • Editor
  • Verification
  • Runtime

Letโ€™s look at each one.


Editor

First, write your implementation!

The Editor is designed to feel similar to a basic IDE.

TypeScript diagnostics are available by default, so the editor can detect some errors while you write.

You can also press Cmd/Ctrl + S to format your code with Prettier, so feel free to write first and clean it up afterward.

Common classes used in DSA problems, such as TreeNode and ListNode, are already available.

You donโ€™t need to declare or import them every time.

You can also define your own classes or replace the provided definitions when necessary.

Once your implementation is ready, click Compile Code.

If compilation fails, the tool displays the relevant location and error message so that you can fix it.

There is also an Example menu containing several common implementations.

For example, if you want to quickly inspect a Heap Sort implementation and see how it behaves, you can load the example instead of writing everything manually.


Verification

In Verification mode, you define the input values that should be passed to your function or class.

Enter a test value for each argument.

For arrays, both of the following formats are supported:

[1, 2, 3]
Enter fullscreen mode Exit fullscreen mode
1, 2, 3
Enter fullscreen mode Exit fullscreen mode

Once your input values are ready, click Run.


Runtime

Finally, letโ€™s inspect the runtime!

When you click Run in Verification mode, your implementation is executed.

Runtime mode then lets you play through the execution steps or move backward and forward manually.

When the tool recognizes supported logic, an additional visualization is displayed in a modal.

Not every possible implementation is supported yet, of course. If something you need is missing, I would be happy to receive an issue or pull request!

You can move backward and forward through the executed lines to inspect:

  • Which line is currently running
  • How variables change
  • Where values are returned
  • How the execution reaches its final result

You can return to the beginning, jump directly to the end, or move through the timeline one step at a time.

The main execution process runs entirely in the browser.


Share ๐Ÿˆ

DSA View View also includes a sharing feature.

DSA View View Share button

You can create a URL that preserves your implementation and share it with someone else.

Use the Share button at the top of the page to post it on social media or copy the link directly.

Share your implementations, compare different solutions, and letโ€™s learn together!

Important: The shared URL contains your implementation. Do not paste private, confidential, or proprietary code into the tool before sharing it.

What Is That Thing in the Top-Right Corner? ๐Ÿ‘€๐Ÿ‘€

Meet Mr. View.

Mr. View watches over your implementation.

Nothing more.

Nothing less.

He is simply there to support you.

When you need to concentrate, press the TV button to hide him. Press it again to bring him back.

However, if Mr. View is enough to distract you, you may not be ready for an attack from ten simultaneous Slack notifications. ๐Ÿ˜ธ


โœ๏ธ How Should We Study DSA?

Now you know how to use DSA View View.

The next question is probably

Which problems should I solve?

LeetCode is an obvious place to start, and the study plan from Tech Interview Handbook also provides a useful collection of practice problems. ๐Ÿ‘‡

https://www.techinterviewhandbook.org/coding-interview-study-plan/

Try solving these problems with DSA View View.

Once your implementation works, use the runtime timeline to inspect the data flow and understand exactly how the algorithm reaches its answer.

You can also use tools such as ChatGPT, Codex, Claude, Claude Code, Gemini, and Grok to explore your solution further.

Donโ€™t limit yourself to asking

Is this implementation correct?

Try asking questions such as:

  • What would happen if I rewrote this DFS solution using BFS?
  • Could Dynamic Programming solve this problem?
  • Are there any other reasonable approaches?
  • What are the time and space complexities?
  • Why is this approach better than the alternatives?
  • Under which conditions would another approach be better?

AI becomes much more useful for learning when it helps us compare and understand different approaches instead of only generating a final answer. ๐Ÿ‘

Why TypeScript Instead of Python? ๐Ÿ

The simple answer is that TypeScript is my favorite language.

I mainly work as a frontend engineer, so TypeScript is also the language in which I feel most comfortable experimenting and learning.

However, I designed the tool so that additional languages could be supported in the future.

If there is enough demand for another language, please leave a comment or open an issue!


๐ŸŽฏ Conclusion

AI is helping us write code faster and faster.

However, understanding what happens inside an implementation remains an important engineering skill.

In fact, I believe that this ability may become even more valuable as AI-generated code becomes increasingly common.

I built DSA View View because I wanted a tool that could help me strengthen those fundamental skills from the ground up.

To be honest, I still have a lot to learn about DSA.

That is exactly why I hope we can learn together.

Please leave a comment or open an issue if:

  • You want support for a particular problem or data structure
  • You have an idea for a new visualization
  • You find a bug
  • You want support for another programming language

Letโ€™s train our DSA muscles together! ๐Ÿ’ช๐Ÿ˜ธ

If you like it, please give a star โญ

GitHub logo nyaomaru / dsa-view-view

DSA View View allows you to understand DSA to see the data flow. ๐Ÿ‘€๐Ÿ‘€ Of course, it's free.

DSA View View

DSA View View

DSA View View turns TypeScript algorithm functions into step-by-step visual stories. ๐Ÿ‘€๐Ÿ‘€

DSA View View TV

Write code, run it with structured inputs, and see the arrays, matrices trees, lists, stacks, pointers, and return values move as the function executes.

It is built for those moments when reading the code is not enough and you want to view why the answer changes.

DSA View View demo

Why Try It?

  • ๐Ÿง  Step through real TypeScript
    Paste or edit a function, validate it, then run the exact code in the browser.

  • ๐Ÿงฉ Views that match the data
    Arrays become bars, matrices become grids, trees become node graphs, linked lists become chains, and two-pointer area problems get their own visual view.

  • ๐ŸŒณ DSA-friendly inputs out of the box
    TreeNode, ListNode, nested arrays, matrices, strings, numbers, and class style inputs are supported without ceremony.

  • ๐Ÿ”Ž 39 built-in examples
    Search by name, browse by category, and jump intoโ€ฆ

And I also launched on ProductHunt! Come say hello and let me know what you think ๐Ÿ˜ธ ๐Ÿ‘‡

Top comments (33)

Collapse
 
koda2026 profile image
Harun - solo dev

Hoi hoi nyaomaru! ๐Ÿ‘‹

First off, a massive shoutout and thank you for the instant ๐Ÿ’– on my SQL trigger post earlier today! You were literally the first person to react, and it honestly made my whole day. ๐Ÿš€

Now, about this article โ€” the F1 car analogy is absolutely brilliant. ๐ŸŽ๏ธ As a 12-year-old building an AI coding mentor entirely on my Android phone, I feel this deep in my bones. AI can write my boilerplate in seconds, but when my database silently drops a referral or an API fails gracefully, the AI can't fix it for me. I have to understand the layers underneath, exactly like you said.

The "stepping backward mid-loop" feature in DSA View View sounds like an absolute superpower. Losing the thread in the middle of a complex loop is exactly where my brain breaks when studying algorithms! Being able to visually see the data flow and step backward instead of just staring at text is exactly how beginners like me need to learn.

I'm definitely starring the repo โญ and using this to level up my fundamentals. Thanks for building this for the community, and thanks again for supporting my journey! Let's keep learning together! ๐Ÿ˜ธ๐Ÿ’ช

Collapse
 
nyaomaru profile image
nyaomaru

Thank you so much for the kind comment! ๐Ÿ˜ธ๐Ÿ’–

I think strong fundamentals will still be important no matter how much AI improves, so if DSA View View can help you even a little, that makes me really happy!

Iโ€™ll keep developing it, so if you ever have any requests or ideas, feel free to leave an issue or comment anytime. ๐Ÿ‘€

Letโ€™s keep learning together! ๐Ÿ’ช๐Ÿ˜ธ

Collapse
 
koda2026 profile image
Harun - solo dev

Thank you! ๐Ÿ˜ธ And since you opened the door โ€” I'd love to show you
my little tool too!

I built KODA (koda-aicodementor.netlify.app), a free AI coding mentor
for beginners, coded entirely on my Android phone ๐Ÿ˜…. It explains
concepts step-by-step in simple words, then sends learners to a
Codewars kata to practice.

I realized our tools are two halves of the same learning loop:
KODA explains the "why" in words, and DSA View View shows the "how"
with real data flow. ๐Ÿคฏ

If you ever get a chance to try it, even ONE piece of feedback from a
senior engineer would mean the world to me. Either way โ€” let's keep
learning together! ๐Ÿ’ช๐Ÿ˜ธ

Thread Thread
 
nyaomaru profile image
nyaomaru

I tried your interesting app, but I couldn't make an account.

POST https://bkeydwcovzdmwuflhfni.supabase.co/auth/v1/signup
500 Internal Server Error
Enter fullscreen mode Exit fullscreen mode

This error is 500 error so I can't know the error detail.

Please check your netlify server log. ๐Ÿ‘

Thread Thread
 
nyaomaru profile image
nyaomaru

And one more tip, error message shouldn't use window.alert() because it stops browser process and not userfriendly.

You should make toast or modal or banner (or combine them) to show alert message! ๐Ÿ‘

Thread Thread
 
koda2026 profile image
Comment deleted
Thread Thread
 
nyaomaru profile image
nyaomaru

Hey! I still get the error even in incognito mode, so I think the issue is probably in the DB or API.

Maybe check the DB first, fix it, and try again. ๐Ÿ˜ธ

Thread Thread
 
koda2026 profile image
Comment deleted
Thread Thread
 
koda2026 profile image
Comment deleted
Thread Thread
 
nyaomaru profile image
nyaomaru

I checked that I can make account! Well done ๐Ÿ‘

Happy coding! ๐Ÿ˜ธ

Collapse
 
nazar-boyko profile image
Nazar Boyko

Stepping backward through the timeline is the feature that would've saved me hours on LeetCode, since the place I lose the thread is always mid-loop, not at the end. Quick one on the internals, does the runtime handle recursion like DFS on a tree where each frame has its own copy of the locals? That's exactly where "watch the state change" tools usually fall apart, and if you nailed it that's the killer case.

Collapse
 
nyaomaru profile image
nyaomaru

Thanks for the nice question! ๐Ÿ˜ธ

The short answer is almost "yes", with one caveat.

Recursive calls run as real JavaScript calls, so each DFS invocation has its own parameters and local variables. At every recorded step, DSA View View deep-clones the variables visible at that execution point and records the logical call stack.

When you step backward, it selects an earlier snapshot rather than trying to reverse the execution itself. The recursion view also reconstructs the call depth and tracks the arguments and return value of each call.

The current limitation is that it doesnโ€™t yet provide a "debugger-style view" showing the local variables of every suspended frame at the same time. The Variables panel currently reflects the selected execution step.

So DFS itself works, but the full per-frame locals UI is still one of the gaps Iโ€™d like to close. Recursive bugs are already confusing enough without the tool hiding half the stack ๐Ÿ˜…

Iโ€™ve created an issue for this feature and will work on it ๐Ÿ‘‡
github.com/nyaomaru/dsa-view-view/...

Thank you for pointing out such an important use case! ๐Ÿ‘

Collapse
 
nazar-boyko profile image
Nazar Boyko

thank you for sharing!

Collapse
 
mousheng_xu_e002b5fecf4ff profile image
Mousheng Xu

The F1 analogy landed for me. I hit exactly this last month building a video pipeline: my motion stage was silently falling back to static frames because it couldn't load an fp8 model. No crash, no traceback โ€” the pipeline reported success on every scene. If I hadn't understood what was happening underneath, I'd have shipped a hundred "working" videos with no motion in them.

That's the part AI-assisted speed doesn't save you from: a graceful fallback is a great place for bugs to hide, and you can only find them if you understand the layer below.

Also โ€” stepping backward through the timeline is the right call. The place you lose the thread is always mid-loop.

Collapse
 
nyaomaru profile image
nyaomaru

Nice catch! Iโ€™m really glad you found it before shipping a hundred โ€œworkingโ€ videos with no motion ๐Ÿ˜…

That example perfectly shows the danger of graceful fallbacks. The pipeline can report success while silently producing the wrong result.

AI can help us implement things faster, but that doesnโ€™t automatically make the implementation correct. I think humans still need to understand the layers underneath, verify the behavior, and take responsibility for that correctness.

And Iโ€™m really happy the mid-loop point resonated with you! That exact moment where you lose the thread is what I wanted DSA View View to make visible. ๐Ÿ˜ธ

Collapse
 
hoornet profile image
Jure

this is pretty awesome! bravo!

Collapse
 
nyaomaru profile image
nyaomaru

Thx! Have a nice coding! ๐Ÿ˜ธ

Collapse
 
cathylai profile image
Cathy Lai

Thanks for sharing, nice idea!

Collapse
 
nyaomaru profile image
nyaomaru

Thank you for nice comment ๐Ÿ˜ธ

Collapse
 
ayushh profile image
Ayush Sharma

nice

Collapse
 
nyaomaru profile image
nyaomaru

Thx!

Collapse
 
kristinz profile image
KristinZ

cool, star-ed it :)

Collapse
 
nyaomaru profile image
nyaomaru

Thanks!! That made me really happy ๐Ÿ˜ธ Happy coding!

Collapse
 
emekaugbanu profile image
Emeka Ugbanu - Software Developer

Nice ๐Ÿ‘

Collapse
 
nyaomaru profile image
nyaomaru

Thx! Have a nice coding ๐Ÿ‘

Collapse
 
buddingdeveloper profile image
Ebenezer

Nice work!

Collapse
 
nyaomaru profile image
nyaomaru

Thank you! Please enjoy coding ๐Ÿ˜ธ

Collapse
 
abrarulrhythm profile image
Abrarul Rhythm

Great work!

Collapse
 
nyaomaru profile image
nyaomaru

Thank you! ๐Ÿ˜ธ

Some comments may only be visible to logged-in visitors. Sign in to view all comments.