Code Runner - JavaScript
Build a lesson using javascript. This allows you to create in Jupyter Notebook code cell for development, plus interact elements with the lesson on the Web
Code-Runner Automation
The notebook (ipynb) to web (html) conversion system automatically generates a “code-runner” web experience from code cells.
JavaScript Code Cells
- %%js: required for code cell testing
- JavaScript/Java:
// CODE_RUNNER: <challenge text>
Code Runner Challenge
Personalize your student record.
View IPYNB Source
%%js
// CODE_RUNNER: Personalize your student record.
// Simple person object with key-value pairs
const person = {
name: "Jane",
age: 16
};
console.log(person);
Practical Example: Fix the Syntax Error
Here’s a lesson example to fix a syntax error.
Code Runner Challenge
Fix the syntax errors. Run the code to get a hint!
View IPYNB Source
%%js
// CODE_RUNNER: Fix the syntax errors. Run the code to get a hint!
console.log(Office hours 10-10:30))
Practical Example: JavaScript Loop
A JavaScript example where students complete a loop.
Code Runner Challenge
Complete the for loop to print numbers 1 through 5. Fill in the missing parts of the loop.
View IPYNB Source
%%js
// CODE_RUNNER: Complete the for loop to print numbers 1 through 5. Fill in the missing parts of the loop.
// Complete the for loop
for (let i = ???; i <= ???; i++) {
console.log(i);
}
Build Process
When you run make or the notebook conversion script:
- The script detects CODE_RUNNER comments in code cells
- Extracts the challenge text from the comment
- Generates a unique
runner_idbased on the permalink + index - Strips magic commands (
%%js,%%python) and CODE_RUNNER comments from the code - Clears Jupyter outputs from cells with CODE_RUNNER (since code-runner provides interactive execution)
- Injects a code-runner block after the code cell in the generated markdown
Testing Notebooks
- In Notebook: Run cells normally, see outputs using Help-Toggle Developer Tools
- On Website: Viewers can modify, run code, and view outputs localhost and deployed
- No Duplication: Code exists is in both places, but only requires development in notebook (IPYNB)
Migrating Notebooks
If you have existing IPYNB lessons with code cell that only run in VSCode:
- You will need to enable your repo for Code Runner support
- Add to frontmatter of the page
codemirror: true - Add a comment to the top of desired code-runner cell
// CODE_RUNNER: <challenge text> - Run make, view, and test on localhost
- Commit the change to production
The system will automatically generate the code-runner blocks in the page that enable interaction on the Web.