Open Source · Free Forever · Interactive
Learn Python the way it actually works
Not just syntax, but memory, reasoning and mental models. Every concept is drawn out, every question gets answered, and it all starts from first principles.
🧠
Memory model visualised
▶
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 what happens in memory first, then put a name to it.
01
Step the animation
Use → and ←, or press Play. Space pauses and 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 whenever a term feels fuzzy.
01
Names
A name points at an object. Rebind vs mutate.
02
Frames
Calls create temporary namespaces on a stack.
03
Containers
Slots are references. Copies have a depth.
04
Objects
Data on the instance, behaviour on the class.
05
Cursors
Iterators walk; generators pause a frame.
06
Wrappers
A name is rebound to a function that remembers yours.
07
Threads
One interpreter lock. Waiting overlaps; computing does not.
08
Exceptions
An object climbs the stack, clearing frames, until a handler stops it.
09
Modules
A file runs once. Every later import gets the cached module.
Course Sessions
Each session builds on the last. Watch the memory, read the model, then check that it stuck.
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? This is Python's object model from the ground up.
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.
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.
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.
05
Iterators & Generators
How
for loops call iter and next, why a generator
keeps a suspended frame, and what lazy evaluation means in memory.
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.
07
The GIL & Concurrency
Why one interpreter lock exists at all, why it does not make your
code thread-safe, and how threads, processes and
asyncio each
get around it.
08
Exceptions, Tracebacks & Context Managers
What
raise really does: an exception object climbs the call stack,
clearing one frame at a time, until a handler stops it. Why finally
runs past a return, what with calls for you, and how one
error gets chained to another.
09
Modules & Imports
What
import really does: it finds a file, runs it once into a module
object and caches it in sys.modules. Why a from-imported name goes
stale, what __name__ == "__main__" checks, and how circular imports
and a stray random.py break a program.
Why another Python course?
01
Most courses teach syntax. This one teaches understanding.
You can memorise
list.append() in five minutes. But do you know why lists are mutable and strings aren't? What actually happens in memory when you write x = x + 1? That's what this course is about.
02
Animations over slides.
Every concept is animated. You watch the variable bind to an object, see the reference count tick up, and 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, as long as you give credit.
04
Mobile-first, no install.
Pure HTML, CSS and JavaScript. No build tools, no Node, no backend, no account. The pages are small static files, so they open quickly on a phone, and your progress is kept in your own browser, so you can close a session on the bus and pick it up later.