Learn to code by running real code
Real interpreters and compilers — not imitations of them
- PythonCPython 3.14 · Pyodide
- PHP8.5 · php-wasm
- Laravel 13php-wasm
- TypeScript6 · in a worker
- Reactsandboxed iframe
- C++clang · wasm
- Rustyour rustc
- Dartyour SDK
- Flutteryour SDK
Everything between reading it and writing it
Most courses stop at the explanation. Here every lesson runs, gets checked, and can be taken apart line by line.
- main.py Run
1 scores = [72, 91, 85] 2 for s in sorted(scores): 3 print(s)
728591CPython 3.14 · in this tabNothing to install
7 of 10 courses run in this tab: Python, PHP, TypeScript, React and C++ compile and run in your browser.
- Challenge· sum the evens
# the check runs after your code assert __stdout__.strip() == "30"
Check passed — lesson completeChecked by running it
A challenge passes when your code does what it should, not when you pick the right answer.
- What will this print?
print(len("hello"[1:]))
4You called it — it printed 4Predict, then run
Guess the output first. Being wrong before you press Run is where the learning happens.
- 1total = 02for n in [3, 4, 5]:3 total += n4print(total)Variablestotal3 7n4step 6 of 11
Watch it run, line by line
Step through your own Python and see each variable change, forwards and back.
- Guide · chapter 4Lists
nums.append(4)
Try it →🔍 Behind the scenes: why append is fastA guide book beside every course
106 chapters that go deeper than the lessons, each example one click from the editor.
- Your progress
- PyPython23/59
- TsTypeScript6/14
- PhPHP0/22
Saved in this browser · sync is optionalYour progress stays yours
Progress, drafts and history live in your browser. Sign in only if you want them on another device.
See what the computer does, one step at a time
Every variable, list and function call drawn as it happens. Press Play, or step forwards and back yourself.
Three steps, then repeat
Short lessons, each ending with a blank editor. You learn a piece, use it once, then write it yourself.
01Pick a course
Start with the language you need. Each course runs from its first lesson with no setup.
Pick a course- PyPython
- PhPHP
- LaLaravel 13
- TsTypeScript
- ReReact
- CpC++
- RsRust
- DaDart
02Read, then try it
Every example has a Try it button that drops it into the editor so you can change it.
Loopsforruns its body once per item.for c in "hi": print(c)
h · iTry it →03Write it yourself
The challenge starts from an empty file. The check runs your code and tells you what's off.
Your turn· count the vowels# write it from scratch print(sum(c in "aeiou" for c in word))
Check passed
The problem was never that you weren't trying
The gap isn't effort. It's practice you can actually run — all of it in one place.
You finished the tutorial. Could you write it from a blank file?
Every lesson ends in an empty editor with a check that runs your code — not a quiz about it.
Three hours on setup. Zero lines written.
Nothing to install. Python, PHP, TypeScript, C++ and React run in this tab, right now.
It printed the right answer. You still don't know why.
Step through your own code and watch every variable change, one line at a time.
Nine tabs open. Nine half-finished courses.
One place, one editor, one progress bar — across every language you're learning.
- courses
- 10
- lessons
- 188
- guide chapters
- 106
- run in your tab
- 7
10 courses, one editor
- Runs in your browserPython59 lessonsFrom print() to pandas, run in real CPython in your browser.
print("Hello, Python!") - Runs in your browserPHP22 lessonsThe language behind most of the web, from syntax to fibers.
echo "Hello, PHP!\n"; - Runs in your browserLaravel 1311 lessonsRouting, Eloquent and the rest of the framework, run in a real app.
echo Str::of('hello, laravel')->title(), PHP_EOL; - Runs in your browserTypeScript14 lessonsJavaScript with types, checked by the TypeScript compiler in your browser.
const greeting: string = "Hello, TypeScript!" - Runs in your browserReact13 lessonsComponents, state and effects, rendered live next to your code.
return <h1>Hello, React!</h1> - Runs in your browserC++8 lessonsTypes, objects and the standard library, compiled by clang in your browser.
std::cout << "Hello, C++!" << std::endl; - Runs on your machineRust1 lessonOwnership, traits and fearless concurrency, compiled by your own rustc.
println!("Hello, Rust!"); - Runs on your machineDart16 lessonsA typed, null-safe language, from variables to isolates.
print('Hello, Dart!'); - Runs on your machineFlutter19 lessonsBuild UIs from widgets and see them run as a web app.
home: Scaffold(body: Center(child: Text('Hello, Flutter!'))), - Runs in your browserClaude Code25 lessonsSkills, MCP servers and agentic workflows, practised in TypeScript.
console.log("Hello, MCP!", server.isConnected())
Before you start
The short answers. The longer ones are one click into any course.
Learning Rust, Dart or Flutter?
Those run on your own toolchain, in a local copy of ThongLearn. Setup walks you through it.
Open setupDo I need to install anything?
Where does my code run?
Do I need an account?
How are challenges checked?
Can I see what my code is doing?
Open the editor. Write a line. Press Run.
No account and no install to begin. Your progress stays in this browser until you choose to sync it.