Mathematical Computing and Reproducible Experiments
B80 - English-access edition
0.1 How to use this book
This book treats computation as part of doing mathematics: formulating questions, representing objects, running experiments, checking programs, preserving a record of the work, and explaining what the results actually establish.
The only formal prerequisite is A30-level competence: algebra, functions, and trigonometry at the precalculus level. Two compulsory primers introduce Python from the beginning, before the twelve main units. Calculus, linear algebra, probability, and differential equations appear only after the reader reaches the relevant courses; they are not hidden prerequisites for Unit 1.
Every experiment in this book is intended to run locally with open software. A computational result does not become a mathematical proof merely because a computer produced it. Computation can nevertheless reveal counterexamples, test implementations, guide conjectures, and produce a record that other people can inspect.
This is a separate English edition of the original Indonesian course Komputasi Matematis dan Eksperimen yang Dapat Direproduksi. The Indonesian 14-unit edition, version 2026.08.22.1, remains available at https://doi.org/10.5281/zenodo.22053905, with editable source at https://github.com/KokunoYumeto/mathematical-computing-reproducible-experiments-id. Its historical 12-unit release, 2026.08.22, remains available at https://doi.org/10.5281/zenodo.22052053. The English edition preserves the fourteen unit identifiers and all seventy-five exercises; it does not replace either Indonesian release.
The permanent DOI for this English edition is https://doi.org/10.5281/zenodo.22210474.
This English edition has its own source, build and validation record. Its source repository is https://github.com/KokunoYumeto/mathematical-computing-reproducible-experiments-en. The release assets provide the English PDF, EPUB and offline learner package. A successful Indonesian build is source evidence, not proof of English validation; consult the English release receipts for the checked boundary.
0.2 Local setup
Run these commands from the root of the source package. For the standard Python profile in Windows PowerShell, create a separate environment, activate it, install the frozen package versions, and make the project’s kernelspec visible to Jupyter:
py -3.13 -m venv .venv
.\.venv\Scripts\Activate.ps1
python -m pip install -r environment/python-lock.txt
$env:JUPYTER_PATH = (Resolve-Path build-support/jupyter).Path
python -m jupyter kernelspec list
On Linux or macOS, use the equivalent commands:
python3.13 -m venv .venv
source .venv/bin/activate
python -m pip install -r requirements-build.txt
export JUPYTER_PATH="$(pwd)/build-support/jupyter${JUPYTER_PATH:+:$JUPYTER_PATH}"
python -m jupyter kernelspec list
The list should include o002-frozen. The file requirements-build.txt lists the cross-platform root dependencies; environment/python-lock.txt records the resolved set of 95 Windows packages used by the Indonesian source release. A POSIX environment resolved from the root dependencies must be recorded as a compatible profile, not as byte-identical to the Windows lock. On Windows, check the runtime against the lock with:
python scripts/python_environment.py verify --lock environment/python-lock.txt --receipt environment/PYTHON_ENVIRONMENT_RECEIPT.json
Quarto is required to build the reader, and a TeX distribution is required for the PDF. Check them with quarto --version and lualatex --version. Ordinary Python experiments do not require TeX.
The SageMath laboratory uses a separate profile so that Sage packages do not mix with the standard Python environment. On Windows, use WSL Ubuntu 22.04 and its SageMath 9.5 packages:
wsl.exe --install -d Ubuntu-22.04
wsl.exe -d Ubuntu-22.04 -- bash -lc "sudo apt-get update && sudo apt-get install -y sagemath=9.5-4 python3-sage=9.5-4"
wsl.exe -d Ubuntu-22.04 -- /usr/bin/sage --version
python scripts/sage_environment.py verify --lock environment/sage-ubuntu22.04-dpkg-lock.txt --receipt environment/SAGE_ENVIRONMENT_RECEIPT.json
If lock verification rejects the local profile, you may still use that profile for learning, but must not describe it as byte-identical to the release environment. The inherited source receipt records Ubuntu 22.04, SageMath 9.5, and the inventory of 1,064 packages actually tested for that source edition. The English edition must record its own execution checks. No paid service or remote runtime is required.
0.3 What every unit provides
Every unit contains:
- learning objectives and local prerequisites;
- learner-facing text with stable identifiers;
- code that runs without a paid service;
- automated tests for claims about programs;
- exercises, hints, answers, and full solutions, with executable checks for the fifteen additional mastery exercises;
- discussion of the boundary between experiment, proof, and conclusion; and
- records of versions, environments, and artifact hashes at production checkpoints.
The standard environment is recorded in the complete Python lock and its verification receipt. The SageMath laboratory uses a separate local profile recorded in the Sage lock and Sage receipt. Package names and versions are part of the experiment, not merely installation suggestions. Check each receipt’s edition and execution date: inherited source receipts do not establish English-edition completion.
0.4 Licensing, attribution, and source boundaries
All fourteen units were independently authored for the Indonesian course. This English edition translates that original course; it is not a translation of an English donor textbook. No suitable pre-existing English edition of the whole original course was available to reuse.
Patrick Walls, Mathematical Python; Irving and colleagues, Research Software Engineering with Python; Scientific Python Lectures; Hans Fangohr, Introduction to Python for Computational Science and Engineering; and the Official Sage Tutorial 10.9 are references for comparing coverage, software semantics, and production practice. Their existing English material remains available in its original form. No prose, exercises, figures, data, or code from those works has been copied or adapted into this edition. Mentioning them does not imply endorsement.
Useful English references include the Python 3.13 tutorial, the SciPy reference for scipy.special.exprel, and the official Sage tutorial. The Python tutorial assumes basic programming knowledge, so it supplements rather than replaces this course’s novice primers. A current web reference can describe a newer release than the frozen course environment; check the recorded software version before relying on an API detail.
The original course text and this English translation are licensed under CC BY-SA 4.0; original course code is licensed under MIT. Reuse must preserve the required attribution, license notices, and record of changes. Credit the O002 project contributors and identify the English translation as a change from the Indonesian original.
Translation, production, and quality checks are assisted by OpenAI Codex gpt-5.6-sol, Ultra, at the user’s direction. This disclosure does not replace credit to authors, sources, rights holders, or human contributors.
The complete files are available as the text license, code license, third-party boundaries, and web-runtime licenses.
Any donor material admitted in a future revision remains subject to its own component license; it is not automatically covered by this edition’s licenses.