How this works, and what to do when it does not
The questions worth answering about AlgoScope, in roughly the order somebody meets them. If yours is not here, the address at the bottom reaches a person.
The short version
- Every lesson, topic, category and track is free to open and works without an account. There are no ads.
- A lesson is a recorded run of the algorithm. You step through it, and it stops and asks what happens next before it shows you.
- Code and input you type run in your own browser and never reach a server.
- An account does one thing: it remembers your progress and your predictions across devices.
- Nothing on this site takes payment, so there is nothing to buy, restore or refund.
What is a lesson, and how do I drive it?
A lesson is one run of an algorithm, recorded step by step by the engine that executed it. Each step is one meaningful change - a comparison, a swap, a pointer move, a node linked - and the picture, the highlighted code line and the variables are three views of that same step, so they cannot disagree with each other.
- The arrow keys step forward and back, and the space bar plays and pauses. While a question is on screen the number keys 1 to 4 answer it.
- There is a speed selector and a sound toggle beside the controls. Below about a thousand pixels of width the picture and the code share one box, with a switch between them.
- Hovering a variable lights up the element its pointer sits on.
- Predict mode freezes the run before each decision and asks. A link ending in
?predict=1opens the lesson with it already on. - Copy link copies the address of what you are looking at, including the step you are on and any input you ran, so the run someone else opens is the run you meant.
- If an earlier visit got further into a run, the player offers to resume at that step. That works without an account.
Without JavaScript a lesson page still reads, and reads in full: the first frame, the explanation, the questions and the whole run written out step by step come from the server, as do the complexity, what it is used for, the notes and the references. What needs JavaScript is the interactive half - stepping, predict mode, your own input and the editor.
Do I need an account?
No, and not for anything on the site. All 382 topics across 102 lessons open without signing in, including predict mode, running a lesson on your own input and writing your own implementation. Nothing is gated and nothing asks you to register to see the rest of an explanation.
An account adds one thing, which is memory across devices: the step you reached in every run, and every prediction you answered, with a dashboard that counts lessons started and finished and your prediction accuracy. Without one, the step you reached is still remembered - in this browser, by this browser.
I have progress without an account. Will signing in bring it with me?
No. Progress made as a guest is written into your own browser storage and is never uploaded, and that stays true on the day you sign in: the account starts its own count rather than absorbing what the browser had. Nothing is deleted - sign out and the guest record is where it was - but the two are not merged. If crossing devices matters to you, signing in before you start is the cheaper order to do it in.
What is a track, and how is progress against one counted?
A track is an ordered path through the curriculum where every stop is one screen and nothing arrives before the thing it depends on. Today there are 2: Foundations and Interview Core. The tracks page shows the whole path of each.
Nothing is stored per track. A track's count is the overlap between its stops and the screens you have finished, which has three consequences worth knowing: switching track loses nothing, a stop added to a track already carries the credit for a screen you finished last month, and Continue skips a stop you have done rather than sending you back to it. Because the overlap is computed against whatever progress you have, a track counts correctly for a reader who has never signed in.
Can I run a lesson on my own values?
Yes, on every lesson. Each one describes its own input, so the form you get asks for what that algorithm actually takes, and Run produces a new recorded run you step through exactly like the ones that ship.
- The engine is the same one the apps use, compiled to WebAssembly. It is 2.2 MB and is fetched on your first Run, never on page load.
- It needs a browser with WebAssembly GC: Chrome 119, Firefox 120, Safari 18.2 or newer. Reading and stepping through the runs that ship needs none of that.
- Obvious mistakes - a doubled comma, a value out of range - are caught on the page before the download. The runner still has the last word, because it knows things a form cannot describe, such as a list that has to be sorted first.
- Your values go into the address bar, so the link you copy re-runs your input for whoever opens it. They never go to us: the engine runs inside your browser.
Can I write the algorithm myself?
On 39 of the 102 lessons there is a write it yourself section, in JavaScript or Python. The cases are that lesson's own examples and the expected answers come from the engine's run of them, so passing here means agreeing with the visualization rather than with a test somebody wrote separately.
- JavaScript runs in a Web Worker: a separate thread with no DOM and no cookies. Python runs on Pyodide, which is Python compiled to WebAssembly, about ten megabytes, fetched from a public CDN the first time you run it.
- A loop that never ends is stopped for you, after about two seconds in JavaScript and five in Python.
- Your draft is saved in this browser, per lesson and per language, so closing the tab does not lose it. Clearing your browser data clears it, nobody else can read it, and there is no copy on a server to read.
The lessons without an editor are a decision rather than a gap, and each one records its reason: some teach a way of looking at a run rather than a function, some take input the harness does not parse, some are answered by a shape the test panel cannot express, and some have a one-line answer that would teach nobody anything. A test fails if a lesson is on neither list, so the triage cannot quietly rot.
Why is the code beside the steps in Kotlin?
Because it is the implementation that produced the steps. One engine records every run for the browser and for both apps, and each step carries the line number of the line that ran, which is a line of that engine. A listing translated into another language can ride alongside it, mapped line for line, and none has been written yet - so today every lesson's pane is the Kotlin the engine ran. The editor takes JavaScript or Python, because that half is yours to write.
How do I sign in, and what if I cannot?
- Two ways: an email address with a password of at least eight characters, or a sign-in link. The link works once and expires fifteen minutes after it is sent, and it creates the account on first use, so you never have to invent a password at all.
- Forgot a password: the login page mails a link to set a new one, single use, thirty minutes. It says the same thing whether or not that address has an account, deliberately.
- A link confirming a new or changed address lasts twenty-four hours.
- A session lasts thirty days per browser. Signed in somewhere you no longer have? Other browsers, in settings, signs out every session except the one you are using.
- Sign-in attempts are rate limited per address and per IP, so a burst of tries pauses rather than continuing.
One outcome surprises people. If you set a password, then signed in by link before the address was ever confirmed, the password is dropped. A password set before anybody proved they hold the mailbox could have been set by somebody else, so it does not survive the proof. Set a new one in settings and it stays.
What email will I get, and how do I stop it?
Two kinds, and only one of them has a switch. Sign-in links and address confirmations are answers to something you did, so there is no setting for them. Product updates and reminders are optional and are off unless you turn them on, in settings.
Every optional email carries an unsubscribe link that needs no sign-in and takes effect as the page opens, and the header your mail client uses for its own unsubscribe button is on all of them, so either route works. If you unsubscribe, or a message to your address bounces, the address goes on a do-not-send list, and that list survives deleting the account on purpose: forgetting that you asked to be left alone would be worse.
How do I delete my account, or just make it stop?
You can do it yourself in one screen, immediately, with no email to anybody and nobody to approve it. Deleting your account says what is removed and what to do if you cannot sign in.
There is a gentler option in the same place, and most people looking for a delete button want that one: switching the account off signs you out everywhere and stops every optional email while leaving your progress exactly where it is. Signing in again turns it back on.
Two other things live in settings: a download of everything held about your account, as a file, and correcting your name or address. Privacy lists what is kept, what is in your browser rather than on a server, and what the site measures.
What does it cost, and how do I buy it?
It costs nothing, and there is nothing to buy. This site has no checkout, no price on any page, no paid feature and no way to purchase one. Every lesson, every track, running a lesson on your own input and the editor are free, and so is an account.
The home page names three things that are not released - your own code driving the visualization step by step, a diff against the reference run, and a readiness score. They are described as where this is going, and that is all they are: none is on sale, none is behind a sign-up, and there is nothing here about how to pay for them because there is no way to.
It follows that there is nothing to restore on a new device and nothing to refund. If that changes, four answers arrive here before anybody is asked for money rather than after: how to buy on the web and inside an app, how to get a purchase back on a device you have just set up, what to do when a payment fails, and the refund position in plain words - including which refunds are Apple's and Google's to give rather than ours, because a purchase made through a store is refunded by that store. Terms carries the same promise.
What about the iOS and Android apps?
They run the same engine on the same recorded runs, so a lesson behaves identically wherever you open it, and they work with no connection at all. They have no accounts: they store nothing about you and make no network requests, which means there is nothing to sign in to, nothing to delete and no progress shared with this site. Removing the app removes everything it kept. Their privacy policy is shorter than the one here for exactly that reason.
Neither is in the App Store or on Google Play yet, so there is nothing to install today. And the browser is not the offline half: a tab needs a connection to load a lesson.
Something in a lesson looks wrong
Worth reporting, and it gets fixed. Lessons are generated from one curriculum registry, so a wrong explanation is usually wrong in a single place and corrected once. Contact has the four things that make a report fixable in one pass, and the issue tracker where the fixes are recorded.
Before that, it is worth stepping back through the run once. The frames are the engine's own, so a surprise is often the algorithm doing something genuinely counterintuitive, which is the part worth knowing.
Still stuck, or want to ask something else
Write to contact@nublabs.com. A person reads it, there is no ticket queue and there is no response-time promise, which is the honest version of what a small project can offer. The other routes are on contact.
If what you actually want is somewhere to start, the tracks are an ordered path rather than 29 categories to choose between, and explore searches all 382 topics by name.