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, and inline plots — all on a single page alongside the curriculum. No separate app, no context-switching.

Run All Restart Kernel Clear All
Unit 4.12: 3D Plotting

Three-Dimensional Plotting in Matplotlib

Three-dimensional plots are enabled by importing the mplot3d toolkit, included with the main Matplotlib installation:

[1]
%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt
>>> Backend set to 'Agg' (inline equivalent)
>>>

A three-dimensional axes can be created by passing the keyword projection='3d' to the normal axes creation routines:

[2]
r = np.linspace(0, 6, 20)
theta = np.linspace(-0.9 * np.pi, 0.8 * np.pi, 40)
r, theta = np.meshgrid(r, theta)
X, Y, Z = r * np.sin(theta), r * np.cos(theta), f(X, Y)

ax = plt.axes(projection='3d')
ax.plot_surface(X, Y, Z, rstride=1, cstride=1,
                cmap='viridis', edgecolor='none')
3D Surface Plot — Polar Coordinate Mapping

A surface plot is like a wireframe, but each face is a filled polygon. Adding a colormap aids perception of the surface topology.

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 containers, no cloud compute to manage. The Python kernel runs in each learner's browser natively. A class of 500 costs the same as a class of 5.

See Every Learner's Work

Select any learner from the roster and instantly see their exact notebook state — code edits, outputs, execution state. No collecting .ipynb files, no re-running to see output.

Auto-Grading Built In

Attach unit tests to individual cells. Learners see pass/fail inline. Results flow into the gradebook automatically — no nbgrader setup required.

Progress Analytics

Track which cells each learner has executed, how many attempts they made, and time spent. Identify struggling learners before they fall behind.

Part of the Curriculum

Notebooks aren't standalone files — they're embedded inline with reading, videos, multiple-choice questions, and other activities on a single page.

Secure by Default

Learner code runs in a secure browser sandbox — no access to the host OS, no server to compromise, no risk of one learner affecting another's environment.

For Learners

A Real Notebook Experience.
Nothing to Install.

Learners open their textbook, run code cells, see plots inline, interact with a terminal — all from a Chromebook, tablet, or school lab PC.

Interactive Terminal

Real Terminal Output, Streaming Live

Every code cell includes a built-in terminal that streams stdout and stderr in real time. Learners can use Python's input() function and respond interactively.

  • Streaming output appears character-by-character as code runs
  • Interactive prompts let learners type responses directly
  • Long-running code can be interrupted instantly with the Stop button
  • Terminal is resizable and clearable per-cell
[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

Learners toggle "View Changes" to see a line-by-line diff of their edits against the original starter code. Teachers see the same diff when reviewing learner work.

  • One-click reset reverts any cell to the instructor's original content
  • Edits are saved automatically — no manual save-and-submit workflow
  • Multi-file cells let learners organize code across tabs
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 from the class roster and see their exact notebook state — every code edit, every output, every execution. No collecting files, no re-running notebooks.

  • Live progress tracking — see who has completed which cells
  • Built-in grading with rubric support
  • Flag curriculum issues with one-click bug reports
  • Role-aware UI: learners see editing, teachers see grading controls
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.

Cloud Drive Access

Load Data from Google Drive

Learners load CSV, JSON, and Sheets files directly from Google Drive into Pandas — with a built-in OAuth picker. No manual download-upload cycle.

  • Built-in Google Drive file picker with OAuth authentication
  • Load private Sheets and CSVs directly into DataFrames
  • Virtual file system pre-loaded with curriculum data files
  • Learners can write output files that persist for the session
[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 AI-Powered Apps Inside the Notebook

Learners go beyond static analysis — they build live, interactive UIs with Panel. Chatbots, dashboards, form-driven tools — all rendered inline, no deployment needed.

  • Panel widgets render live inside the notebook output cell
  • Build chatbots, dashboards, and interactive tools in a few lines
  • Connect to OpenAI or any LLM API for conversational AI projects
  • Fully built Intro to Generative AI course ready to assign — chatbots, prompt engineering, and 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 Notebooks JupyterHub / Colab
Setup required None — open browser and code Server provisioning or cloud account
Infrastructure cost $0 per learner kernel Scales with learner count
Kernel startup ~2 seconds (WebAssembly) 10–60 seconds (container spin-up)
Device support Any browser — Chromebooks, tablets Browser; some limits on mobile
Curriculum integration Inline with reading & exercises Standalone .ipynb files
Learner work visibility One-click view of any learner's state Collect .ipynb files and re-run
Auto-grading Per-cell unit tests, built-in gradebook Requires nbgrader or external tool
Progress analytics Execution tracking, attempt counts No built-in analytics
Code diff view Built-in diff against starter code Requires Git or nbdime
Security model Secure Browser Sandbox — no OS access Docker isolation required
NumPy, Pandas, Matplotlib
ML frameworks (TensorFlow, PyTorch) Focused on intro/data science
Shell / terminal access Focused learning environment

Ready to Simplify Your Data Science Class?

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