BaseCodeByte
Free · No account · Runs in browser

Learn code in interactive notebooks.

Choose a language, read short lessons, edit real examples and run code directly in your browser. Free to use, no account required.

Free to use · Runs in your browser · Beginner friendly · No account required

Chapter 01 — 6 total

Hello, World

Every C++ program starts with a main() function.

In [1]main.cpp
#include <iostream>
 
int main() {
  std::cout << "Hello, C++!";
  return 0;
}

Hello, C++!

Notebooks

Pick a notebook, start learning

12 languages. All free, all in your browser, no account required.

Py

Python

Python fundamentals, automation, APIs, data structures, file handling and real project workflows.

Variables and data types
Control flow
Functions and modules
python
def greet(name):
    return f"Hello, {name}"

print(greet("Ada"))
View outline
JS

JavaScript

Browser-focused JavaScript covering DOM events, async workflows, APIs and interactive UI projects.

Variables and functions
Objects and arrays
DOM manipulation
javascript
button.addEventListener("click", () => {
  count += 1;
  label.textContent = count;
});
View outline
TS

TypeScript

TypeScript lessons for typing data models, UI state, API payloads and reusable application functions.

Types and interfaces
Generics
Classes
typescript
type User = { id: number; name: string };

function label(user: User) {
  return `${user.id}: ${user.name}`;
}
View outline
Rs

Rust

Rust fundamentals through ownership, borrowing, enums, pattern matching and systems programming.

Ownership
Borrowing
Traits
rust
fn label(name: &str) -> String {
    format!("user: {name}")
}
View outline
Go

Go

Go lessons focused on simple syntax, packages, interfaces, concurrency and HTTP service patterns.

Functions
Interfaces
Goroutines
go
func greet(name string) string {
    return "Hello, " + name
}
View outline
Ja

Java

Java fundamentals from classes and methods through collections, exceptions, streams and backend foundations.

Classes and methods
Collections
Exceptions
java
record User(String name) {}

var names = users.stream()
    .map(User::name)
    .toList();
View outline
C++

C++

Interactive C++ notebook with live code execution, memory, pointers, STL and project exercises.

Pointers
Classes
STL
cpp
#include <iostream>
#include <vector>

int main() {
  std::vector<int> scores{8, 13, 21};
  std::cout << scores.size();
}
Open notebook
C

C

C fundamentals from variables and functions through pointers, memory, files, build tools and systems basics.

Memory management
Pointers
Structs
c
#include <stdio.h>

int main(void) {
  int score = 21;
  printf("%d\n", score);
}
View outline
C#

C#

C# and .NET lessons for classes, collections, LINQ, async workflows, testing and web API basics.

Classes
Collections
LINQ
csharp
var active = users
    .Where(user => user.Enabled)
    .Select(user => user.Name);
View outline
Kt

Kotlin

Kotlin language, Android and backend practice covering null safety, coroutines, APIs and architecture.

Null safety
Data classes
Coroutines
kotlin
data class Course(val title: String)

val title = course?.title ?: "Untitled"
View outline
Sw

Swift

Swift lessons for constants, optionals, collections, protocols, errors, concurrency and app-minded projects.

Optionals
Functions
Protocols
swift
func greet(_ name: String?) -> String {
    "Hello, \(name ?? "friend")"
}
View outline
SQL

SQL

SQL lessons for querying, joins, aggregates, schema design, transactions and reporting workflows.

SELECT queries
Joins
Aggregates
sql
SELECT name, COUNT(*) AS orders
FROM customers
JOIN orders USING (customer_id)
GROUP BY name;
View outline

How it works

Four steps from zero to running

Step 1

Read the lesson

Each chapter explains a concept clearly with notes and examples. No fluff.

Step 2

Edit the code

Every example is editable. Change the code, add your own ideas, break things.

Step 3

Run it in the browser

Press Run (or Cmd+Enter). The code executes instantly — no backend, no install.

Step 4

Try the challenge

Each lesson ends with a small challenge to cement what you just learned.

Why learn here

Why learn with notebooks

Traditional tutorials separate reading from doing. Notebooks combine them — and that changes how fast you learn.

Runs entirely in the browser

No compiler install, no server, no Docker. Open the page and start coding.

Notebook-style learning

Explanations, code, and output live side by side — like a textbook that runs.

Completely free, forever

No paywall, no trial, no gated course path. Everything is open for everyone.

Real, runnable code

Not pseudocode or screenshots. Every cell is live and editable.

Instant feedback

Run code in milliseconds. See output, fix bugs, iterate — all in one tab.

Good for beginners

Plain language, short lessons, and progressive difficulty. No prior experience needed.

Beginner paths

Start from zero in any language

Every notebook takes you from your first print statement to working with data structures — six focused beginner chapters, all in your browser.

C++ beginner path

Start from zero with C++

Open C++ Notebook

Python beginner path

Start from zero with Python

Open Python lessons

JavaScript beginner path

Start from zero with JavaScript

Open JavaScript lessons

TypeScript beginner path

Start from zero with TypeScript

Open TypeScript lessons

Rust beginner path

Start from zero with Rust

Open Rust lessons

Go beginner path

Start from zero with Go

Open Go lessons

Java beginner path

Start from zero with Java

Open Java lessons

C beginner path

Start from zero with C

Open C lessons

C# beginner path

Start from zero with C#

Open C# lessons

Kotlin beginner path

Start from zero with Kotlin

Open Kotlin lessons

Swift beginner path

Start from zero with Swift

Open Swift lessons

SQL beginner path

Start from zero with SQL

Open SQL lessons

FAQ

Common questions

Is BaseCodeByte really free?

Yes. Completely free. No trial, no credit card, no limits. All content is free for everyone.

Do I need to create an account?

No. There are no accounts on BaseCodeByte. Open a notebook and start coding immediately.

How does the C++ interpreter work?

We use JSCPP, an open-source C++ interpreter written in JavaScript that runs entirely in your browser. No code is sent to a server.

What C++ features are supported?

JSCPP supports a useful subset of C++: standard I/O, variables, arithmetic, conditionals, loops, functions, arrays, vectors, and strings. Complex STL, templates, and pointers may have limitations.

Will there be more notebooks?

Yes. Python and JavaScript notebooks are planned. Sign up to the newsletter (via the contact page) to be notified.

Can I use this for a class or workshop?

Absolutely. All content is free to use for educational purposes. Share the link with your students.