-
Notifications
You must be signed in to change notification settings - Fork 0
Update cheat sheet completeness audit, merged topic cards, and explorer workflows #15
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
b5fc8b4
f355aef
8b2d64a
c2bafaf
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Large diffs are not rendered by default.
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,39 @@ | ||
| # Materials Layout | ||
|
|
||
| This folder now has two layers: | ||
|
|
||
| - the original canonical source paths used by the data pipeline and live dataset | ||
| - a non-breaking organized index under `materials/by_week/` | ||
|
|
||
| ## Canonical Source Paths | ||
|
|
||
| The canonical files stay where they were so existing references in `data/study_db.json`, `topic_cards.json`, scripts, and tests do not break. | ||
|
|
||
| Examples: | ||
|
|
||
| - `materials/lectures/` | ||
| - `materials/notebooks/` | ||
| - `materials/post_midterm/` | ||
| - `materials/exams/` | ||
|
|
||
| ## Organized Week View | ||
|
|
||
| Use `materials/by_week/` when you want a cleaner human-facing overview of the official course files. | ||
|
|
||
| - `week-01` through `week-06` group lecture, notebook, exercise, solution, and helper files by week | ||
| - `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. | ||
|
|
||
| ## How to Use This Folder | ||
|
|
||
| - Clone the repo with Git when you want `materials/by_week/` to behave like a link index. | ||
| - Avoid relying on ZIP downloads for this view. ZIP exports may flatten or drop symlinks, which can leave tiny plain-text files instead of working links. | ||
| - On Windows, symlink support may require Developer Mode, an elevated shell, WSL, or a Git/shell setup with symlink support enabled. | ||
| - If an entry under `materials/by_week/` opens as a short path string instead of the expected file, re-clone the repo with Git in an environment with symlink support. | ||
|
|
||
| ## Notes | ||
|
|
||
| - Week 4-6 lecture decks also exist under `materials/lectures/`, but the organized view points to the `materials/post_midterm/` copies because those are the paths used by the live dataset. | ||
| - `OOP.py` is grouped under `week-06` because the repo already classifies it as week 6 material. | ||
| - External comparison PDFs stay in `materials/example_cheat_sheets/` and are not part of the official week index. | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1 @@ | ||
| ../../../post_midterm/Sample Final plus answers.pdf |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1 @@ | ||
| ../../../exams/2023.pdf |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1 @@ | ||
| ../../../exams/2024.pdf |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1 @@ | ||
| ../../../exams/Midterm Extra Practice.txt |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1 @@ | ||
| ../../../exams/trial midterm.pdf |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1 @@ | ||
| ../../../post_midterm/practice_exams_previous_years/final-exam-solutions-for-python-programming-62oop21.pdf |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1 @@ | ||
| ../../../post_midterm/practice_exams_previous_years/final-exam-solutions-for-python-programming-course-code-308088-308234.pdf |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1 @@ | ||
| ../../../post_midterm/practice_exams_previous_years/final-exam-study-guide-trial-python-basics-2023.pdf |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1 @@ | ||
| ../../../post_midterm/practice_exams_previous_years/introduction-to-python-trial-final-exam-solutions-py22.pdf |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1 @@ | ||
| ../../../post_midterm/practice_exams_previous_years/resit-exam-guidelines-for-intro-to-python-6013b0470y-july-2023.pdf |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1 @@ | ||
| ../../../post_midterm/practice_exams_previous_years/resit-solutions-for-introduction-to-python-35761538.pdf |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1 @@ | ||
| ../../../post_midterm/practice_exams_previous_years/trial-final-exam-solutions-introduction-to-python-3077951.pdf |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1 @@ | ||
| ../../../lectures/Lecture Week 1.md |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1 @@ | ||
| ../../../lectures/Lecture Week 1.pptx |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1 @@ | ||
| ../../../notebooks/Notebook Week 1.ipynb |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1 @@ | ||
| ../../../lectures/Lecture Week 2.md |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1 @@ | ||
| ../../../lectures/Lecture Week 2.pptx |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1 @@ | ||
| ../../../notebooks/Notebook Week 2.ipynb |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1 @@ | ||
| ../../../lectures/Lecture Week 3.md |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1 @@ | ||
| ../../../lectures/Lecture Week 3.pptx |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1 @@ | ||
| ../../../notebooks/Notebook Week 3.ipynb |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1 @@ | ||
| ../../../post_midterm/Exercise_4.1.py |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1 @@ | ||
| ../../../post_midterm/Exercise_4.2.py |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1 @@ | ||
| ../../../post_midterm/Exercise_4.3.py |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1 @@ | ||
| ../../../post_midterm/Exercise_4.4.py |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1 @@ | ||
| ../../../post_midterm/Exercise_4.5.py |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1 @@ | ||
| ../../../post_midterm/Exercise_4.6.py |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1 @@ | ||
| ../../../post_midterm/Exercise_4.7.py |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1 @@ | ||
| ../../../post_midterm/Exercise_4.8.py |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1 @@ | ||
| ../../../post_midterm/Exercise_4.9.py |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1 @@ | ||
| ../../../post_midterm/Lecture Week 4.pptx |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1 @@ | ||
| ../../../post_midterm/Notebook Week 4.ipynb |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1 @@ | ||
| ../../../post_midterm/Solutions week 4.txt |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1 @@ | ||
| ../../../post_midterm/Exercise_5.1.py |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1 @@ | ||
| ../../../post_midterm/Exercise_5.2.py |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1 @@ | ||
| ../../../post_midterm/Exercise_5.3.py |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1 @@ | ||
| ../../../post_midterm/Exercise_5.4.py |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1 @@ | ||
| ../../../post_midterm/Exercise_5.5.py |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1 @@ | ||
| ../../../post_midterm/Exercise_5.6.py |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1 @@ | ||
| ../../../post_midterm/Exercise_5.7.py |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1 @@ | ||
| ../../../post_midterm/Exercise_5.8.py |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1 @@ | ||
| ../../../post_midterm/Exercise_5.9.py |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1 @@ | ||
| ../../../post_midterm/Lecture Week 5.pptx |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1 @@ | ||
| ../../../post_midterm/Notebook Week 5.ipynb |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1 @@ | ||
| ../../../post_midterm/Solutions week 5.txt |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1 @@ | ||
| ../../../post_midterm/Exercise_6.1.py |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1 @@ | ||
| ../../../post_midterm/Exercise_6.2.py |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1 @@ | ||
| ../../../post_midterm/Exercise_6.3.py |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1 @@ | ||
| ../../../post_midterm/Exercise_6.4.py |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1 @@ | ||
| ../../../post_midterm/Exercise_6.5.py |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1 @@ | ||
| ../../../post_midterm/Exercise_6.6.py |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1 @@ | ||
| ../../../post_midterm/Exercise_6.7.py |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1 @@ | ||
| ../../../post_midterm/Exercise_6.8.py |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1 @@ | ||
| ../../../post_midterm/Exercise_6.9.py |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1 @@ | ||
| ../../../post_midterm/OOP.py |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1 @@ | ||
| ../../../post_midterm/Lecture Week 6.pptx |
| Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| @@ -0,0 +1 @@ | ||||||||||||||||||||||||||||||||||||||||||||||||
| ../../../post_midterm/Notebook Week 6.ipynb | ||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||
| ../../../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 | |
| } |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,30 @@ | ||
| from pathlib import Path | ||
| import os | ||
| import unittest | ||
|
|
||
|
|
||
| class MaterialsByWeekSymlinkTests(unittest.TestCase): | ||
| @classmethod | ||
| def setUpClass(cls) -> None: | ||
| cls.root = Path(__file__).resolve().parents[1] | ||
| cls.by_week = cls.root / "materials" / "by_week" | ||
|
|
||
| def test_by_week_leaf_entries_are_symlinks_with_existing_targets(self) -> None: | ||
| entries = [] | ||
| for path in self.by_week.rglob("*"): | ||
| if path.name.startswith("."): | ||
| continue | ||
| if path.is_dir() and not path.is_symlink(): | ||
| continue | ||
| entries.append(path) | ||
|
|
||
| self.assertGreater(len(entries), 0, "Expected materials/by_week to contain linked material entries") | ||
|
|
||
| for entry in entries: | ||
| self.assertTrue(entry.is_symlink(), f"{entry}: expected by_week entry to be a symlink") | ||
| target = (entry.parent / os.readlink(entry)).resolve() | ||
| self.assertTrue(target.exists(), f"{entry}: symlink target does not exist: {target}") | ||
|
|
||
|
|
||
| if __name__ == "__main__": | ||
| unittest.main() |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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.