Assessments¶
Grading overview¶
| Component | Points | % of Grade |
|---|---|---|
| Labs 1 to 8 (8 × 25) | 200 | 40% |
| Project Sprint 1: analysis, spec, and first version | 75 | 15% |
| Project Sprint 2: the finished system and final demo | 125 | 25% |
| Peer Code Review | 50 | 10% |
| Peer Product Testing | 50 | 10% |
| Total | 500 | 100% |
All assessments and due dates¶
| Assessment | Assigned | Due | Points |
|---|---|---|---|
| Lab 1: Ship Your First App | Tue, Nov 10 | Thu, Nov 12, start of class | 25 |
| Lab 2: Direct the Agent and Deploy | Thu, Nov 12 | Tue, Nov 17, start of class | 25 |
| Sprint 1 Plan | Tue, Nov 10 | Fri, Nov 13, 11:59 PM | (part of Sprint 1) |
| Lab 3: Requirements Elicitation | Tue, Nov 17 | Thu, Nov 19, start of class | 25 |
| Lab 4: Requirements to Spec to Build | Thu, Nov 19 | Tue, Nov 24, 11:59 PM | 25 |
| Sprint 1 Wrap-up | Mon, Nov 23, 11:59 PM | 75 | |
| Lab 5: Anatomy Teardown (online) | Tue, Nov 24 | Tue, Dec 1, start of class | 25 |
| Sprint 2 Plan | Tue, Nov 24 | Tue, Dec 1, start of class | (part of Sprint 2) |
| Lab 6: Model the Data | Tue, Dec 1 | Thu, Dec 3, start of class | 25 |
| Lab 7: Team Workflow | Thu, Dec 3 | Tue, Dec 8, start of class | 25 |
| Peer Code Review | Thu, Dec 3 | Mon, Dec 7, 11:59 PM | 50 |
| Lab 8: Add an AI Feature | Tue, Dec 8 | Thu, Dec 10, start of class | 25 |
| Final demo (part of Sprint 2) | Thu, Dec 10, in class | ||
| Peer Product Testing | Thu, Dec 10, in class | Fri, Dec 11, 11:59 PM | 50 |
| Sprint 2 Wrap-up | Fri, Dec 11, 11:59 PM | 125 |
Your course repo¶
All of your work lives in one private GitHub repository, your course repo, created in Lab 1 from the course starter template. It has a folder for each kind of work:
your-repo/
├── README.md ← your project context and "Where the work lives"
├── CLAUDE.md ← instructions Claude Code reads every session
├── .claude/skills/ ← /sprint-plan and /sprint-review
├── labs/ ← one folder per lab
├── sprints/ ← sprint plans and reviews
├── discovery/ ← interview notes (names removed) and synthesis
├── design/ ← flows, wireframes, usability test notes
├── specs/ ← user stories, acceptance criteria, feature specs
├── architecture/ ← diagrams and data model
└── app/ ← the code for your project (or a link to its own repo)
Add the instructor as a collaborator on the repo (Lab 1 shows you how). You submit by pasting a GitHub link into the matching Canvas assignment.
Labs¶
Eight labs, 25 points each. Each lab is started in class and finished on your own. The online session (Lab 5) is self-paced. Each lab page lists its steps and exactly what to turn in.
| Category | Points | What earns full points |
|---|---|---|
| Completed | 15 | Every required step is done and its deliverable is committed to labs/lab-N/ in your course repo |
| Working | 5 | The thing you built runs, and the evidence the lab asks for (a link, a screenshot, a test run) shows it |
| Reflection | 5 | The lab's reflection questions answered in your own words in labs/lab-N/reflection.md, specific to what happened to you |
Submit the link to your labs/lab-N/ folder on Canvas.
The project¶
Across the five weeks you build one small information system for a real user: a person or organization you can actually talk to. Good sources:
- A campus club or organization you belong to (dues, sign-ups, equipment checkout, event check-in)
- A Gonzaga office or department process that runs on spreadsheets and email
- A small business you or your family work for in Spokane or at home
- A process you live with every week: a job, a team, a household, a volunteer role
The system should have a few screens, store data that matters to its user, and have at least one place where an AI model could help. Keep it small. A system that does one job well for one person is a better project than one that does ten jobs badly.
You may work alone or, with the instructor's approval, in a pair. Pairs share one repo and one project, and each partner writes their own sprint review and retro.
The project runs as two sprints. Every sprint is the same assignment: plan, build, review, and demo. What changes is the goal.
How every sprint works¶
Two Claude Code skills run each sprint. Both are in the .claude/skills/ folder of your course repo.
Day one: plan. Run /sprint-plan. It asks you what you are going to do and writes
sprints/sprint-N-plan.md:
# Sprint N Plan
**Goal:** What will be true at the end of the sprint that is not true now?
**Why this:** Why is this the right next thing for your user?
**Done looks like:** How will you know the goal was met? Be specific enough
that someone else could check.
**Predicted difficulty:** 1 to 5.
Commit it, push it, and paste its GitHub link into that sprint's Plan assignment on Canvas. You
can change the plan during the sprint: run /sprint-plan again and it adds a dated note saying what
changed and why. A plan that changed with a note is fine. A plan that changed with no note is the
thing to avoid.
During the sprint: build. Do the work, in your repo. Commit often.
Last day: review and demo.
- Run
/sprint-review. It reads your plan and your commits and writes a short report insprints/sprint-N-review.md: what you did, when, and where you got stuck. - Answer its five retro questions in your own words:
- Did you hit the goal? Yes, partly, or no, and why.
- About how many hours did you spend on this sprint?
- If the plan changed, why?
- Actual difficulty, 1 to 5, and why it differed from your prediction.
- What will you change next sprint (or next project)?
- Record a demo on Loom (free with a student account) showing the work, working. Set it to "Anyone with the link."
- Submit your review link and your Loom link on Canvas.
The difficulty scale¶
| 1 | I already know how to do this |
| 2 | I know most of it, with a few small gaps to fill |
| 3 | I will have to learn something new, but the path is clear |
| 4 | I will have to learn a lot, and the path is not clear |
| 5 | I do not know whether this is possible |
Difficulty is not graded in either direction. Rate it honestly. Output is weighed by how hard the work actually was for you, so an ambitious goal you partly reach and account for in your retro can still earn full points.
Sprint 1¶
75 points | Assigned: Tue, Nov 10 | Plan due: Fri, Nov 13, 11:59 PM | Due: Mon, Nov 23, 11:59 PM
Goal of the sprint: pick a real user, find out what they actually need, write it down precisely, and ship a first version built from that spec.
Required output, in your course repo:
| Deliverable | Where | Comes from |
|---|---|---|
Project context in README.md: your user, their problem, and "Where the work lives" |
README.md |
Lab 1 |
| At least three interviews with real users or stakeholders, notes with names removed | discovery/ |
Lab 3 |
| Requirements summary: problem statement, job-to-be-done, persona, riskiest assumption, MVP scope | discovery/requirements.md |
Lab 3 |
| User stories with acceptance criteria, and a process flow diagram | specs/ and design/ |
Lab 4 |
| A spec for the first version | specs/v1-spec.md |
Lab 4 |
| A deployed first version, built from the spec, at a public URL | README link | Labs 2 and 4 |
| Category | Points | What earns full points |
|---|---|---|
| Plan | 10 | Submitted by Friday with Goal, Why this, Done looks like, and Predicted difficulty filled in. Graded for completion. |
| Output | 40 | Every deliverable above is present and is real work for a real user. The spec is specific enough that someone else could check the build against it, and the deployed version does what the spec says. |
| Review | 10 | Review committed with all five retro questions answered in your own words. |
| Demo | 15 | 2 to 3 minutes on Loom: who your user is, what you learned from them, and the deployed first version working. |
Sprint 2¶
125 points | Assigned: Tue, Nov 24 | Plan due: Tue, Dec 1, start of class | Final demo: Thu, Dec 10, in class | Due: Fri, Dec 11, 11:59 PM
Goal of the sprint: turn the first version into a real system: data that persists with access rules, a safe way to change it, and an AI feature that you have tested.
Required output:
| Deliverable | Where | Comes from |
|---|---|---|
| An architecture diagram of your own system | architecture/ |
Lab 5 |
| An entity-relationship diagram and a database (Supabase) with row level security on every table | architecture/ and your app |
Lab 6 |
| At least two merged pull requests and at least three automated tests that run on every push | GitHub | Lab 7 |
| One AI feature with a written evaluation of at least ten test cases | specs/ and your app |
Lab 8 |
| An updated spec for each feature you added | specs/ |
Labs 4 to 8 |
| The deployed system at a public URL | README link |
| Category | Points | What earns full points |
|---|---|---|
| Plan | 10 | Submitted by the start of class Tue, Dec 1, with all four fields filled in. Graded for completion. |
| Output | 70 | Every deliverable above is present, works, and is checkable. Weighed by how hard the work was for you. |
| Review | 15 | Review committed with all five retro questions answered in your own words, plus one paragraph on what you would do next if this system were going into production. |
| Final demo | 30 | A 3-minute live demo in class on Thu, Dec 10, following The Final Demo: the person and the problem, the moment it works, the evidence, and what you learned. Also submit a Loom recording of the same demo as a backup. |
Sprint 2 cannot be turned in late.
Confidential work¶
If your system is for an organization that does not want its data shared, use made-up data in your repo and say so in your README. Never commit real names, emails, phone numbers, student IDs, or passwords. Interview notes are committed with names removed, and recordings stay out of the repo.
Peer Assignments¶
Peer assignments teach you to give and receive useful feedback, a core professional skill for anyone who works on systems built by teams. You will be paired with a different classmate for each.
Peer Code Review¶
50 points | Assigned: Thu, Dec 3 | Due: Mon, Dec 7, 11:59 PM
Goal: read a classmate's codebase with an agent's help, run their system, and write a review that would help them improve it. Lab 7 practices the mechanics of a pull request review; this assignment applies them to a whole system.
Process:
- Your partner adds you as a collaborator on their course repo.
- Clone it, open it in VS Code, and start Claude Code inside it.
- Run the three analysis prompts below and save each output in your own repo under
peer-review/. - Run their deployed system as a real user.
- Write the review using the peer code review template.
Prompt 1: "Analyze this project structure. List all directories and their purposes,
identify frontend vs backend files, and count total lines of code.
Save as peer-review-structure.md"
Prompt 2: "Trace the main user flow from UI to database.
What happens when a user performs the core action?
Save as peer-review-dataflow.md"
Prompt 3: "Identify the architecture pattern, code organization,
and any potential security concerns or code smells.
Save as peer-review-architecture.md"
The written review covers architecture observations, code quality, security (check for secret keys in the code and tables without row level security), and three specific, actionable suggestions. Read the AI's output critically: confirm at least one of its claims yourself in the code, and say which.
Turn in: commit the completed template to peer-review/review.md in your repo, send your partner
the link, and submit the link on Canvas.
| Category | Points |
|---|---|
| AI analysis files complete, with at least one claim verified by hand | 15 |
| Written review professional, specific, and constructive | 20 |
| Testing notes with specific observations | 10 |
| Tone is helpful, not harsh | 5 |
Code review mindset
Your goal is to help your peer improve, not to criticize. Frame feedback as "Have you considered..." or "One thing that might help..." Good reviewers make others want to work with them.
Peer Product Testing¶
50 points | In class: Thu, Dec 10 | Due: Fri, Dec 11, 11:59 PM
Goal: be a real test user for a classmate's system and give feedback they can act on. This is the usability test from Testing the Design, run on a finished system.
In class, after demos, you will be paired with a classmate. Open their deployed URL and:
- Think out loud the entire time: what you see, what you expect, where you are confused.
- Try to complete the core task: sign up, use the main feature, check that your data is still there after a refresh.
- Try to break it: empty inputs, very long inputs, the back button, a second account.
Your partner watches and takes notes without helping. Then switch.
After class, record a 5-minute Loom of a second, solo pass through their system with think-aloud narration, ending with your summary:
- 3 things that worked well (be specific)
- 3 things you would improve, most important first
- Would the intended user use this system? Why or why not?
Submit the Loom link on Canvas and send it to your partner.
| Score | What the grader sees |
|---|---|
| 45 to 50 | Real time spent exploring the system. Think-aloud narration is specific and continuous. Summary feedback is actionable and constructive. |
| 35 to 44 | A good session, but narration is sparse or the summary is vague. |
| 25 to 34 | Surface-level: a quick walkthrough without much exploration. |
| 15 to 24 | Submitted, with minimal effort. |
| 0 | Not submitted. |
Testing mindset
Your job is to help your peer see their system the way a new user sees it. Be honest but kind. The best feedback is specific ("The Save button on the edit screen didn't respond when I clicked it"), not vague ("Saving was buggy").