Skip to content

Rubrics ​

Scoring guides for every graded component. Each row is something a grader can see in your repo, on your live site or in your writing.

How to read these tables. Each rubric has criteria (rows) and four levels (columns). The number in bold is the points for that level.

LevelMeans
ExemplaryEverything asked for, done carefully, with clear evidence. Beyond what most students do
ProficientEverything asked for, done well. This is a good result
DevelopingStarted, but important parts are missing or unclear
MissingNot there

Graders pick the level that best fits each row. If a row falls between two levels, they use the lower one and say what would lift it. Weights and how points turn into your course grade are in the assessment README.

Rubric levels describe the work, not misconduct. If a piece of work seems to break the AI-use rules (for example, an AI-written SPEC.md or reflection) or seems fabricated, it is handled under Academic integrity, and no score is changed until the University process is complete.

The six skills you must show without AI (syllabus) aren't scored in these rubrics. They are a requirement of their own: each skill must be shown at least once in an oral walkthrough, a retake or a short follow-up, and showing all six is needed for a C or higher (letter grades). The weekly exit tickets are where you practice them.


Weekly labs and homework ​

20% of the course. Graded on effort and completion of the core tier, not on polish. The core items for each week are the deliverables checklist in that week's homework.md (week 1, 2, 3, 4, 6, 7). For weeks 6 and 7, the core items are the capstone's Milestone 1 and Milestone 2 rows, copied word for word.

Weeks 1, 2, 3, 4, 6 and 7 are each scored out of 10, and the lowest is dropped. Week 5 is scored once, with the AI micro-app rubric (20 points, which include the capstone pitch); it gets no separate weekly score. Week 8's work is graded in the capstone.

Some weekly deliverables are also parts of a project (for example, the week 1 page is the start of your home page). That's deliberate: the weekly score rewards doing the step on time, and the project rubric judges the finished result.

CriterionExemplaryProficientDevelopingMissing
Core tasks4 · Every core item on the checklist is done3 · All but one core item done2 · All but two done; 1 · about half done0 · Not submitted
Save points and log3 · Several small commits with messages that say what changed; PROMPTS.md updated with what you changed or checked yourself; AI-assisted commits carry an Assisted-by: line (from week 2)2 · Commits with clear messages; PROMPTS.md updated; from week 6, Assisted-by: lines on AI-assisted commits1 · One large commit, or PROMPTS.md not updated0 · No commits this week
Checked it, or documented the blocker3 · Wrote the "done when" check before asking for the code (from week 4, an automated test), tested the normal case and at least one edge case, and says what happened. If something didn't work: the exact error, what you tried, and what you'll try next2 · Tested the normal case, or described the blocker with the error message1 · "It doesn't work", with no detail0 · Nothing

A lab that didn't work, with a clear record of the error and what you tried, can still earn full marks. That's the point of effort grading.

Stretch tier: optional, and it never changes your score.


In-class work and participation ​

15% of the course (the syllabus calls this "In-class builds, exit tickets and participation"). There are 16 studios, two a week: Studio A — Learn & build and Studio B — Workshop. Each is scored out of 10, and your lowest two are dropped, so 140 points count. Timed builds such as Game in an Hour are graded on effort, not on whether you finish.

CriterionExemplaryProficientDevelopingMissing
Lab work4 · Works through the core parts, reaches the checkpoints or asks for help early, and helps a neighbor at least once3 · Works through the core parts and reaches most checkpoints1 · Present but mostly off-task, or leaves early without arrangement0 · Absent without arrangement
Peer explanation and share-out3 · Explains their own work to a peer (in a swap, show and tell or debrief) and asks a genuine question about the peer's2 · Takes part in the swap or share-out1 · Minimal part (listens only)0 · Doesn't take part
Checkpoint (Studio A) or exit ticket (Studio B, 🔴 AI off)3 · Studio A: shares the end-of-studio checkpoint (a live URL, screenshot or commit), or the exact blocker. Studio B: every exit-ticket question answered in your own words. Correctness does not affect this score2 · Shares where they got to, without the evidence; or all but one exit-ticket question answered1 · Present at the checkpoint but shares nothing; or only one or two exit-ticket questions answered0 · Absent; or no exit ticket

Missed a studio? The make-up rules follow U of I Regulations M-1 and M-3. For a recognized absence (official university activities, your own illness, family illness or care, other compelling circumstances, or religious observance), do the lab's core parts and, for a Studio B, the exit ticket on Canvas within one week, for full credit. Other absences: within 48 hours, for up to 7 of the 10 points.

No partner? With an odd number of students, or when your partner is away, explain your work to the instructor or a TA instead; that counts as the peer explanation. Online cohorts: "present" means camera or chat participation in the session, and swaps happen in breakout rooms.


Project 1 ​

10% of the course, 40 points. For the Project 1 brief. Whether the tool works is one row out of six. Most points are for the spec, the tests and your process.

CriterionExemplaryProficientDevelopingMissing
Spec (SPEC.md, 🟡 AI limited)10 · Specific problem and user; at least 5 acceptance criteria in WHEN … THE APP SHALL … form, every one checkable by using the tool; at least 2 edge cases; out-of-scope list; wireframe; a Goldfish test logged in PROMPTS.md (what a fresh chat, given only SPEC.md, asked or got wrong) and the revision it led to; updated to match the final tool8 · At least 5 criteria, nearly all checkable; at least 2 edge cases; out-of-scope list; wireframe; Goldfish test logged4 · Fewer than 5 criteria, or several can't be checked ("easy to use"), or fewer than 2 edge cases0 · No spec, or the unfilled template
Tests (TESTS.md, tests/)8 · A manual test for every criterion; at least 3 edge-case tests; every test has a dated result; at least one automated test (as in the week 4 worked example) passing with node --test, output pasted in TESTS.md; at least one bug found by testing and fixed (logged with its commit)6 · Tests for most criteria; at least 3 edge-case tests, with dated results; one automated test passing3 · Fewer than 3 edge-case tests, no results recorded, or no automated test0 · No TESTS.md
Works as specified6 · Live on GitHub Pages; every MUST criterion passes; data survives a reload; usable on a phone-width screen5 · Live; most MUST criteria pass, and the README says which don't2 · Live, but a core feature or the reload is broken and the README doesn't say so0 · No live URL
Plain code you own6 · Plain HTML, CSS and JavaScript; clear names; no dead code or placeholder comments ("rest of code here"); your hand-written week 4 feature is named in PROMPTS.md and you can point to it5 · Plain files; minor leftovers; your own feature named2 · Large unused chunks, confusing names, or your own feature not identified0 · Framework or build output instead of plain files, or code missing from the repo
Process (PROMPTS.md and commits)6 · Key prompts in Goal · Context · Constraints · Done when form; what the AI got wrong and how you noticed; teach-back notes on AI-written changes; what you wrote or decided yourself; at least 6 commits with clear messages5 · Several honest entries with what you changed; at least 6 commits2 · Prompts only, with no notes on what happened; or one or two giant commits0 · No PROMPTS.md
README4 · From the template: live URL, how to use, how it works, "Authorization is enforced in: n/a…", an acceptance table that matches the tool, an honest known-issues list, credits3 · Live URL, how to use, and an acceptance table1 · A few lines; no acceptance table0 · No README, or GitHub's default

AI micro-app ​

20 points: this is your week 5 score in the Weekly labs and homework component (double a normal week). Week 5 gets no other weekly score. For the AI micro-app brief; the last row covers the capstone pitch, week 5's other deliverable.

CriterionExemplaryProficientDevelopingMissing
Key stays on the server6 · Key only in .env (ignored by git) and Vercel settings; only server code (api/, lib/) reads it; npm run check:secrets output shown (it checks your files and your git history); DevTools check on the production site described; the hidden-costs checklist done5 · Key only on the server and not in git; checks done, evidence brief2 · Key safe, but no checks done or no evidence0 · A real key appears in the repo, its history, public/ or the live site. Revoke it, fix it and resubmit within a week (and before the grade deadline) for up to Proficient
Input limit and friendly errors3 · Own MAX_INPUT_LENGTH with a reason in PROMPTS.md; any new input also checked on the server; empty, too-long and missing-key cases each tried and showing a friendly message2 · Own limit; the server check still works; empty and too-long cases tried1 · Starter limits removed or bypassed, or raw errors shown to users0 · No limits and no friendly errors
Provider swap3 · Ran with two providers by changing only the three environment variables; PROMPTS.md names both, the models (from npm run models) and how the answers differed2 · Ran with two providers; logged in PROMPTS.md1 · Tried a second provider; the blocker is documented0 · Not attempted
Made it your own, and deployed3 · A new job (system prompt), new page text and styling; production URL and a screenshot of it working submitted; tried in a private window2 · New job; production URL and screenshot submitted1 · Starter barely changed, or runs only in the Codespace0 · Not submitted
Documentation and tests3 · "Where the key lives and who can read it" (🔴 AI off, your own words) answers all seven questions accurately; PROMPTS.md; npm test passes, including the validation test you completed from the fill-in skeleton2 · Section present and mostly accurate; npm test passes with your validation test1 · Section vague or missing; or no test of your own; or tests failing0 · None of these
Capstone pitch (🟡 AI limited)2 · On time on Canvas; every section of the pitch template specific, including a named user and a real plan B2 · On time; every section filled in1 · Late, or a section missing or vague0 · No pitch

The own friendly rate-limit (429) message is a stretch task this week, so it isn't scored here.


Capstone ​

30% of the course, 100 points. For the capstone brief.

IMPORTANT

A working demo is required but not sufficient. Without a production URL where the main user story works, the capstone is capped at 50/100 until it runs. Agree a fix date with your instructor; it must fall before the University grade deadline (otherwise an Incomplete may be agreed under Regulation F). A working demo on its own earns only the "Deployment" row and part of the "Feature types" row. Most points are for the spec, tests, security, process, documentation and code you can explain.

CriterionExemplaryProficientDevelopingMissing
Spec (SPEC.md, 🟡 AI limited)15 · Specific problem and user; at least 6 checkable WHEN … THE APP SHALL … criteria, including at least 2 edge cases and at least one per feature type; out-of-scope list; wireframe; a Goldfish test logged in PROMPTS.md and the revision it led to; updated to match the final app11 · At least 5 checkable criteria, including 2 edge cases; out-of-scope list; wireframe; Goldfish test logged6 · Fewer than 5 criteria, several not checkable, or no edge cases0 · Missing, or the unfilled template
Tests (TESTS.md, tests/)15 · At least 3 automated tests passing (output shown), at least one of them an edge case; at least 3 manual edge-case tests with dated results; every MUST criterion has a test; tests written before the code they check, in a separate prompt (check first), with at least one recorded failing before it passed11 · At least 3 automated tests passing; at least 3 manual edge-case tests with results6 · Fewer than 3 of either, results not recorded, or tests failing0 · No tests, or tests deleted or switched off to make them pass
Security checklist with evidence15 · Every applicable item ticked, each with real evidence (command output, file name, screenshot link); if there's a database, RLS on every table with explicit grants and policies kept in supabase/policies.sql, and your own attack with the publishable key failed; the "where authorization is enforced" sentence is accurate; the found-and-fixed table is filled in11 · Every applicable item ticked with evidence; minor gaps6 · Items ticked without evidence, or a key item untested (such as the RLS attack)0 · Missing. Also 0 if the grader finds a live secret, or a table that anyone can read or write beyond what SPEC.md and your README's "Authorization is enforced in" sentence say is intended (for example RLS off, or update or delete open to everyone). Fix it (revoke the key, add RLS and policies) and resubmit within a week, before the grade deadline, for up to Proficient
Deployment and working demo10 · Production URL works in a private window on phone and laptop, with a screenshot submitted; environment variables set on the host, none in code; GitHub release v1.0; passes the polish checklist's accessibility items (labels, alt text, keyboard use, contrast)8 · Production URL works and screenshot submitted; the main story works; one feature partly works and the README says so; release v1.04 · Live, but the main story is broken; or it runs only in the Codespace0 · No production URL (see the cap above)
Feature types10 · At least two feature types (pairs: three, or two plus the approved scope increase), each done the safe way (keys on the server; RLS on with policies; a chart drawn from the app's real data, with its data-prep function tested; external API errors and timeouts handled) and part of the main story8 · At least two (pairs: three, or two plus the approved increase) working; one is bolted on or lacks error handling4 · Only one feature type works0 · None
Process (PROMPTS.md, AGENTS.md, git)10 · A teach-back (2–3 sentences: what changed and why) in PROMPTS.md before every agent commit; an ownership statement ("What I wrote or decided myself") naming specific code, decisions and changes; plan-first prompts; what the agent got wrong and how you caught it; AGENTS.md tailored to this project, with a Scope section, and trial notes in PROMPTS.md (two tasks, whether the agent followed the file, one change you made); commits before and after agent tasks, with Assisted-by: lines; features merged through pull requests, each reviewed (by a partner, the instructor or a classmate, or a self-review against CODE_REVIEW.md template before merging)8 · Teach-backs on most agent commits; an ownership statement; AGENTS.md with Scope and trial notes; regular commits with Assisted-by: lines; features merged through pull requests4 · Few or no teach-backs, or a generic ownership statement; AGENTS.md unchanged or without Scope; a few giant commits. Pairs: no contribution statement on Canvas0 · No PROMPTS.md
README and demo video10 · A classmate could run the app from the README alone; production URL and screenshot; how-it-works table; where authorization is enforced; where each key lives; status table matches reality; an honest Known issues section (naming a real limitation never costs points); the tools you used and any fallback you switched to; credits; a 2–3 minute video showing the problem, the main story and one edge case, with captions or a transcript8 · README mostly complete, including Known issues; a video of about 2–3 minutes (up to 4 is fine) showing the main story4 · README missing how to run it or the status table; or the video is over 4 minutes or doesn't show the app working0 · Default README, or no video
Code you can explain15 · Logic in public/lib/ (or lib/ for server-only code) with tests; clear names and small functions; no dead code, placeholders or disabled tests; every dependency intentional and named in the README; user text shown with textContent; walkthrough 3 confirmed you could explain the parts you were asked about11 · Readable and organized as in the starter; minor leftovers; walkthrough 3 went mostly well6 · Large unexplained or unused chunks; unexplained dependencies; or walkthrough 3 showed you couldn't explain a core part (an "explain it or redo it" follow-up can lift this row)0 · Code you can't explain at all

Pairs: the same rubric, with the pair rules from the brief. In "Feature types", Proficient and Exemplary need three feature types, or two plus the scope increase approved at the pitch. Without a signed contribution statement on Canvas, "Process" is at most Developing.


Reflections and peer reviews ​

10% of the course. All of this is 🔴 AI off writing, submitted on Canvas (never in a repository). It's graded on specifics and honesty, not polish or grammar. The component is made of:

PartPointsShare of the component
Weekly reflections (template, 150–300 words) for weeks 1, 2, 3, 4, 6 and 7, out of 10 each, lowest dropped. Week 3's is the AI-free Verdict on your bake-off scorecard. Week 5 has none: the micro-app's "Where the key lives" section takes its place and is graded in the micro-app rubric5040%
Two written peer reviews, out of 10 each: the week 3 spec review and the week 7 code review2030%
Final capstone reflection (prompts), with your revised personal AI-use rules2030%

Component score = 10% × (0.4 × reflections ÷ 50 + 0.3 × peer reviews ÷ 20 + 0.3 × final ÷ 20).

Writing that appears to be AI-generated is handled under Academic integrity; no score is changed until the University process is complete.

Weekly reflection (10 points) ​

CriterionExemplaryProficientDevelopingMissing
Specific moments4 · Anchored in at least two concrete moments: a quoted prompt, an error message, a line of code, a decision (week 3: criterion IDs and what each builder did)3 · One concrete moment, described clearly1 · General statements only ("AI is helpful")0 · Not submitted
An idea in your own words3 · Explains one idea from the week correctly, as if to a friend, with an example2 · Explains an idea; mostly correct1 · Names an idea without explaining it0 · Nothing
Honesty about gaps3 · Names something still unclear, completes the confidence check, and compares the rating with the two-sentence explanation2 · Names something unclear and gives a rating1 · "Nothing is unclear", with no confidence check0 · Nothing

Peer review (10 points) ​

Both reviews are written on Canvas. Share yours with the author privately (a Canvas comment or email), never as an issue, pull-request comment or file in either repository, and refer to people by GitHub username.

  • Week 3 spec review: after the studio swap, write up your review of a classmate's SPEC.md: your prediction of what the app will do; every criterion that can't be tested (by ID) and why; one missing edge case; one strength; one question for the author.
  • Week 7 code review: use the headings of the CODE_REVIEW template. You may also leave ordinary comments on the author's pull request on GitHub; the graded review is the Canvas one.
  • No classmate available? Your instructor assigns a review of a practice spec or repo instead.
CriterionExemplaryProficientDevelopingMissing
Specific and located4 · Every point names where: an acceptance criterion ID, a file and line, a step on the live site3 · Most points are located1 · Mostly general comments ("looks good")0 · Not submitted
Accurate3 · Claims checked against the real spec or live app; any disagreement is phrased as a question2 · Mostly accurate1 · At least one claim that's clearly wrong (a problem that isn't there)0 · Largely wrong findings
Useful and kind3 · One real strength, the most important fix with a suggestion, and one question for the author2 · A strength and a fix1 · Only praise, or only criticism0 · Unkind or unusable

Invented problems cost points, as they do in UCSD's AI course, which penalizes reviews with made-up errors (UCSD).

Final capstone reflection (20 points) ​

CriterionExemplaryProficientDevelopingMissing
Specific moments6 · Several concrete moments across the course (a prompt, a commit, an error, a walkthrough question, an agent claim you checked)5 · Two or more concrete moments2 · Mostly general0 · Not submitted
Felt versus actual understanding6 · Compares what you felt you understood with what you could explain, in both directions (a time you couldn't explain something, and a time you could when you doubted it); refers to walkthrough 3 or your pre-course self-assessment5 · Compares felt and actual understanding, with one example2 · Mentions understanding without comparing0 · Missing
A habit that changed4 · Names one Safe Loop habit that changed how you work, with a moment that shows it; includes your revised personal AI-use rules with one rule you changed and why; advice for a friend starting the course3 · A habit, the revised rules and advice, without a concrete moment1 · Vague ("I learned a lot"), or no revised rules0 · Missing
Honest about AI use4 · Matches PROMPTS.md; clear about what the agent did and what you did3 · Mostly consistent with PROMPTS.md1 · Contradicts PROMPTS.md or the history0 · Missing

Materials CC BY 4.0 · Code MIT