Home FAQ Data Sources Instructor Login

Frequently Asked Questions

Answers for students and educators curious about the platform.

laptop_chromebook

How It Works — Technical Overview

The Python sandbox uses Pyodide — a port of CPython compiled to WebAssembly (WASM). When you open a Python sandbox, your browser downloads a WASM binary that is a near-complete Python 3 interpreter. Your code never leaves your machine; it is executed locally inside the browser's sandboxed WASM runtime.

Popular scientific libraries — NumPy, Pandas, Matplotlib, Seaborn, Altair, Scikit-learn, Regex, and Beautiful Soup — are pre-bundled or fetched on first use via Pyodide's package manager. Matplotlib and Seaborn charts are rendered to an HTML <canvas> element directly in the page; Altair charts are rendered via Vega-Lite.

SQL sandboxes are powered by sql.js, a WebAssembly build of SQLite. The database is loaded entirely into browser memory — no server queries are made when you run SQL. This means query execution is instantaneous and completely private.

Each sandbox bundles a pre-populated .sqlite database file that is fetched once and held in memory for the session. Resetting the sandbox reloads the original database from that file.

The R sandbox uses WebR, which compiles the R interpreter to a WebAssembly.

The Web sandbox renders your HTML, CSS, and JavaScript directly inside a sandboxed <iframe>. Each time you click Run, the iframe's srcdoc attribute is updated with your combined code. The browser's own rendering engine handles the preview — no processing is needed on the server side.

This means you can use any JavaScript API available in the browser, including third-party libraries like p5.js (loaded via CDN links in your code).

The MongoDB sandbox uses mingo.js, a client-side JavaScript implementation of the MongoDB query language. Like the SQL and Python sandboxes, it runs entirely in the browser — no queries are sent to a server. A collection of JSON documents is loaded into browser memory, and mingo.js evaluates your MongoDB queries against that in-memory data.

The sandbox supports standard MongoDB query operators and aggregation pipelines. Results are displayed as formatted JSON in the output panel.

The Bot Box is a pair of sandbox types for AI prompt engineering exercises:

  • ChatBox — a simple chat interface where students interact directly with an LLM using prompts they write. Useful for teaching prompt design, system instructions, and how model responses vary with different inputs.
  • BotBox — a full tutor-bot builder where students configure a system prompt, persona, and knowledge base, then test the resulting bot in a live chat window. Students experience the AI from both the designer's and the user's perspective.

Both sandbox types run against an LLM API; network connectivity is required. The instructor sets the model and scope; students never see API keys.

The code editor uses CodeMirror, a widely used browser-based editor library. It provides syntax highlighting, bracket matching, and line numbering for Python, SQL, R, HTML, CSS, and JavaScript. CodeMirror runs entirely in the browser — no keystrokes are sent to the server.

When you submit an answer, the platform sends your code output (not your code itself) along with the instructor's expected answer to a large language model (LLM) API. The LLM assesses semantic correctness — so minor formatting differences or equivalent but differently-worded outputs can still be marked correct.

This is the only interaction with an external server during a session. Your code stays in the browser; only the final output is evaluated.

Scores are written to a cloud database (Azure Table Storage) keyed by your email address and the sandbox identifier. This is what allows your instructor to view per-student progress from the instructor dashboard. Nothing else — no code, no session data — is persisted server-side.

No. Everything runs in a modern desktop browser (Chrome, Edge, Firefox, or Safari). No extensions, plugins, local Python installs, or accounts are needed. On first load, the browser downloads the relevant WebAssembly runtime (a few megabytes), which may be cached for subsequent sessions.

manage_accounts

For Instructors

Getting a class of 30–200 students to run the same code reliably is surprisingly hard. Environment issues ("how come it works on her machine but not mine?"), package version mismatches, compatability problems, and a myriad of other gremlins all conspire to eat into precious teaching time.

Sandbox Tutor eliminates setup entirely. Students click a link, see the exercise, and start coding in seconds — on any device, in any browser, with no accounts required.

A sandbox can serve any scope — a semester-long practice set, a module covering one topic, or a single in-class exercise. You decide the granularity; there is no limit on how many sandboxes you create or how narrowly you target them.

Tutorial and quiz questions can be freely mixed within a single sandbox. A sandbox might open with worked tutorial steps that walk students through a concept, then transition into graded quiz questions that test it. Crucially, tutorial and quiz questions can be shown or hidden independently, in real time — so you can reveal quiz questions mid-class once the tutorial portion is done, without creating a separate sandbox.

For quiz questions, several options let you tune the assessment experience:

  • Quiz Mode — hides pass/fail feedback so students can't trial-and-error their way to the answer; you control when (or whether) results are revealed.
  • Hint Mode — lets students request a hint on any question, at the cost of one randomly chosen correct question being reset.
  • Clipboard lockdown — disables copy/paste inside the editor to discourage pasting in external solutions.
  • Date-gated access — restricts the sandbox to a time window you define, useful for timed assessments or releasing work at a precise moment.
  • Disable Sandbox — takes the sandbox offline instantly; students see a locked page until you re-enable it.

Per-student, per-question scores are visible on the instructor dashboard at any time.

The platform currently supports seven sandbox types:

  • Python — full Pyodide environment including NumPy, Pandas, Matplotlib, Seaborn, Altair, Scikit-learn, Beautiful Soup, and more.
  • SQL — client-side SQLite; use any of the built-in database files or upload your own.
  • Web — HTML, CSS, and JavaScript with live preview; supports external JS libraries such as p5.js.
  • R — full R interpreter via WebR, with console output and plot rendering.
  • DB Designer — visual drag-and-drop ER diagram builder that generates SQL CREATE TABLE statements.
  • MongoDB — client-side NoSQL query exercises powered by mingo.js; JSON documents are queried in the browser with full support for MongoDB query operators and aggregation pipelines.
  • Bot Box — ChatBox (prompt engineering) and BotBox (tutor-bot builder) for AI-focused exercises.

For each step in an exercise you provide an expected output. When a student submits, the platform uses an LLM to compare the student's actual output against your expected output and assigns a pass or fail.

Because the comparison is semantic rather than exact-string matching, you don't need to worry about trailing spaces, line-ending differences, or minor formatting variations. You can also write a short grading rubric note to guide the LLM for edge cases.

Each sandbox has a unique short URL (e.g. viewer.php?c=pIMF81G1) that you share with students — via LMS, email, or a QR code. Students enter their email address on the access page and are taken directly into the exercise. No student account creation is required.

Students can optionally set a "remember me" cookie after first use login to skip the email step on the same device.

Sandbox Tutor uses a per-instructor licensing model. Each license gives you access to the instructor dashboard for creating and managing sandboxes, tracking scores, and using AI grading features. Student access is unlimited and free — students never pay or create accounts.

For licensing inquiries, contact us.

Yes. The instructor dashboard provides a live view of per-student, per-question scores as soon as a student submits. This is useful during a lab session to gauge class progress and identify students who are struggling.

Yes. The following live sandboxes each demonstrate a single configuration option so you can see exactly what students experience:

  • Disable Sandbox — the sandbox is turned off; students see a locked access page and cannot proceed.
  • Disable Clipboard — copy and paste are blocked inside the code editor.
  • Hint Mode — students can request a hint on any question; one randomly-selected correct question is reset as the cost.
  • Quiz Mode — pass/fail feedback is hidden from students during the session; only the instructor sees results.

All four examples use the same underlying Python Essentials content so differences in behaviour are purely due to the configuration flag being demonstrated.

Sandbox Tutor includes several features aimed at lower-stakes assessments and quizzes:

  • Date-gated windows — the sandbox is only accessible between a start and end time you define.
  • Disable Sandbox — toggle a sandbox off entirely so students hit a locked page; useful for releasing work at a precise moment.
  • Quiz Mode — hides per-question pass/fail feedback until you choose to release it.
  • Hint Mode — allows students to request a hint on any unsolved question, at the cost of one randomly-selected already-correct question being reset to unanswered. Keeps students moving without giving answers away freely.
  • Clipboard lockdown — disables copy/paste within the sandbox to reduce the chance of students pasting in external solutions.

For high-stakes, proctored exams, consider whether you need additional institutional proctoring tools alongside these features.

psychology

Teaching Principles

The platform is built around learning by doing. Reading about how to write a SQL query or a Pandas dataframe operation is far less effective than writing the code yourself, running it, getting feedback, and iterating. Sandbox Tutor removes every barrier between the student and that cycle of practice — no install, no login, no waiting.

The design deliberately keeps the interface minimal so cognitive load stays on the subject matter, not the tooling.

Each sandbox is structured as a sequence of independent steps that students work through at their own pace. There is no timer running (unless you enable a date window), no "next student is already on step 5" pressure, and no penalty for running code multiple times before submitting.

This respects that students arrive with different backgrounds and learn at different speeds — a principle supported by mastery learning research, which finds that students benefit from working until they understand something rather than moving on at a fixed class pace.

Feedback works best when it arrives immediately after an attempt, while the reasoning behind the attempt is still active in working memory. Waiting until a graded assignment is returned days later means students have often forgotten what they were thinking when they wrote the code.

AI-powered grading in Sandbox Tutor delivers a pass/fail judgment — and optionally a short explanation — within seconds of submission. This closes the feedback loop as tightly as possible, supporting what learning scientists call formative assessment.

Research on productive failure and desirable difficulties shows that making and correcting mistakes is one of the most powerful ways to consolidate new knowledge. When students are afraid of being judged for wrong answers, they tend to avoid experimentation — exactly what you don't want in a coding class.

Sandbox Tutor is designed to feel low-stakes. Students can run code as many times as they like before submitting, the platform never shows their individual score to classmates, and instructors can configure quiz mode to hide feedback during the session and review results afterwards.

Instructors can include starter code for each step — partially written code that gives students a structure to complete, rather than a blank screen. This is a classic scaffolding technique: it lowers the initial barrier and focuses attention on the specific concept being taught, rather than requiring students to simultaneously recall everything they've learned so far.

Good exercise design gradually reduces scaffolding across a module so students build independence over time — a process called fading.

Active recall — retrieving information from memory rather than passively re-reading — is one of the most robust findings in the learning science literature. Coding exercises are inherently a form of active recall: students must remember and apply syntax and concepts to produce a working output.

Instructors are encouraged to sequence exercises so that later steps require students to apply concepts from earlier steps without explicit reminders — reinforcing retrieval rather than just recognition.

Cognitive load theory distinguishes between load that is intrinsic to the material (hard to avoid) and extraneous load introduced by poor design (completely avoidable). Installing Python, managing virtual environments, and dealing with dependency errors are all extraneous — they consume limited working memory without teaching anything about the subject.

By eliminating setup, Sandbox Tutor preserves that cognitive budget for the actual content. Students spend the session thinking about Pandas or SQL, not about why their pip install failed.

info

About Sandbox Tutor

Sandbox Tutor was designed and built by Jon Featherstone, an Assistant Teaching Professor in the Department of Information Science, University of Colorado Boulder.

Built around the principle of learning by doing, the platform lets students work at their own pace in a safe, interactive, low-stakes space where mistakes are part of the process. AI-powered grading delivers instant, personalized feedback at every step, keeping students engaged and on track.

Tools and Technologies

  • All pages were coded in VSCode running on a MacBook Air
  • Client-side pages include HTML, CSS, Javascript and WebAssemblies (wasm)
  • Server-side code is PHP
  • Hosting is an Azure Web App

Project Management

  • Source code was tracked with a GitHub repository
  • Issues were tracked and managed with a GitHub project and KanBan board

Vibe-coding

Special mention needs to be given to vibe coding. I have worked in various software development roles over the years, but never has there been such a dramatic increase in productivity as AI "vibe-coding" (or whatever term we end up using).

When I started this project 2 years ago, I was mostly coding by hand and sometimes copy/pasting specific code fragments into either ChatGPT or Deepseek. Then I switched to the free version of Copilot which integrates directly into VSCode and has visibility of the entire project source code folders and files. This worked really well but I quickly ran out of tokens and had to wait until the end of the month for it to reset.

I decided to get the paid version (Pro) of Claude (which also integrates into VSCode). This has changed my day-to-day workflow from mainly writing code to mainly writing prompts, and has proved extremely effective. I have found it works best when I keep the prompts quite specific and targeted.

Before it makes any actual code changes, Claude asks me "Would you like me to make this edit? Yes/No/Tell Claude what to do instead?". This third option "Tell Claude what to do instead" is very helpful, as sometimes Claude will veer a bit off course and this is an easy way to get it back on track.