Skip to content

Commit 9e22ae4

Browse files
committed
feat(assignments): add GitHub Classroom submodules with Colab badges
- Add 6 assignment template repos as submodules under assignments/ - Each notebook has 'Open in Colab' badge at top - Add AGENTS.md files for each submodule and assignments directory - Update root AGENTS.md with submodule documentation - Update GitHub Actions to checkout submodules recursively - Fix data file links in assignment pages to point to submodules - Remove legacy 'Assignment X: NAME' directories (content now in submodules) Submodules added: - eliza-llm-course - spam-classifier-llm-course - embeddings-llm-course - customer-service-bot-llm-course - gpt-llm-course - final-project-llm-course
1 parent b16b441 commit 9e22ae4

File tree

21 files changed

+118
-4239
lines changed

21 files changed

+118
-4239
lines changed

.github/workflows/build-pages.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ jobs:
2222
uses: actions/checkout@v4
2323
with:
2424
token: ${{ secrets.GITHUB_TOKEN }}
25+
submodules: recursive
2526

2627
- name: Setup Python
2728
uses: actions/setup-python@v5

.github/workflows/deploy-demos.yml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,8 @@ jobs:
3434
steps:
3535
- name: Checkout repository
3636
uses: actions/checkout@v4
37+
with:
38+
submodules: recursive
3739

3840
- name: Setup Node.js
3941
uses: actions/setup-node@v4
@@ -83,6 +85,12 @@ jobs:
8385
cp -r "$dir" _site/assignments/
8486
fi
8587
done
88+
# Copy assignment submodules (for data files like instructions.txt, training.zip)
89+
for dir in assignments/*-llm-course; do
90+
if [ -d "$dir" ]; then
91+
cp -r "$dir" _site/assignments/
92+
fi
93+
done
8694
cp -r figures/* _site/figures/
8795
cp -r fonts/* _site/fonts/
8896

AGENTS.md

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,11 +19,34 @@ llm-course/
1919
│ ├── week1-10/ # Each week symlinks to template_deck/themes/
2020
│ └── template_deck/ # Build engine (compile.sh, autoscale.js)
2121
├── tests/ # 1500+ tests, custom TestRunner (no framework)
22-
├── assignments/ # Jupyter notebooks for students
22+
├── assignments/ # Assignment web pages + GitHub Classroom submodules
23+
│ ├── assignment-X/ # Rendered HTML instruction pages
24+
│ └── *-llm-course/ # Submodules (template repos with notebooks)
2325
├── notes/ # Internal debugging logs (not student-facing)
2426
└── admin/ # Syllabus, fonts, compile scripts
2527
```
2628

29+
## SUBMODULES
30+
31+
Assignment template repositories are git submodules under `assignments/`:
32+
33+
| Submodule | Notebook | Data Files |
34+
|-----------|----------|------------|
35+
| `eliza-llm-course` | Assignment1_ELIZA.ipynb | instructions.txt |
36+
| `spam-classifier-llm-course` | Assignment2_SPAM_Classifier.ipynb | training.zip |
37+
| `embeddings-llm-course` | Assignment3_Wikipedia_Embeddings.ipynb | - |
38+
| `customer-service-bot-llm-course` | Assignment4_Customer_Service_Chatbot.ipynb | - |
39+
| `gpt-llm-course` | Assignment5_GPT.ipynb | - |
40+
| `final-project-llm-course` | FinalProject_Template.ipynb | - |
41+
42+
Each notebook has an "Open in Colab" badge. Students fork via GitHub Classroom, not direct clone.
43+
44+
**Submodule commands:**
45+
```bash
46+
git submodule update --init --recursive # Clone submodules after fresh clone
47+
git submodule update --remote # Pull latest from submodule remotes
48+
```
49+
2750
## WHERE TO LOOK
2851

2952
| Task | Location | Notes |

assignments/AGENTS.md

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
# ASSIGNMENTS KNOWLEDGE BASE
2+
3+
**Parent:** [llm-course](https://github.com/ContextLab/llm-course) (see root AGENTS.md)
4+
5+
## OVERVIEW
6+
7+
Course assignments for PSYC 51.17. Contains web instruction pages and GitHub Classroom template repositories as submodules.
8+
9+
## STRUCTURE
10+
11+
```
12+
assignments/
13+
├── index.html # Main assignments listing page
14+
├── assignment-1/ # ELIZA instructions (web page)
15+
├── assignment-2/ # SPAM Classifier instructions
16+
├── assignment-3/ # Wikipedia Embeddings instructions
17+
├── assignment-4/ # Customer Service Chatbot instructions
18+
├── assignment-5/ # Build GPT instructions
19+
├── final-project/ # Final Project instructions
20+
├── eliza-llm-course/ # [SUBMODULE] Template repo
21+
├── spam-classifier-llm-course/ # [SUBMODULE] Template repo
22+
├── embeddings-llm-course/ # [SUBMODULE] Template repo
23+
├── customer-service-bot-llm-course/ # [SUBMODULE] Template repo
24+
├── gpt-llm-course/ # [SUBMODULE] Template repo
25+
├── final-project-llm-course/ # [SUBMODULE] Template repo
26+
└── AGENTS.md # This file
27+
```
28+
29+
## TWO TYPES OF DIRECTORIES
30+
31+
| Type | Pattern | Contents | Purpose |
32+
|------|---------|----------|---------|
33+
| Web pages | `assignment-X/` | `index.html` | Detailed instructions rendered from markdown |
34+
| Submodules | `*-llm-course/` | Notebooks, data files | GitHub Classroom templates students fork |
35+
36+
## SUBMODULE DETAILS
37+
38+
Each submodule is a separate GitHub repo under `ContextLab/`:
39+
40+
| Submodule | Notebook | Data Files | Colab Badge |
41+
|-----------|----------|------------|-------------|
42+
| `eliza-llm-course` | Assignment1_ELIZA.ipynb | instructions.txt | Yes |
43+
| `spam-classifier-llm-course` | Assignment2_SPAM_Classifier.ipynb | training.zip | Yes |
44+
| `embeddings-llm-course` | Assignment3_Wikipedia_Embeddings.ipynb | - | Yes |
45+
| `customer-service-bot-llm-course` | Assignment4_Customer_Service_Chatbot.ipynb | - | Yes |
46+
| `gpt-llm-course` | Assignment5_GPT.ipynb | - | Yes |
47+
| `final-project-llm-course` | FinalProject_Template.ipynb | - | Yes |
48+
49+
## CONVENTIONS
50+
51+
- Web pages in `assignment-X/index.html` link to data files in submodules via `../eliza-llm-course/instructions.txt`
52+
- Each notebook has an "Open in Colab" badge at the top cell
53+
- Students fork via GitHub Classroom, not direct clone
54+
- Autograders are in private `ContextLabCourses/teaching-tools` repo
55+
56+
## COMMANDS
57+
58+
```bash
59+
git submodule update --init --recursive # Initialize submodules after clone
60+
git submodule update --remote # Pull latest from all submodules
61+
62+
# To commit changes in a submodule:
63+
cd assignments/eliza-llm-course
64+
git add . && git commit -m "message"
65+
git push
66+
cd ../..
67+
git add assignments/eliza-llm-course
68+
git commit -m "Update eliza-llm-course submodule"
69+
```
70+
71+
## ANTI-PATTERNS
72+
73+
- Don't commit solution code to template repos
74+
- Don't modify data file formats (breaks student code)
75+
- Don't forget to push both submodule AND parent repo after changes

0 commit comments

Comments
 (0)