A Python library for creating interactive self-assessment quizzes (multiple choice, numerical, string) in Jupyter notebooks and Jupyter Book.
JupyterQuiz is a Python library designed to create and display interactive self-assessment quizzes within Jupyter notebooks and Jupyter Book publications. It solves the problem of static educational content by allowing authors to embed quizzes that provide immediate feedback, enhancing the learning experience for readers. The library supports multiple question types, including multiple choice, numerical, and string answers.
Educators, textbook authors, and technical writers who create interactive learning materials using Jupyter notebooks or Jupyter Book. It's particularly useful for those teaching data science, programming, or any subject where self-assessment within a computational environment is valuable.
Developers choose JupyterQuiz because it integrates seamlessly into the Jupyter workflow, requires no external services, and offers a simple way to make educational content interactive. Its open-source nature and focus on embedding quizzes directly into notebooks provide a lightweight, customizable alternative to proprietary quiz platforms.
An interactive Quiz generator for Jupyter notebooks and Jupyter Book
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Supports loading questions from Python lists, local JSON files, or remote URLs, making it easy to integrate with various data sources, as highlighted in the README's key features.
Embeds question source data, including answers, in hidden HTML elements to prevent spoilers, enhancing academic integrity, with examples provided in HideQuiz.ipynb.
Offers control over quiz appearance through CSS custom properties for colors, borders, and alignment, allowing authors to match branding or design preferences.
Includes a feature to capture and preserve student responses for grading, though it requires manual copy-pasting, as documented in the preserve-responses.ipynb example.
LaTeX rendering is broken in JupyterLab 4, requiring a hacky solution that loads MathJax 3 on top, which the README admits is not ideal and may cause instability.
Preserving student responses necessitates manual copy-pasting of text output due to JavaScript-Python communication limits, making it cumbersome for large-scale or automated use.
Updates like the change in precision parameter from decimal places to significant digits can disrupt existing quizzes without clear migration paths, as noted in the README.