kangwonlee / kangwonlee/2018pycpp

Ch 30 / 20.python.list-reference.ipynb — Python side complete, C++ bridge missing

Offen
#76 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
enhancement freshman-audience
Vorherrschende Sprache
Jupyter Notebook
Sterne
3
Forks
1
PR-Merge-Kennzahlen
Keine gemergten PRs in 30 T.

Beschreibung

The notebook `30.pointers-and-memory-management/20.python.list-reference.ipynb` sets up an excellent pedagogical hook: the Python `[one_row] * n_row` aliasing pattern (where one inner list gets referenced 10 times) is exactly the right entry point for introducing reference semantics in a language students already know. The predict-before-run prompts in cells 12 and 17 ("What do you think happened?" / "Why the result is different this time?") are pedagogically strong.

However, the notebook stops at the exercise prompt (cell 24):
> "Write two C/C++ programs that respectively regenerate python results above."

without providing the C++ side of the bridge. Students are left to make the cross-language connection on their own — exactly the connection the notebook's title (`python.list-reference`) and structure promise to deliver.

### Suggested addition (~3-4 hours of work)

Add a new section after the Python observations (around cell 22, before the exercise) that:

1. **Writes the equivalent C++ programs** — one with raw `int**` showing the aliasing bug parallel; one with `std::vector>` showing the safe modern equivalent.

2. **Translates the `is` / `id()` mental model to C++** — `Python a is b` corresponds to `C++ &a == &b` for the aliasing case. Show this with `cout << &matrix[0] << " == " << &matrix[1] << '\n';` parallel.

3. **Names the analogy explicitly** with a side-by-side table:
| Python | C/C++ | What it means |
|---|---|---|
| `b = a` (list) | `int *b = a;` | Both point to same memory |
| `b = a.copy()` | `std::vector b = a;` | Deep copy |
| `a is b` | `&a[0] == &b[0]` | Same memory? |

4. **Connects to "shallow vs deep copy"** as a named concept that bridges both languages.

5. **Closes with a "predict before run" mission** parallel to the Python exercises.

### Why this matters

This notebook contains the single most pedagogically unique idea in the repo — using Python as the anchor for C++ pointer semantics. As-is, it's a sketch of the bridge rather than the bridge itself. Completing it would make this the most powerful piece of the Ch 30 supplement-for-freshmen role discussed in 2026-05-20 session evaluation.

### Context
Tagged `freshman-audience` because completing this bridge is specifically what makes the chapter useful for post-Python freshmen (rather than the graduate audience the chapter was originally written for).

Beitragsleitfaden

Für dieses Repository ist kein Beitragsleitfaden indexiert

Rechercherichtung

Open 30.pointers-and-memory-management/20.python.list-reference.ipynb and run the existing Python examples, focusing on the predict-before-run prompts in cells 12 and 17 and the exercise in cell 24. Add the C++ bridge around cell 22, including the requested raw-pointer and vector examples, analogy table, copy terminology, and a final prediction exercise. Done means the notebook connects the Python observations to both C++ cases before the existing exercise.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
cpp, jupyter-notebook, python
Bereich
content, documentation
Issue-Typ
Feature
Schwierigkeit
3/5
Geschätzter Aufwand
1-3 Stunden
Aktivitätsstatus
Ruhig
Klarheit
Klar beschrieben
Anfängerfreundlichkeit
68/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.