kangwonlee / kangwonlee/nmisp

Pedagogy: reframe 00_introduction to motivation + floating-point hook

Open
#396 0 comments 0 reactions 0 assignees View on GitHub
pedagogy
Dominant language
Jupyter Notebook
Stars
12
Forks
76
PR merge metrics
No merged PRs in 30d

Description

## Goal

Today `00_introduction/00_introduction.ipynb` jumps straight into matplotlib plotting (sine wave) without explaining *why* learners would use computers to solve mathematical problems. As `06_python_advanced/` takes over the role of teaching libraries (numpy, matplotlib, pandas — see the meta restructure issue), `00_introduction` becomes free to focus on motivation.

## Scope — `00_introduction/00_introduction.ipynb`

Rewrite as a motivational chapter:

- Why use computers to solve math problems?
- Repeatability and traceability of arithmetic
- Scale (handle 10⁶ equations or 10⁹ data points; humans can't)
- Iteration and parameter sweeps that would be impossible by hand
- Visualization as a thinking tool, not just output
- Brief tour of what nmisp covers (root finding → optimization → integration → ODE → linear algebra)
- A small "hello world" scientific computation that's about the *idea*, not the syntax — e.g. show how an iterative algorithm converges, with the focus on the convergence story, not the matplotlib API

## Scope — `00_introduction/10_floating_point.ipynb` (lead-in update)

Lead with the killer motivating example:

> `2^64 - 1 ≈ 1.8 × 10^19` distinct values can be represented in 64 bits. The number of real numbers in `[0, 1]` is uncountably infinite. Therefore *no* finite encoding — including float64 — can represent all reals; what we get is a discrete, finite approximation. This is why `0.1 + 0.2 ≠ 0.3` is normal, not a bug.

The rest of `10_floating_point.ipynb` (binary, two's complement, IEEE 754 layout, precision examples) flows naturally from there. No content removal — only re-ordering and an opening hook.

## Why

- Anchors the entire course in *purpose* rather than syntax.
- The reals-are-uncountable hook gives a profound, memorable reason to be careful with floats — independent of any specific gotcha.
- Frees `00_introduction` from being a Python tutorial; that role moves to `03_python_basics` and `06_python_advanced`.

## Out of scope

- Library tutorials (numpy, matplotlib, pandas) — move to `06_` (separate issues).
- Python language teaching — lives in `03_` (#391).

## Acceptance

- [ ] Rewritten `00_introduction.ipynb` runs end-to-end and tells the "why" story before any code.
- [ ] `10_floating_point.ipynb` opens with the (2^64) vs uncountable-reals hook.
- [ ] No deprecated `pylab` import in either (per #390).

Contributor guide

No contributing guide indexed for this repository

Research direction

Start with 00_introduction/00_introduction.ipynb and 00_introduction/10_floating_point.ipynb, reviewing their current order and existing examples. Rework the first notebook around motivation and an iterative convergence example, and move the floating-point hook to the opening of the second; run both end-to-end and confirm there are no deprecated pylab imports.

Written by the indexing model from the issue text.

Assessment

Tech stack
jupyter-notebook, python
Domain
content, documentation
Issue type
Documentation
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Clearly specified
Newbie friendliness
50/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.