Skip to content
Devgo

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.

Created by

Fernando Pérez · Created IPython (precursor to Jupyter) in 2001

When to use
  • Data exploration and analysis.
  • Prototyping and experimentation.
  • Sharing reproducible research.
  • Learning and teaching.
When not to
  • 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 (classic). Supports many languages via kernels (, 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 /PDF.

Scaling limits

State between cells can be confusing (execution order matters). Not ideal for production code (hard to test, 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.

,