Hacktoberfest 2026: the issues maintainers tagged for October, open and beginner-friendly. Browse Hacktoberfest issues

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

Open
#76 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
3/5
Estimated time
1-3 hours
Newbie friendliness
68/100
Issue type
Feature
Clarity
Clearly specified
Activity status
Quiet
Tech stack
cpp, jupyter-notebook, python

Research direction

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.

Written by the indexing model from the issue text.

Description

enhancement freshman-audience

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).

Dominant language
Jupyter Notebook
Stars
3
Forks
1
PR merge metrics
No merged PRs in 30d

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from kangwonlee/2018pycpp

All issues in kangwonlee/2018pycpp

Similar issues

More Content issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.