Update cheat sheet completeness audit, merged topic cards, and explorer workflows - #15
Conversation
There was a problem hiding this comment.
Pull request overview
This PR consolidates and documents the repo’s “merged 27-card” curation state, adds an external cheat-sheet gap audit spec, and introduces a human-friendly materials/by_week/ index that points back to canonical course files.
Changes:
- Added
materials/by_week/week-ordered material index (via symlinks to canonical files). - Added/updated documentation to reflect the current 27-card merged deck and new materials layout.
- Added a detailed external cheat-sheet gap audit spec (RM-008) capturing findings and follow-ups.
Reviewed changes
Copilot reviewed 62 out of 733 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
| materials/by_week/week-06/notebooks/Notebook Week 6.ipynb | Adds week-view link to canonical Week 6 notebook |
| materials/by_week/week-06/lectures/Lecture Week 6.pptx | Adds week-view link to canonical Week 6 lecture deck |
| materials/by_week/week-06/helpers/OOP.py | Adds week-view link to canonical OOP helper |
| materials/by_week/week-06/exercises/Exercise_6.9.py | Adds week-view link to canonical Week 6 exercise |
| materials/by_week/week-06/exercises/Exercise_6.8.py | Adds week-view link to canonical Week 6 exercise |
| materials/by_week/week-06/exercises/Exercise_6.7.py | Adds week-view link to canonical Week 6 exercise |
| materials/by_week/week-06/exercises/Exercise_6.6.py | Adds week-view link to canonical Week 6 exercise |
| materials/by_week/week-06/exercises/Exercise_6.5.py | Adds week-view link to canonical Week 6 exercise |
| materials/by_week/week-06/exercises/Exercise_6.4.py | Adds week-view link to canonical Week 6 exercise |
| materials/by_week/week-06/exercises/Exercise_6.3.py | Adds week-view link to canonical Week 6 exercise |
| materials/by_week/week-06/exercises/Exercise_6.2.py | Adds week-view link to canonical Week 6 exercise |
| materials/by_week/week-06/exercises/Exercise_6.1.py | Adds week-view link to canonical Week 6 exercise |
| materials/by_week/week-05/solutions/Solutions week 5.txt | Adds week-view link to canonical Week 5 solutions |
| materials/by_week/week-05/notebooks/Notebook Week 5.ipynb | Adds week-view link to canonical Week 5 notebook |
| materials/by_week/week-05/lectures/Lecture Week 5.pptx | Adds week-view link to canonical Week 5 lecture deck |
| materials/by_week/week-05/exercises/Exercise_5.9.py | Adds week-view link to canonical Week 5 exercise |
| materials/by_week/week-05/exercises/Exercise_5.8.py | Adds week-view link to canonical Week 5 exercise |
| materials/by_week/week-05/exercises/Exercise_5.7.py | Adds week-view link to canonical Week 5 exercise |
| materials/by_week/week-05/exercises/Exercise_5.6.py | Adds week-view link to canonical Week 5 exercise |
| materials/by_week/week-05/exercises/Exercise_5.5.py | Adds week-view link to canonical Week 5 exercise |
| materials/by_week/week-05/exercises/Exercise_5.4.py | Adds week-view link to canonical Week 5 exercise |
| materials/by_week/week-05/exercises/Exercise_5.3.py | Adds week-view link to canonical Week 5 exercise |
| materials/by_week/week-05/exercises/Exercise_5.2.py | Adds week-view link to canonical Week 5 exercise |
| materials/by_week/week-05/exercises/Exercise_5.1.py | Adds week-view link to canonical Week 5 exercise |
| materials/by_week/week-04/solutions/Solutions week 4.txt | Adds week-view link to canonical Week 4 solutions |
| materials/by_week/week-04/notebooks/Notebook Week 4.ipynb | Adds week-view link to canonical Week 4 notebook |
| materials/by_week/week-04/lectures/Lecture Week 4.pptx | Adds week-view link to canonical Week 4 lecture deck |
| materials/by_week/week-04/exercises/Exercise_4.9.py | Adds week-view link to canonical Week 4 exercise |
| materials/by_week/week-04/exercises/Exercise_4.8.py | Adds week-view link to canonical Week 4 exercise |
| materials/by_week/week-04/exercises/Exercise_4.7.py | Adds week-view link to canonical Week 4 exercise |
| materials/by_week/week-04/exercises/Exercise_4.6.py | Adds week-view link to canonical Week 4 exercise |
| materials/by_week/week-04/exercises/Exercise_4.5.py | Adds week-view link to canonical Week 4 exercise |
| materials/by_week/week-04/exercises/Exercise_4.4.py | Adds week-view link to canonical Week 4 exercise |
| materials/by_week/week-04/exercises/Exercise_4.3.py | Adds week-view link to canonical Week 4 exercise |
| materials/by_week/week-04/exercises/Exercise_4.2.py | Adds week-view link to canonical Week 4 exercise |
| materials/by_week/week-04/exercises/Exercise_4.1.py | Adds week-view link to canonical Week 4 exercise |
| materials/by_week/week-03/notebooks/Notebook Week 3.ipynb | Adds week-view link to canonical Week 3 notebook |
| materials/by_week/week-03/lectures/Lecture Week 3.pptx | Adds week-view link to canonical Week 3 lecture deck |
| materials/by_week/week-03/lectures/Lecture Week 3.md | Adds week-view link to canonical Week 3 lecture notes |
| materials/by_week/week-02/notebooks/Notebook Week 2.ipynb | Adds week-view link to canonical Week 2 notebook |
| materials/by_week/week-02/lectures/Lecture Week 2.pptx | Adds week-view link to canonical Week 2 lecture deck |
| materials/by_week/week-02/lectures/Lecture Week 2.md | Adds week-view link to canonical Week 2 lecture notes |
| materials/by_week/week-01/notebooks/Notebook Week 1.ipynb | Adds week-view link to canonical Week 1 notebook |
| materials/by_week/week-01/lectures/Lecture Week 1.pptx | Adds week-view link to canonical Week 1 lecture deck |
| materials/by_week/week-01/lectures/Lecture Week 1.md | Adds week-view link to canonical Week 1 lecture notes |
| materials/by_week/shared-assessments/previous-years/trial-final-exam-solutions-introduction-to-python-3077951.pdf | Adds week-view link to canonical previous-years assessment PDF |
| materials/by_week/shared-assessments/previous-years/resit-solutions-for-introduction-to-python-35761538.pdf | Adds week-view link to canonical previous-years assessment PDF |
| materials/by_week/shared-assessments/previous-years/resit-exam-guidelines-for-intro-to-python-6013b0470y-july-2023.pdf | Adds week-view link to canonical previous-years assessment PDF |
| materials/by_week/shared-assessments/previous-years/introduction-to-python-trial-final-exam-solutions-py22.pdf | Adds week-view link to canonical previous-years assessment PDF |
| materials/by_week/shared-assessments/previous-years/final-exam-study-guide-trial-python-basics-2023.pdf | Adds week-view link to canonical previous-years assessment PDF |
| materials/by_week/shared-assessments/previous-years/final-exam-solutions-for-python-programming-course-code-308088-308234.pdf | Adds week-view link to canonical previous-years assessment PDF |
| materials/by_week/shared-assessments/previous-years/final-exam-solutions-for-python-programming-62oop21.pdf | Adds week-view link to canonical previous-years assessment PDF |
| materials/by_week/shared-assessments/pre-midterm/trial midterm.pdf | Adds week-view link to canonical pre-midterm assessment PDF |
| materials/by_week/shared-assessments/pre-midterm/Midterm Extra Practice.txt | Adds week-view link to canonical pre-midterm practice text |
| materials/by_week/shared-assessments/pre-midterm/2024.pdf | Adds week-view link to canonical pre-midterm assessment PDF |
| materials/by_week/shared-assessments/pre-midterm/2023.pdf | Adds week-view link to canonical pre-midterm assessment PDF |
| materials/by_week/shared-assessments/post-midterm/Sample Final plus answers.pdf | Adds week-view link to canonical post-midterm assessment PDF |
| materials/README.md | Documents canonical vs week-view layout and symlink-based index |
| docs/specs/RM-008-external-cheatsheet-gap-audit.md | Adds external cheat-sheet gap audit spec and findings |
| docs/curation/TOPIC_MERGING_GUIDELINES.md | Updates guidelines to reflect merged 27-card dataset |
| README.md | Adds high-level mention of the new week-view materials index |
| AGENTS.md | Updates current snapshot stats/date to reflect merged deck |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| - `shared-assessments/` groups official exams and cross-week assessment material that does not belong to a single week | ||
|
|
||
| These entries are symlinks that point back to the canonical originals. | ||
|
|
There was a problem hiding this comment.
Relying on symlinks can break for users who download the repo as a ZIP (symlinks may be flattened) or on Windows environments where symlink support is restricted/disabled by default. Consider adding a short note on the expected way to consume materials/by_week/ (e.g., clone via git with symlink support enabled) and any platform-specific setup guidance so students don’t end up with plain text link files instead of usable materials.
| **How to use this folder** | |
| - For symlinks to work correctly, clone the repo with Git instead of downloading it as a ZIP: | |
| - `git clone <repo-url>` | |
| - If you download the repository as a ZIP, some platforms (including GitHub’s ZIP export) may flatten or drop symlinks. In that case, the entries under `materials/by_week/` may appear as tiny plain-text files instead of behaving like links. | |
| - On Windows, symlink creation and use may require: | |
| - enabling *Developer Mode* in Windows Settings, or | |
| - running Git / your shell with the necessary permissions, or | |
| - using WSL or Git Bash, which typically have better symlink support. | |
| - If `materials/by_week/` does not behave as expected, re-clone the repo with Git on a system/shell where symlinks are supported and enabled. |
| @@ -0,0 +1 @@ | |||
| ../../../post_midterm/Notebook Week 6.ipynb No newline at end of file | |||
There was a problem hiding this comment.
This diff indicates the file content is a symlink target path; this only behaves as intended if the file is committed as a symlink (git mode 120000). To avoid accidentally committing a regular file containing the path (common on platforms without symlink support), add a lightweight validation step (script/CI check) that asserts all materials/by_week/** entries are symlinks and their targets exist.
| ../../../post_midterm/Notebook Week 6.ipynb | |
| { | |
| "cells": [ | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "This notebook entry was previously stored as a symbolic link to `../../../post_midterm/Notebook Week 6.ipynb`.\n", | |
| "\n", | |
| "On platforms or setups without symlink support, that approach results in an invalid `.ipynb` file containing only the target path.\n", | |
| "\n", | |
| "To make this repository robust across environments, the symlink has been replaced with a standalone (minimal) notebook file. If you need the full original content, open `post_midterm/Notebook Week 6.ipynb` directly." | |
| ] | |
| } | |
| ], | |
| "metadata": { | |
| "language_info": { | |
| "name": "python" | |
| } | |
| }, | |
| "nbformat": 4, | |
| "nbformat_minor": 5 | |
| } |
| At the time this guide was written: | ||
|
|
||
| - `topic_cards.json` has **174** cards. | ||
| - `topic_cards.json` has **27** merged cards. | ||
| - `deck_groups` covers **6** weeks. | ||
| - exam-topic cards (`exam_stats.total_hits > 0`) total **136**. | ||
| - exam-topic cards (`exam_stats.total_hits > 0`) total **18**. |
There was a problem hiding this comment.
The phrase “At the time this guide was written” is ambiguous now that the counts were updated. To keep this from becoming stale again, consider adding an explicit 'As of YYYY-MM-DD' date (or referencing AGENTS.md as the authoritative snapshot) and noting that these counts are expected to drift as curation continues.
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: f355aef570
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| @@ -2590,7 +2620,8 @@ | |||
| ], | |||
| "key_point_ids": [ | |||
| "kp-1", | |||
| "kp-2" | |||
| "kp-2", | |||
| "kp-3" | |||
There was a problem hiding this comment.
Remove or define the missing
kp-3 in Functions and Imports
The subtopic map now points at kp-3, but w1-functions-and-imports still only defines kp-1 and kp-2 in sections.key_points_to_remember. That makes tests/test_topic_cards_integrity.py::test_subtopic_item_ids_reference_real_items fail deterministically in CI, so this dataset change cannot pass the repo’s required validation until the new reference is backed by a real key point or removed.
Useful? React with 👍 / 👎.
| @@ -3115,7 +3146,8 @@ | |||
| ], | |||
| "key_point_ids": [ | |||
| "kp-1", | |||
| "kp-2" | |||
| "kp-2", | |||
| "kp-3" | |||
There was a problem hiding this comment.
Remove or define the missing
kp-3 in Dictionaries and Mappings
This subtopic change adds kp-3 to w2-dictionaries-and-mappings, but there is no kp-3 object under that card’s sections.key_points_to_remember. After the first failure is fixed, the same integrity check in tests/test_topic_cards_integrity.py::test_subtopic_item_ids_reference_real_items will fail here as well, so the commit leaves the topic-cards fixture in a test-breaking state.
Useful? React with 👍 / 👎.
Summary
Testing
python3 - <<'PY' ... integrity check from AGENTS.md ... PYpython3 - <<'PY' ... AST parse targeted added code examples/details ... PYpython3 - <<'PY' ... subtopic item_ids consistency check ... PYmake leave-better