How to Use the Lab
This page is the operating manual. The README covers one-time installation; this page covers the daily loop.
The daily loop (local application)
- Launch:
practice-lab start(or the Desktop shortcut created byscripts/make_shortcut.ps1). The dashboard opens in your browser at a 127.0.0.1 address — due reviews, in-progress work, weak areas, and every practice as a card. - Pick: click a due card (or Random), press Start / Re-practice. A fresh attempt folder is created — earlier attempts are never touched — and the working file opens in VS Code at the first TODO.
- Work in the attempt file; the canonical prompt with collapsed hints and solution is right next to it.
- Finish session: back in the dashboard, record rating (again/hard/good/easy), independence, hints used, confidence, time, the main mistake and lesson. The review schedule and dashboard update immediately.
- Add questions with the + Add question button — Quick Add needs only a title, the problem text, topics, and languages; the Advanced section takes starter code, official solutions, tests, and attachments. No terminal, no manual
_quarto.ymlediting.
The same loop from the terminal (still supported)
Pick a practice:
python tools/review.py due # what's scheduled for today python tools/review.py random # or surprise meOpen the practice page in Positron (or VS Code with the Quarto extension):
practices/<id>-<slug>/python.qmdorr.qmd. Read the problem statement, learning objectives, and the before-coding checklist.Work in the “My attempt” section. The attempt cells are ordinary executable Quarto cells — put your cursor in a cell and press
Ctrl+Shift+Enter(Windows) /Cmd+Shift+Enter(Mac) to run it. Nothing in the attempt section is graded or overwritten.Stuck? Open Hint 1. Still stuck? Hint 2. The hints escalate from a nudge to a near-spoiler. Only then open the complete solution and its explanation.
Check yourself with the review questions at the bottom — answers are collapsed, so answer out loud (or on paper) first.
Record the session:
python tools/review.py complete <id> --rating goodRatings:
again(couldn’t do it),hard,good,easy. The Review Queue page documents exactly how each rating schedules the next review.
Creating a new practice
python tools/new_practice.py --title "Train-validation-test split" `
--topics machine-learning,validation --languages python,r --difficulty 2The generator assigns the next sequential id, creates the folder from the templates, validates the metadata, rebuilds the dashboard data, and prints exactly which files to edit next. New practices appear in the site navigation automatically - no configuration files to edit.
Write the official solution as a plain script in the practice’s solutions/ folder and give it a test in tests/ — the check suite then proves forever that your solution still runs.
Running official solutions
Solutions are plain scripts, not notebook state — run them from the repository root:
python practices/<id>-<slug>/solutions/solution.py
Rscript practices/<id>-<slug>/solutions/solution.RPreviewing the site
scripts/preview.ps1 # rebuilds dashboard data, then quarto previewQuarto watches for changes and reloads the browser. Full-text search (the magnifying glass in the navbar) works in the preview and on any published copy.
Keeping your records private
Everything already stays on your machine unless you publish it. If you do publish your copy (GitHub Pages), two extra options:
- keep personal notes out of the
## Personal reflectionsections, or - add
progress/progress.ymlto.gitignore— the review CLI works identically; your review history simply never leaves your computer.