Interactive Python

Jupyter Notebooks.
No Servers Required.

A full notebook experience running entirely in the browser — NumPy, Pandas, Matplotlib, Plotly, Panel, interactive terminal, and inline plots. Every learner gets their own kernel instantly.

Built on Pyodide (Python compiled to WebAssembly). No JupyterHub. No containers. No IT tickets. Notebooks live directly inside the curriculum alongside reading, exercises, and AI tutoring.

~2s
Kernel ready time
0
Servers to manage
1000+
Concurrent learners, same cost
100%
Browser-based — any device
What Learners See

Notebooks Live Inside the Textbook

Code cells, rich narrative, terminal output, inline plots, file uploads, and interactive widgets — all on a single page alongside the curriculum. No separate app, no context-switching.

Teach. Don't Troubleshoot Infrastructure.

Eliminate everything between your curriculum and your learners. No servers to provision, no environments to configure, no submission pipelines to wrangle.

Zero Infrastructure

No JupyterHub, no Docker, no cloud compute. The Python kernel runs in each learner's browser natively.

See Every Learner's Work

Select any learner and see their exact notebook state — code, outputs, execution. No collecting files.

Auto-Grading Built In

Unit tests per cell with inline pass/fail. Results flow into the gradebook — no nbgrader required.

Progress Analytics

Track cell execution, attempt counts, and time spent. Spot struggling learners early.

Part of the Curriculum

Notebooks live inline with reading, exercises, and AI tutoring — not as standalone .ipynb files.

Secure by Default

Code runs in a browser sandbox — no OS access, no server to compromise, no cross-learner risk.

For Learners

A Real Notebook Experience.
Nothing to Install.

Run code cells, see plots inline, interact with a terminal — from any Chromebook, tablet, or school PC.

Interactive Terminal

Real Terminal, Streaming Live

Output streams in real time. input() works interactively, just like a local terminal.

  • Streaming output as code runs
  • Interactive prompts — learners type responses directly
  • Stop button halts runaway code instantly
[3]
for i in range(5):
    name = input(f"Student {'{'}i+1{'}'}: ")
    print(f"Hello, {'{'}name{'}'}!")
>>> Student 1: Alice
Hello, Alice!
>>> Student 2: _
Code Diff View

See Exactly What Changed

Line-by-line diff of edits against the starter code. Teachers see the same view.

  • One-click reset to the original content
  • Edits auto-saved — no manual submit workflow
  • IPython magics (%pip, %timeit, %who) work out of the box
main.py — View Changes ← Clear Changes
1def sort_list(data):
-    return sorted(data)
+    # Bubble sort implementation
+    for i in range(len(data)):
+        swapped = False
+        for j in range(len(data)-i-1):
+            if data[j] > data[j+1]:
+                data[j], data[j+1] = data[j+1], data[j]
+                swapped = True
+        if not swapped: break
11    return data
Teacher Dashboard

See Any Learner's Work Instantly

Select a learner and see their exact notebook — code, outputs, execution state. No file collection.

  • Live progress — see who completed which cells
  • Built-in grading with rubric support
  • Role-aware UI: learners edit, teachers grade
Run All Clear All
Draw a graph of the distribution of Adjusted Gross receipts in millions of dollars. Use np.round to retain only two decimal places.
[ ]
# Compute adjusted gross in millions and display the table
# millions = top.select(0).with_columns(...)
# millions

Select a learner from the dropdown to view their work.

Data Access

Load Data from Anywhere

Upload local files, pull from Google Drive, an HTTP Url, or use pre-loaded curriculum data into your data science library.

  • Upload files from the local machine — CSV, JSON, and more
  • Google Drive picker with OAuth loads Sheets and CSVs directly
  • Curriculum data files pre-loaded in a virtual file system
[5]
import pandas as pd

# Securely load CSV and Spreadsheet from Google Drive
df = pd.read_csv("https://drive.google.com/file/d/1.../view")
df.head()
name score grade
0Alice92A
1Brian78B+
2Carmen85A-
3David64C
Interactive Apps

Build Interactive Apps in the Notebook

ipywidgets, Panel, and LLM APIs — all rendering live inline.

  • Full ipywidgets support — sliders, dropdowns, buttons with real-time callbacks
  • Panel dashboards and chatbots render live in output cells
  • Intro to Generative AI course included — chatbots, prompt engineering, RAG
[9]
def on_send(event):
    reply = get_completion(msg.value)
    log.object += f"<b>You:</b> {'{'}msg.value{'}'}\n<b>Bot:</b> {'{'}reply{'}'}\n\n"

app = pn.Column("## OrderBot",
    pn.Row(msg := pn.widgets.TextInput(), pn.widgets.Button(name="Send", on_click=on_send)),
    log := pn.pane.Markdown(""))
OrderBot — Pizza Restaurant Chat
Chat History
User: Hello, what's on the menu?
OrderBot: Our menu includes:
  1. Margherita — classic cheese and tomato
  2. Pepperoni — pepperoni and cheese
  3. Veggie Delight — peppers, onions, olives
  4. BBQ Chicken — BBQ sauce, chicken, onions

Would you like to order one of these?

Full Textbooks, Pre-Loaded and Ready to Go

Assign a notebook and learners are coding within minutes — no setup, no file distribution.

Have a Jupyter-based textbook of your own? Alps can onboard any Jupyter book as an interactive course. Get in touch.

How We Compare

Purpose-Built for Teaching

See how Alps Notebooks compare to traditional Jupyter infrastructure.

Feature Alps Other Platforms
Zero setup — open browser and code
$0 per learner kernel
~2 second kernel startup
Works on Chromebooks and tablets ~
Notebooks inline with curriculum
One-click view of any learner's work
Progress analytics and attempt tracking
Built-in code diff against starter code
Secure browser sandbox — no OS access ~
ipywidgets with real-time callbacks
IPython magics (%pip, %timeit, %who)
Local file upload + Google Drive access ~
NumPy, Pandas, Matplotlib, Plotly

Ready to Simplify Your Data Science Class?

Teach data science with Alps Notebooks, without the infrastructure headaches.