Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

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

Open
Labels
enhancementNew feature or request freshman-audienceRe-pitch for first-time programmers (translation, simpler examples, gentler register)

Description

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<std::vector<double>> 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<int> 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).

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request freshman-audienceRe-pitch for first-time programmers (translation, simpler examples, gentler register)

    Projects

    No projects

    Milestone

    No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions

        AltStyle によって変換されたページ (->オリジナル) /