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:
-
Writes the equivalent C++ programs — one with raw int** showing the aliasing bug parallel; one with std::vector<std::vector<double>> showing the safe modern equivalent.
-
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.
-
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<int> b = a; |
Deep copy |
a is b |
&a[0] == &b[0] |
Same memory? |
-
Connects to "shallow vs deep copy" as a named concept that bridges both languages.
-
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).
The notebook
30.pointers-and-memory-management/20.python.list-reference.ipynbsets up an excellent pedagogical hook: the Python[one_row] * n_rowaliasing 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):
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:
Writes the equivalent C++ programs — one with raw
int**showing the aliasing bug parallel; one withstd::vector<std::vector<double>>showing the safe modern equivalent.Translates the
is/id()mental model to C++ —Python a is bcorresponds toC++ &a == &bfor the aliasing case. Show this withcout << &matrix[0] << " == " << &matrix[1] << '\n';parallel.Names the analogy explicitly with a side-by-side table:
b = a(list)int *b = a;b = a.copy()std::vector<int> b = a;a is b&a[0] == &b[0]Connects to "shallow vs deep copy" as a named concept that bridges both languages.
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-audiencebecause 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).