CodeJourney
← Back to visualizer·

CodeJourney/ Why & what

An X-ray for code

Paste a program and watch it execute in slow motion — every token, the syntax tree, the call stack, the memory. Unlike tools that only show runtime state, CodeJourney animates the whole pipeline (lexer → parser → AST → execution) as one scrubbable timeline, and pairs it with a built-in data-structures-and-algorithms curriculum instead of a blank editor.

When to use CodeJourney (and when not to)

These are all excellent tools. Here's an honest guide to picking the right one for the job.

Python Tutor

What it's great at

Stepping through real Python, Java, C, C++ and JavaScript code and drawing the memory at each step. The classic, battle-tested in thousands of courses.

Reach for CodeJourney when

You want the whole pipeline — tokens, syntax tree, types, call stack, memory — as one animated, scrubbable timeline, plus a built-in DSA curriculum instead of a blank editor. Think Python Tutor, but animated end-to-end.

VisuAlgo

What it's great at

Beautiful, polished animations of classic algorithms and data structures — sorting, BSTs, graphs, and dozens more.

Reach for CodeJourney when

You want to run your own code and watch it execute, not a pre-built animation of someone else's. CodeJourney connects the algorithm to actual source lines as they run.

Thonny

What it's great at

A beginner-friendly desktop IDE for real Python — real libraries, real files, expression-level debugging.

Reach for CodeJourney when

You're in the browser with zero setup, learning in Java or JavaScript too, or want to see how the language itself works (lexing, parsing, the AST) — not just step through statements.

VS Code Debug Visualizer

What it's great at

Visualizing live data structures while you debug a real project in VS Code.

Reach for CodeJourney when

You're learning fundamentals rather than debugging a production codebase — no extension, no launch config, no project to set up.

Runestone Academy

What it's great at

Full interactive textbooks — complete courses with readings, exercises and grading, used by whole classrooms.

Reach for CodeJourney when

You want a visualizer-first experience: short lessons built around watching code execute, not a textbook with embedded snippets.

And to be clear about the trade-off: if you need to run real software — imports, files, libraries, async, frameworks — use a real editor and debugger. CodeJourney deliberately trades language coverage for X-ray depth on a small teaching subset.

What CodeJourney can and can't do

CodeJourney runs a simplified teaching subset of each language — variables, loops, functions, and arrays: everything algorithms need. Imports and libraries aren't supported; programs are self-contained. The editor tells you the moment you type something outside the subset — a yellow squiggle with a friendly explanation, before you even press Run.

✓ Supported in all three languages

FeatureJavaPythonJavaScript
Variablesint x = 5;x = 5let x = 5;
Math, comparison & logicint y = x * 2 + 1;y = x * 2 + 1let y = x * 2 + 1;
if / elseif (x > 3) { x = 0; }if x > 3: x = 0if (x > 3) { x = 0; }
while & for loopsfor (int i = 0; i < 3; i++) { }for n in nums: total = total + nwhile (n > 0) { n = n - 1; }
Functions & recursionstatic int square(int n) { return n * n; }def square(n): return n * nfunction square(n) { return n * n; }
Arrays & indexingint nums = [1, 2, 3];nums = [1, 2, 3]const nums = [1, 2, 3];
PrintingSystem.out.println(x);print(x)console.log(x);

✕ Deliberately not supported

These are real-language features the teaching subset leaves out — the editor explains each one and suggests a subset-friendly alternative.

Java

  • importPrograms are self-contained — System.out.println() works without imports.
  • packageJust declare your class directly — no package needed.
  • Java library classesUse plain arrays instead — e.g. int[] nums = {1, 2, 3};
  • Exception handlingUse if/else checks instead of try/catch.
  • interfaceUse a single class with static methods.

Python

  • importPrograms are self-contained — print(), len(), and range() work without imports.
  • Exception handlingUse if/else checks instead of try/except.
  • with blocksThe subset has no files or resources to manage — plain statements work.
  • lambdaDefine a named function with def instead.
  • f-stringsUse string concatenation instead — e.g. print("x = " + x).
  • Triple-quoted stringsUse regular double-quoted strings.

JavaScript

  • importPrograms are self-contained — console.log() works without imports.
  • require()Programs are self-contained — no modules needed.
  • async/awaitThe subset runs synchronously — call functions directly.
  • Template literalsUse string concatenation instead — e.g. console.log("x = " + x).
  • JavaScript classesUse plain functions instead.
Open the visualizer →Try a lesson