From Things and Stuff Wiki
Jump to navigation Jump to search

Computational notebooks

to sort with Maths#Software, Computing#Runtime, Organising#Lab notebook

  • - or computational notebook is a virtual notebook environment used for literate programming, a method of writing computer programs. Some notebooks are WYSIWYG environments including executable calculations embedded in formatted documents; others separate calculations and text into separate sections. Notebooks share some goals and features with spreadsheets and word processors but go beyond their limited data models. Modular notebooks may connect to a variety of computational back ends, called "kernels". Notebook interfaces are widely used for statistics, data science, machine learning, and computer algebra.

Notebooks are traditionally used in the sciences as electronic lab notebooks to document research procedures, data, calculations, and findings. Notebooks track methodology to make it easier to reproduce results and calculations with different data sets. In education, the notebook interface provides a digital learning environment, particularly for the teaching of computational thinking. Their utility for combining text with code makes them unique in the realm of education. Digital notebooks are sometimes used for presentations as an alternative to PowerPoint and other presentation software, as they allow for the execution of code inside the notebook environment. Due to their ability to display data visually and retrieve data from different sources by modifying code, notebooks are also entering the realm of business intelligence software.

  • - an international collaboration to build open source tools that facilitate publishing computational narratives using the Jupyter ecosystem.
    • The Executable Books Project - the team documentation for the ExecutableBooksProject, an international collaboration to build open source tools that facilitate publishing computational narratives using the Jupyter ecosystem

We are a community who steward:

  • Jupyter Book: Build beautiful, publication-quality books and documents from computational material like Jupyter Notebooks.
  • MyST Markdown: An extended Markdown format designed for the future of technical communication and publication.

As well as many other tools for parsing, headless execution of Jupyter Notebooks (caching and in the browser), popular sphinx extensions (e.g. copy-button, sphinx-design, sphinx-thebe), and many scientific templates for writing journal articles and presentations.

  • Ecosystem of tools - There are several major tools that we have developed, or are contributing to, as a part of this project. This page describes a few major components.

IPython / Jupyter

  • IPython - provides a rich architecture for interactive computing with:
    • A powerful interactive shell.
    • A kernel for Jupyter.
    • Support for interactive data visualization and use of GUI toolkits.
    • Flexible, embeddable interpreters to load into your own projects.
    • Easy to use, high performance tools for parallel computing.

  • - a project to develop open-source software, open standards, and services for interactive computing across multiple programming languages. It was spun off from IPython in 2014 by Fernando Pérez and Brian Granger. Project Jupyter's name is a reference to the three core programming languages supported by Jupyter, which are Julia, Python and R. Its name and logo are an homage to Galileo's discovery of the moons of Jupiter, as documented in notebooks attributed to Galileo. Project Jupyter has developed and supported the interactive computing products Jupyter Notebook, JupyterHub, and JupyterLab. Jupyter is financially sponsored by NumFOCUS.

  • Project Jupyter Documentation - a large umbrella project that covers many different software offerings and tools, including the popular Jupyter Notebook and JupyterLab web-based notebook authoring and editing applications. The Jupyter project and its subprojects all center around providing tools (and standards) for interactive computing with computational notebooks.

  • - a project which produces browser-based interactive environments for programming, mathematics, and data science. It supports a number of languages via plugins ("kernels"), such as Python, Ruby, Haskell, R, Scala, Julia and Kotlin. JupyterLab is "Jupyter’s Next-Generation Notebook Interface", while Jupyter Notebook is the original.

  • Jupyter/IPython Notebook Quick Start Guide - a brief step-by-step tutorial on installing and running Jupyter (IPython) notebooks on local computer for new users who have no familiarity with python. Briefly, if someone gave you a notebook to run and you don’t know what a notebook is, this document is for you. Jupyter Notebook App (formerly IPython Notebook) is an application running inside the browser. This guide describes how to install and use Jupyter Notebook App as normal desktop application, without using any remote server.

  • Jupyter Notebook - The Classic Notebook Interface. The Jupyter Notebook is the original web application for creating and sharing computational documents. It offers a simple, streamlined, document-centric experience.
  • JupyterHub - brings the power of notebooks to groups of users. It gives users access to computational environments and resources without burdening the users with installation and maintenance tasks. Users - including students, researchers, and data scientists - can get their work done in their own workspaces on shared resources which can be managed efficiently by system administrators. JupyterHub runs in the cloud or on your own hardware, and makes it possible to serve a pre-configured data science environment to any user in the world. It is customizable and scalable, and is suitable for small and large teams, academic courses, and large-scale infrastructure.

  • JupyterLab - a highly extensible, feature-rich notebook authoring application and editing environment, and is a part of Project Jupyter, a large umbrella project centered around the goal of providing tools (and standards) for interactive computing with computational notebooks. A computational notebook is a shareable document that combines computer code, plain language descriptions, data, rich visualizations like 3D models, charts, graphs and figures, and interactive controls. A notebook, along with an editor like JupyterLab, provides a fast interactive environment for prototyping and explaining code, exploring and visualizing data, and sharing ideas with others. JupyterLab is a sibling to other notebook authoring applications under the Project Jupyter umbrella, like Jupyter Notebook and Jupyter Desktop. JupyterLab offers a more advanced, feature rich, customizable experience compared to Jupyter Notebook.

  • nbviewer - A simple way to share Jupyter Notebooks

  • BeakerX - a collection of kernels and extensions to the Jupyter interactive computing environment. It provides JVM support, interactive plots, tables, forms, publishing, and more.

  • Zero-to-Binder — The Turing Way - In this chapter, we will create a Binder project from scratch: we will first make a repository on GitHub and then launch in on Sections where you are expected to complete a task are denoted by three traffic light 🚦 emojis. Some steps give you the option of Python, Julia or R - click on the tab of your preferred language.

  • GESIS Notebooks - a free and hosted instance of BinderHub, that is part of the Federation, for running Jupyter Notebooks requiring no installation. We aim to enable you to get started quickly with your research ideas, prototyping your data science projects, or learning to program languages such as R, Python or Julia.

  • PAWS - Wikitech - a service that hosts Jupyter notebooks for use by Wikimedia's contributors. PAWS users can launch, publish, and fork notebooks without having to install Jupyter on a local computer. Users only need a Wikimedia SUL and an internet connected web-browser to use the service. PAWS makes it easier for volunteers along the spectrum to work in technical spaces and make contributions to Wikimedia's technical projects.


  • R: Knitr - The R package knitr is a general-purpose literate programming engine, with lightweight API's designed to give users full control of the output without heavy coding work. It combines many features into one package with slight tweaks motivated from my everyday use of Sweave.
  • knitr in a knutshell - a really important tool for reproducible research. You create documents that are a mixture of text and code; when processed through knitr, the code is replaced by the results and/or figures produced. Note: people are moving from R Markdown to Quarto, so maybe stop reading this and go look at Quarto.


  • Quarto - An open-source scientific and technical publishing system using Pandoc. Author using Jupyter notebooks or with plain text markdown in your favorite editor. Create dynamic content with Python, R, Julia, and Observable. Publish reproducible, production quality articles, presentations, dashboards, websites, blogs, and books in HTML, PDF, MS Word, ePub, and more. Share knowledge and insights organization-wide by publishing to Posit Connect, Confluence, or other publishing systems. Write using Pandoc markdown, including equations, citations, crossrefs, figure panels, callouts, advanced layout, and more. Analyze. Share. Reproduce. You have a story to tell with data—tell it with Quarto.

In addition to the core capabilities of Pandoc, Quarto includes:

  • Embedding code and output from Python, R, Julia, and JavaScript via integration with Jupyter, Knitr, and Observable.
  • A variety of extensions to Pandoc markdown useful for technical writing including cross-references, sub-figures, layout panels, hoverable citations and footnotes, callouts, and more.
  • A project system for rendering groups of documents at once, sharing options across documents, and producing aggregate output like websites and books.
  • Authoring using a wide variety of editors and notebooks including JupyterLab, RStudio, and VS Code.
  • A visual markdown editor that provides a productive writing interface for composing long-form documents.


  • Pluto.jl - interactive Julia programming environment. A Pluto notebook is made up of small blocks of Julia code (cells) and together they form a reactive notebook. When you change a variable, Pluto automatically re-runs the cells that refer to it. Cells can even be placed in arbitrary order - intelligent syntax analysis figures out the dependencies between them and takes care of execution. Cells can contain arbitrary Julia code, and you can use external libraries. There are no code rewrites or wrappers, Pluto just looks at your code once before evaluation.


  • SageMath - a free open-source mathematics software system licensed under the GPL. It builds on top of many existing open-source packages: NumPy, SciPy, matplotlib, Sympy, Maxima, GAP, FLINT, R and many more. Access their combined power through a common, Python-based language or directly via interfaces or wrappers. Mission: Creating a viable free open source alternative to Magma, Maple, Mathematica and Matlab.



  • Observable - Data visualization platform. Accelerate how you build and share data visualizations by using Observable to turn your most complex data sets into actionable insights.