kangwonlee / kangwonlee/2018pycpp

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

Abierto
#76 0 comentarios 0 reacciones 0 asignados Ver en GitHub
enhancement freshman-audience
Lenguaje dominante
Jupyter Notebook
Estrellas
3
Forks
1
Métricas de merge de PR
Sin PR fusionados en 30 d

Descripción

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

Guía de contribución

No hay ninguna guía de contribución indexada para este repositorio

Línea de trabajo

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.

Escrito por el modelo de indexación a partir del texto del issue.

Evaluación

Stack tecnológico
cpp, jupyter-notebook, python
Área
content, documentation
Tipo de issue
Nueva funcionalidad
Dificultad
3/5
Tiempo estimado
1-3 horas
Estado de actividad
Tranquilo
Claridad
Bien especificado
Aptitud para principiantes
68/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.