5 live sessions Glossary GitHub
Open Source · Free Forever · Interactive

Learn Python the way it actually works

Not just syntax — memory, reasoning, and mental models. Every concept visualized. Every question answered. Python from first principles.

🧠 Memory model visualized
Step-by-step animation
📱 Works on any device
No install needed
🔓 Open source

How to learn here

The course is built so you can see Python's memory, then name what just happened.

01

Step the animation

Use and , or Play. Space pauses. R resets. Watch which object appears, which name rebinds, and whether a refcount changes.

02

Read the model

The narrative under each lab puts the same picture into words: names, objects, frames, and references — not syntax trivia.

03

Check yourself

Every session ends with a short quiz. If an answer surprises you, rewind the demo. The glossary is there when a term is fuzzy.

Course Sessions

Each session builds on the last. Watch the memory, read the model, then check your understanding.

01
Variables & Mutability
What is a variable really? What happens in memory when you write x = 5? Why can you change a list but not a string? Understand Python's object model from the ground up.
int str list id() memory model reference counting
02
Functions, Scope & the Call Stack
How def creates function objects, calls create frames, arguments bind to objects, local scope works, and closures remember outer names.
def call stack scope LEGB closures
03
Lists, Dicts & References
How containers store references, why aliases share mutations, what shallow copies really copy, and why nested lists and dicts can surprise you.
list dict shallow copy aliasing nested objects
04
Classes & Objects
What self really is, where attributes live, how method binding works, why class variables are shared until an instance shadows them, and how inheritance is just a longer lookup.
class self __init__ __dict__ bound method MRO
05
Iterators & Generators
How for loops call iter and next, why a generator keeps a suspended frame, and what lazy evaluation means in memory.
iterator generator yield lazy evaluation
06
Decorators
Why @decorator is just f = deco(f), where your original function goes when a wrapper swallows it, and what functools.wraps is really putting back.
@ wrapper closure cell functools.wraps stacking
07
The GIL & Concurrency soon
Why threads share one interpreter lock, when processes help, and how asyncio interleaves work.
GIL threads asyncio

Why another Python course?

01
Most courses teach syntax. This one teaches understanding.
You can memorize list.append() in five minutes. But do you know why lists are mutable and strings aren't? What actually happens in RAM when you write x = x + 1? That's what we care about.
02
Animations over slides.
Every concept is animated. You watch the variable bind to an object. You see the reference count tick up. You watch the garbage collector sweep. You can pause, rewind, and go at your own speed.
03
Open source. Always free. No account needed.
Hosted on GitHub Pages. Fork it, extend it, translate it. The license lets you use the visuals and content freely — just give credit.
04
Mobile-first, no install.
Pure HTML, CSS, and JavaScript. No build tools, no Node, no backend. Works offline after first load. Open on your phone on the bus. Close. Come back. It remembers where you were.