<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Omer Mualem</title>
    <description>The latest articles on DEV Community by Omer Mualem (@omualem).</description>
    <link>https://dev.to/omualem</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3808327%2F2102939d-9b8d-4c02-8925-d7785c688ab4.png</url>
      <title>DEV Community: Omer Mualem</title>
      <link>https://dev.to/omualem</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/omualem"/>
    <language>en</language>
    <item>
      <title>I Built an Interactive Data Structure &amp; Algorithm Visualizer (with Live Java Debugging)</title>
      <dc:creator>Omer Mualem</dc:creator>
      <pubDate>Thu, 05 Mar 2026 16:47:12 +0000</pubDate>
      <link>https://dev.to/omualem/i-built-an-interactive-data-structure-algorithm-visualizer-with-live-java-debugging-4bd</link>
      <guid>https://dev.to/omualem/i-built-an-interactive-data-structure-algorithm-visualizer-with-live-java-debugging-4bd</guid>
      <description>&lt;p&gt;Understanding data structures and algorithms can be difficult when everything happens only in code.&lt;br&gt;
Most students (like me) learn them through static diagrams or by reading pseudocode, but the actual execution can be hard to visualize.&lt;br&gt;
That's why I built with the help of AI, a web platform that allows you to see algorithms and data structures evolve step-by-step in real time.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What the platform does?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The project combines two main ideas:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Interactive data structure visualization&lt;/li&gt;
&lt;li&gt;Live Java execution debugging with heap visualization&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Instead of just reading about algorithms, you can play them like a timeline.&lt;/p&gt;

&lt;p&gt;You can:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;step forward&lt;/li&gt;
&lt;li&gt;step backward&lt;/li&gt;
&lt;li&gt;pause execution&lt;/li&gt;
&lt;li&gt;inspect structures&lt;/li&gt;
&lt;li&gt;modify them directly
Everything updates visually as the algorithm runs.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Supported Data Structures:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The platform currently supports 20+ interactive data structures, including Core structures like Graph, Array, Heap (Min / Max), Linear structures, Stack, Queue, Deque, Priority Queue, Singly Linked List, Doubly Linked List, Circular Linked List, Trees and indexing structures, Binary Search Tree, Red-Black Tree, B-Tree, B+ Tree, Trie, Segment Tree, Hash Table, Advanced structures, Binomial Heap, Fibonacci Heap and Union-Find&lt;/p&gt;

&lt;p&gt;Each structure is fully interactive — you can edit nodes, move them, and run algorithms on them.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Algorithms:&lt;/strong&gt;&lt;br&gt;
Graph Algorithms&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;BFS&lt;/li&gt;
&lt;li&gt;DFS&lt;/li&gt;
&lt;li&gt;Bidirectional BFS&lt;/li&gt;
&lt;li&gt;Dijkstra&lt;/li&gt;
&lt;li&gt;Bellman-Ford&lt;/li&gt;
&lt;li&gt;Floyd-Warshall&lt;/li&gt;
&lt;li&gt;Johnson’s Algorithm&lt;/li&gt;
&lt;li&gt;A*&lt;/li&gt;
&lt;li&gt;Kruskal&lt;/li&gt;
&lt;li&gt;Prim&lt;/li&gt;
&lt;li&gt;Dinic&lt;/li&gt;
&lt;li&gt;Edmonds-Karp&lt;/li&gt;
&lt;li&gt;Tarjan SCC&lt;/li&gt;
&lt;li&gt;Topological Sort&lt;/li&gt;
&lt;li&gt;Graph Coloring&lt;/li&gt;
&lt;li&gt;Bipartite Check&lt;/li&gt;
&lt;li&gt;Cycle Detection&lt;/li&gt;
&lt;li&gt;Articulation Points&lt;/li&gt;
&lt;li&gt;Bridges&lt;/li&gt;
&lt;li&gt;Bubble Sort&lt;/li&gt;
&lt;li&gt;Selection Sort
and so more.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Live Java Execution Visualization&lt;/strong&gt;&lt;br&gt;
One feature I wanted that most visualizers don’t provide is real program execution debugging.&lt;br&gt;
You can write Java code in an embedded editor and run it inside a sandbox.&lt;/p&gt;

&lt;p&gt;The platform uses:&lt;br&gt;
JDI (Java Debug Interface)&lt;br&gt;
Docker sandbox execution&lt;br&gt;
automatic breakpoints&lt;/p&gt;

&lt;p&gt;It captures snapshots of execution and visualizes:&lt;br&gt;
stack frames&lt;br&gt;
local variables&lt;br&gt;
heap objects&lt;br&gt;
collections&lt;/p&gt;

&lt;p&gt;It also automatically detects common structures like:&lt;br&gt;
ListNode&lt;br&gt;
TreeNode&lt;br&gt;
Graph Node&lt;br&gt;
int[][]&lt;/p&gt;

&lt;p&gt;and visualizes them without configuration.&lt;/p&gt;

&lt;p&gt;Example&lt;br&gt;
If you run code like this:&lt;br&gt;
ListNode head = new ListNode(1);&lt;br&gt;
head.next = new ListNode(2);&lt;br&gt;
head.next.next = new ListNode(3);&lt;/p&gt;

&lt;p&gt;the tool automatically renders it as a linked list visualization.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Architecture&lt;/strong&gt;&lt;br&gt;
The project is split into two main systems.&lt;br&gt;
Frontend&lt;/p&gt;

&lt;p&gt;Built with:&lt;br&gt;
Next.js&lt;br&gt;
React&lt;br&gt;
TypeScript&lt;br&gt;
Tailwind&lt;br&gt;
Zustand&lt;br&gt;
React Flow&lt;/p&gt;

&lt;p&gt;The UI contains a canvas engine that allows:&lt;br&gt;
panning&lt;br&gt;
zooming&lt;br&gt;
dragging nodes&lt;br&gt;
Backend&lt;/p&gt;

&lt;p&gt;The Java execution engine runs with:&lt;br&gt;
Express&lt;br&gt;
Docker&lt;br&gt;
Java Debug Interface (JDI)&lt;/p&gt;

&lt;p&gt;Execution snapshots are streamed to the frontend and replayed by the visualization engine.&lt;/p&gt;

&lt;p&gt;Feedback welcome :)&lt;/p&gt;

&lt;p&gt;This project is still evolving and I’d love feedback from developers and students.&lt;/p&gt;

&lt;p&gt;are very welcome.&lt;/p&gt;

&lt;p&gt;The link: &lt;a href="https://visualds.net/" rel="noopener noreferrer"&gt;https://visualds.net/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>algorithms</category>
      <category>computerscience</category>
      <category>java</category>
      <category>showdev</category>
    </item>
  </channel>
</rss>
