How It Works

The challenge format

Each session presents you with a small set of Python problems. For each one you see a description and a function skeleton. You fill in the body of the function – no internet, no AI – then click Run. Your code is tested against a hidden set of test cases and you see which ones pass or fail instantly.

Sessions typically take 20 – 40 minutes. You can attempt each challenge as many times as you like before moving on.

Python runs in your browser

Your code never leaves your device. We use Pyodide – a full CPython interpreter compiled to WebAssembly – running inside a Web Worker. When you click Run, your code is sent to that sandboxed worker thread, executed there, and the results are returned to the page. The server never sees your code; it only receives a summary (pass/fail counts) when you submit.

This means the challenges work offline once the page has loaded, and there is no server-side code execution infrastructure to worry about.

Why no AI or Googling?

The study is measuring your unassisted coding ability over time. If you use AI or search engines during a challenge the data becomes noise. We cannot technically prevent it – we rely on participant honesty, which is why we explain the reasoning rather than just issuing a rule.


Try it yourself

This is a real challenge, running live in your browser right now. Write a function that satisfies the test cases below and click Run.

Loading Python environment… (first load takes ~5 s)

Challenge: reverse_words

Write a function reverse_words(sentence) that takes a string and returns it with the order of the words reversed.
Example: reverse_words("hello world")"world hello"


The tech stack

  • Backend: Django (Python), PostgreSQL on Appliku.
  • Frontend: Bulma CSS, HTMX for challenge navigation (no page reload between challenges), CodeMirror 5 for the code editor.
  • Code execution: Pyodide v0.27 in a Web Worker – full CPython, sandboxed in the browser.
  • Analysis: R with lme4 / brms for Bayesian multilevel regression.
  • Source: github.com/andytwoods/can-I-still-code