Expert assistant for building and managing Applied Cryptography course materials with LaTeX, Canvas LMS integration, and pedagogical content authoring
Expert assistant for the Applied Cryptography course repository (OpenSecEd/appliedcrypto). Helps build lecture materials, sync with Canvas LMS, manage quizzes, and maintain pedagogical content using variation theory and question-based learning.
The repository is migrating from standalone topic modules to Canvas LMS-integrated weekly modules under `modules/`.
**Weekly Modules** (primary structure):
**Legacy Topic Modules** (being migrated):
**Supporting Directories**:
**Git Submodules**:
1. Initialize submodules before first build:
```bash
git submodule update --recursive --init
```
Weekly modules sync with Canvas using the `canvaslms` CLI tool.
Set in each week's Makefile:
```makefile
COURSE ?= tilkry26 # Target course for push
PULL_COURSE ?= tilkry25 # Source course for pull
COURSE_DIR ?= $(HOME)/public_html/tilkry
MODULE ?= Week 1 (calendar week 3)
MODULE_RE ?= Week 1 # Regex for module matching
```
**Pull from Canvas** (from weekly module directory):
**Push to Canvas**:
**Force Push** (ignores timestamps):
```bash
cd modules/week-2
make pull-pages
make pull-assignments
make push-pages
make push-assignments
make push-quizzes-questions
```
```
week-1/
├── Makefile # Defines PAGES, ASSIGNMENTS, QUIZZES, SLIDES
├── lecture-intro.html # Canvas page content
├── lecture-ciphers.html
├── INL1Quiz-ciphers.json # Quiz with questions
├── assignments/ # Assignment markdown files
│ └── hac-ch6-stream-ciphers.md
├── lecture-intro/ # Lecture content module
│ ├── contents.tex
│ ├── slides.tex
│ └── notes.tex
└── lecture-ciphers/
└── ...
```
```
lecture-intro/
├── Makefile # Module-specific build rules
├── contents.tex # Main content (input by slides/notes)
├── slides.tex # Beamer presentation entry point
├── notes.tex # Article-format notes entry point
├── abstract.tex # Module summary
├── preamble.tex # LaTeX preamble customizations
├── figs/ # Figures and diagrams
└── ltxobj/ # Build output directory
```
**Dual Output**: The same `contents.tex` generates both:
```
shared-key/
├── Makefile
├── contents.tex
├── shared-key-slides.tex # Named after module
├── abstract.tex
├── README.md
└── video.md
```
Use format: `INL1Quiz-<topic>.json` (e.g., `INL1Quiz-ciphers.json`)
```bash
canvaslms quizzes export -Ic "${COURSE}" -a "^INL1Quiz Ciphers$" > INL1Quiz-ciphers.json
```
**Metadata only**:
```bash
canvaslms quizzes edit -c "${COURSE}" -f "INL1Quiz-ciphers.json"
```
**With questions** (replaces all questions):
```bash
canvaslms quizzes edit -c "${COURSE}" -f "INL1Quiz-ciphers.json" --replace-items
```
1. Break lines at 80 columns
2. Lines continuing to next line should end with whitespace before the break
3. Put different sections in separate files and use `\input` from `contents.tex`
4. Use `\ltnote{}` for pedagogical reasoning (kept separate from student content)
This course uses **variation theory of learning** and **pure question-based learning (pQBL)**.
The `didactic` package provides semantic environments that are color-coded in Beamer:
1. Create directory: `modules/week-X/`
2. Copy Makefile template and set COURSE, MODULE, MODULE_RE variables
3. Create lecture subdirectories: `lecture-<topic>/`
4. Add Canvas pages: `lecture-<topic>.html`
5. Add assignments to `assignments/` directory
6. Create quizzes: `INL1Quiz-<topic>.json`
1. Create lecture directory in week folder: `modules/week-X/lecture-<topic>/`
2. Create required files:
- `Makefile` - Build rules
- `contents.tex` - Main content
- `slides.tex` - Beamer presentation entry
- `notes.tex` - Article notes entry
- `abstract.tex` - Summary
3. Build with `make slides.pdf` or `make notes.pdf`
1. Identify content in legacy topic modules (`intro/`, `shared-key/`, `sidechannels/`)
2. Reorganize into appropriate weekly module structure
3. Update Canvas integration in weekly Makefile
4. Test build and Canvas sync
Leave a review
No reviews yet. Be the first to review this skill!
# Download SKILL.md from killerskills.ai/api/skills/applied-cryptography-learning-module-assistant/raw