Technology Review

This chapter provides an overview of technologies and Python libraries that support interactive teaching. We conducted a review of open-source tools suitable for use in digital health education, with a particular focus on technologies that facilitate interactivity, visualization, and reproducibility. Several of these tools are actively used in the course.

Interactive Plots

Interactive visualizations are a key component of the course, particularly within Python notebooks. While static plots are commonly created using matplotlib, several libraries offer enhanced interactivity that can significantly improve learner engagement and data exploration.

Plotly

Plotly logo

  • Website: https://plotly.com/python/
  • Plotly is a powerful graphing library that enables the creation of interactive, publication-quality plots. It supports a wide range of chart types, including 3D plots, and integrates well with Jupyter Notebooks.

Altair

Altair logo

  • Website: https://altair-viz.github.io/
  • Altair is a declarative statistical visualization library for Python, built on the Vega-Lite visualization grammar. It offers a clean and user-friendly API for quickly building interactive plots, making it well-suited for teaching and exploratory data analysis.

Interactive Web Applications

To demonstrate simple relationships between parameters, settings, and outputs, lightweight interactive web applications are highly effective. These tools enable the creation of intuitive and responsive interfaces with minimal overhead. For example, see the Indocyanine Green application.

Marimo

  • Website: https://marimo.io/
  • Marimo is an open-source reactive notebook for Python. It is reproducible, git-friendly, supports built-in SQL, can be executed as a script, and shared as a web app.
  • Deployment of marimo with: https://github.com/jyio/jupyter-marimo-proxy

Shiny for Python

  • Website: https://shiny.posit.co/py/
  • Shiny enables the development of reactive data and AI applications in pure Python.
  • Integrates well with the Quarto publishing system for seamless documentation and presentation.

Voilà

  • Website: https://voila.readthedocs.io/en/stable/
  • Voilà turns Jupyter Notebooks into standalone interactive dashboards.
  • Allows secure sharing with customizable user interfaces, hiding underlying code when needed.

Streamlit

  • Website: https://streamlit.io/
  • Streamlit allows rapid development of shareable web apps directly from Python scripts.
  • No front-end development experience is required, making it ideal for education and prototyping.

Dash

  • Website: https://dash.plotly.com/
  • Dash is a low-code framework for building data apps in Python, developed by Plotly.
  • Supports multi-page apps, complex layouts, and scalable deployment.
  • Advanced customization may require HTML, CSS, and JavaScript knowledge.

Panel

  • Website: https://panel.holoviz.org/
  • Panel is a versatile Python library for building dashboards, applications, and custom GUIs.
  • Supports integration with multiple backends and rendering libraries.

Observable Framework

  • Website: https://github.com/observablehq/framework
  • Observable Framework is a static site generator for building data apps, dashboards, and reports.
  • Uses JavaScript on the front end and supports any backend language.
  • Offers precomputed data snapshots for fast, interactive dashboards.

Deployment of Notebooks

Deploying Jupyter Notebooks in a scalable and user-friendly way is essential for interactive teaching, especially when working with groups of students or collaborators. Below are several popular solutions for deploying and sharing notebooks in educational and research settings.

JupyterHub

  • Website: https://jupyter.org/hub
  • Docs (TLJH): https://tljh.jupyter.org/en/latest/howto/index.html
  • JupyterHub enables centralized deployment of Jupyter Notebooks for multiple users. It provides each user with their own workspace and computational environment on shared infrastructure.
  • Suitable for classroom settings, research groups, or institutions, with user management, authentication, and resource allocation handled by administrators.
  • The TLJH (The Littlest JupyterHub) distribution is ideal for small to medium-sized deployments on a single server.
  • Jupyterhub on Kybernetics https://z2jh.jupyter.org/en/latest/index.html

BinderHub

  • Website: https://binderhub.readthedocs.io/en/latest/
  • BinderHub allows you to create custom computing environments that can be shared and run directly from a Git repository.
  • It is ideal for reproducible examples, demos, and workshops without requiring users to install anything locally.
  • While convenient, Binder instances can be slow to start, have limited resources, and are not intended for high-performance or long-term deployments.

Google Colab

  • Website: https://colab.research.google.com/
  • Google Colab offers a cloud-based notebook environment with free access to GPUs and TPUs.
  • Notebooks are stored in Google Drive and can be shared easily with others.
  • Well-suited for introductory courses or rapid prototyping, though less customizable than JupyterHub-based setups.

Deepnote

  • Website: https://deepnote.com/
  • Deepnote is a collaborative Jupyter-compatible notebook platform that supports real-time collaboration, version control, and integrations with various data sources.
  • Designed with education and team workflows in mind, but requires registration and is partially commercial.

Noteable

  • Website: https://noteable.io/
  • Noteable is a platform tailored for teaching with notebooks in higher education.
  • Offers learning management system (LMS) integration, centralized course management, and grading support.
  • Free plans are available for educators with institutional support.

Saturn Cloud

  • Website: https://saturncloud.io/
  • Saturn Cloud provides scalable cloud-based Jupyter environments with support for Dask, GPUs, and large memory instances.
  • Suitable for more demanding applications or machine learning workloads in teaching and research.

GitHub Global Campus

Focus on teaching with GitHub Classroom Managing and organizing your class is easy with GitHub Classroom. Track and manage assignments, automate grading, and help students when they get stuck— all while using GitHub.

Teaching with interactive notebooks

Resources on building a digital course, course using interactive notebooks and tools.

Teaching and Learning with Jupyter

This handbook is for any educator teaching a topic that includes data analysis or computation in order to support learning. - https://jupyter4edu.github.io/jupyter-edu-book/

Guide to Jupyter Notebooks for Educational Purposes

Grading of jupyter notebooks

nbgrader: https://nbgrader.readthedocs.io/en/stable/ https://www.youtube.com/watch?v=bEcxnR2V-_8 Otter grader & gradescope

TODO: check other plugins and extensions such as Calysto activity magic.

Educational resources

Open edX Educators

  • Material on how to build and design courses: https://docs.openedx.org/en/latest/educators/index.html
  • Instructional Design Concepts: https://docs.openedx.org/en/latest/educators/navigation/creating_course.html#instructional-design-concepts

Tickets to leave: https://www.brown.edu/sheridan/teaching-learning-resources/teaching-resources/course-design/ classroom-assessment/entrance-and-exit/sample.

Text to Speech

Text-to-speech (TTS) technologies support accessibility and inclusive education by enabling the conversion of written content into spoken language. This is especially beneficial for learners with visual impairments, language processing difficulties, or for developing audio-based instructional content.

Whisper AI

  • Website: https://openai.com/index/whisper/
  • Whisper is an open-source automatic speech recognition (ASR) model developed by OpenAI.
  • While primarily used for speech-to-text, it is useful in TTS pipelines to transcribe audio input and generate corresponding spoken or text-based materials for learners.

ElevenLabs

  • Website: https://elevenlabs.io/
  • ElevenLabs provides advanced neural voice synthesis tools for generating natural-sounding speech from text.
  • Though not open source, it is widely used for creating high-quality audio for educational videos and interactive content.

Notable Open Source Resources for TTS in Education

eSpeak NG

  • Website: https://github.com/espeak-ng/espeak-ng
  • A compact, open-source software speech synthesizer supporting multiple languages.
  • Suitable for use in accessibility tools, screen readers, and lightweight educational devices.

Festival Speech Synthesis System

Coqui TTS

  • Website: https://github.com/coqui-ai/TTS
  • A community-driven fork of Mozilla TTS with active development and support.
  • Offers multilingual support and state-of-the-art models for generating educational audio content.

These open-source tools can be integrated into educational platforms, e-learning applications, or assistive technologies to improve the learning experience for diverse user groups.


Mu

See also markdown xblock! https://github.com/citynetwork/markdown-xblock

Writing courses in markdown.

Mu Course authoring for humans https://discuss.openedx.org/t/introducing-mu-course-authoring-for-humans/9314

In a nutshell, Mu allows you to write your courses in Markdown or HTML5, and then convert them to OLX, and vice-versa.

https://github.com/overhangio/mu

Installation

pip install mu-courses

Install up to date pandoc version https://github.com/jgm/pandoc/releases/ pandoc 3.6.4

mkdir olx mu ./course.md ./olx/

Package the course

tar -czf mycourse.tar.gz ./olx

reveal.js

  • presentations are created with reveal.js
  • reveal.js is an open source HTML presentation framework. It’s a tool that enables anyone with a web browser to create fully-featured and beautiful presentations for free.
  • Presentations made with reveal.js are built on open web technologies. That means anything you can do on the web, you can do in your presentation. Change styles with CSS, include an external web page using an iframe or add your own custom behavior using our JavaScript API.
  • The framework comes with a broad range of features including nested slides, Markdown support, Auto-Animate, PDF export, speaker notes, LaTeX support and syntax highlighted code.
  • https://revealjs.com/course/
  • nice integration with Quarto; https://quarto.org/docs/presentations/revealjs/demo/#/title-slide
  • https://github.com/quarto-dev/quarto-web/blob/main/docs/presentations/revealjs/demo/index.qmd

OpenEdx

  • https://openedx.org/
  • Enable online campuses, instructor-led courses, degree programs, and self-paced courses using a single platform.
  • Open edX is a thriving open source project, backed by a great community, for running an online learning platform at scale. Open edX comes with an LMS (Learning Management System) where students access course contents, a CMS (Content Management System) that course staff uses to design courses, and a few other components to provide more services to students, course staff, and platform administrators.

Allows integration of jupyter notebooks, H5P, …