Jupyter Notebook
An interactive coding environment — write code, see output, and document in one document. Jupyter notebooks combine code, visualizations, and text. The standard for data science, research, and prototyping. JupyterLab is the modern interface.
Fernando Pérez · Created IPython (precursor to Jupyter) in 2001
- Data exploration and analysis.
- Prototyping and experimentation.
- Sharing reproducible research.
- Learning and teaching.
- Production code (use .py files).
- Large projects (use a real IDE).
- When execution order matters (state is implicit).
Definition
Jupyter notebooks are documents with cells: code cells (execute), markdown cells (text), and output cells (results, charts). IPython kernel executes code. JupyterLab (modern UI) and Jupyter Notebook (classic). Supports many languages via kernels (Python, R, Julia, JS).
Why it exists
To combine code, output, and explanation in one interactive document — the standard for exploratory data analysis, research, and reproducible science.
How it works
Cells contain code or markdown. Run a cell → code executes, output appears below. State persists between cells (the kernel). Notebooks save as .ipynb (JSON). JupyterLab adds a file browser, terminals, and extensions. Share via nbviewer, GitHub, or export to HTML/PDF.
Scaling limits
State between cells can be confusing (execution order matters). Not ideal for production code (hard to test, version control is messy). Large notebooks get slow.
Cost shape
Free and open source. JupyterHub for teams (paid hosting).
Alternatives
- VS Code notebooks — IDE integration, less data-science-focused.
- Google Colab — Cloud-hosted, free GPUs, Google ecosystem.
- Observable — JS-based, web-native.
Failure modes
- Hidden state (cells run out of order).
- Not testable/version-control friendly.
- Large notebook performance.