In 2014, Jupyter notebooks changed how data scientists work. Instead of writing scripts in one file and reading documentation in another, everything — explanation, code, and output — lives together on one scrollable page. You can see exactly what each piece of code does, right next to the code that does it.

We're applying that same philosophy to introductory programming education.

The problem with traditional tutorials

Most programming tutorials split the experience: explanation in one place, code in another. You read a section, then open a separate editor or REPL to try it, then come back to read the next section. Every context switch is friction. Every piece of friction costs attention.

For a beginner who is already managing a lot of new concepts — variables, types, control flow, functions — that friction adds up fast.

The notebook model

In a notebook, you read a short explanation, then immediately run the example right on the same page. The output appears below. You edit the code, run it again, see what changes. Then you scroll down to the next concept, which builds on what you just ran.

There's no mental gap between "understanding" and "doing" because they happen at the same time.

Why this matters for beginners

Beginners don't just need to know that a for loop exists. They need to see one run, change the range, see it run again, and understand why the output changed. The notebook model makes all of that happen in seconds, not minutes.

It also makes mistakes less scary. When you break something in a notebook, you see the error immediately, in context, right below the code that caused it. You fix it, run it again. Error handling is built into the workflow rather than being a special frustrating case.

What we built

The BaseCodeByte notebook applies this to C++ — a language that beginners often find intimidating precisely because the traditional setup is so heavy. By putting everything in the browser, we remove the intimidation factor and let people focus on the actual concepts.

Every lesson is structured the same way: a short explanation, a working code example you can run and edit, and a practice task. Simple, consistent, and effective.