CCE 2026 · Live examples

AI Agents in VS Code for Academic Work

From prompting to workflows. Four real tasks, each with the problem, the files, the prompt, the plan, and the result.

ProblemFilesPromptPlanApproveOutcome

Setup

Get from an empty window to a working agent, then learn the one habit every example uses: plan first, approve, then act.

Slide 22Setup checklist
Slide 233. The Task
Slide 24Tip

Do it now in VS Code

  1. Open a new window. File > New Window.
  2. Install the GitHub Copilot extension. Open the Extensions view (Ctrl+Shift+X), search for GitHub Copilot, and install it. Sign in to GitHub when asked.
  3. Open a folder. File > Open Folder, then pick the folder that holds your course files. Here it is LIVE-DEMO.
  4. Save it as a workspace. File > Save Workspace As. Ours is 0-start-here/LIVE-DEMO.code-workspace.
  5. Open Copilot Chat and pick a model. Ctrl+Alt+I opens the chat. Choose Ask, Plan, or Agent, then a model.

Add extensions as needed: Python, Markdown tools, database tools. Extensions are apps for VS Code. Copilot is one of them.

New slide · Setup, optional

Add more agents and models

Models: the brain

  1. Included. Click the model name in the chat box and pick another. Nothing to install.
  2. Another provider. Model picker > Manage Language Models > Add Models. Enter that provider's API key. You pay that provider.
  3. Local. Install Ollama and its VS Code extension. Your text stays on your machine.

Agent mode needs a model that supports tool calling.

Agents: the workers

  • Add other agents from the Extensions view: Claude (Anthropic), Codex (OpenAI), and other AI extensions.
  • Most read AGENTS.md too. Claude also reads CLAUDE.md.
  • Same workflow, different brain: plan, approve, execute, review.
Slide 25Copilot - Ask, Plan, Agent

How every example runs

1

Plan

The agent inspects the files and proposes concrete steps. Nothing changes yet. Every prompt here says STOP and wait for approval.

2

Approve

You read the plan. Approve it, or ask for a revision and get a new plan. The page has a Copy approval button for each one.

3

Execute

In Agent mode it carries out the approved work. Read the actual permission requests: a mode's label is not an approval policy.

4

Review

Read the changed files and the diff. Check the output. Ask for a report. Accept, revise, or restore a checkpoint.

Slide 26Goal + Context + Constraints
Slide 27How I built this talk
Slide 28Project context

The examples

Each example reads top to bottom: Problem, Files, Prompt, Plan, Outcome.

1

Update the syllabus for Spring 2027

Same prompt, two agents: Claude and Gemini.

1Problem

Every semester I rebuild the syllabus by hand. New term, new lecture section, seven lab sections with new rooms, and a schedule where every date moves. One wrong date or grading weight reaches every student.

The task: turn the Fall 2026 Word syllabus into Spring 2027 from the official calendar and the section schedule, and keep every policy and grading weight.

2Files

  • DOCX
    BITM330-Fall-2026.docxThe old syllabus (input)
    Open in Drive
  • HTML
    spring-2027-schedule.htmlLecture section, time, and room
    Open in Drive
  • TXT
    bitm330-schedule.txtThe seven lab sections
    Open in Drive
  • WEB
    UAlbany Spring 2027 academic calendarThe official dates
  • WEB
    Published Fall 2026 syllabusThe same syllabus as a web page

3Prompt

I gave this same prompt to Claude and to Gemini. Gemini's copy only points its output to output\gemini. Gemini's prompt in Drive

Complete prompt
GoalWhat I want and the role
I want to update my BITM 330 Fall 2026 syllabus for Spring 2027. Act as my teaching assistant.
ContextWhere to work and what to read
Work in this folder: G:\My Drive\0-Projects\!-important\data-book\publishing\Cengage\cce-2026\LIVE-DEMO\2-syllabus Read these actual source files in full: 1. Old syllabus: G:\My Drive\0-Projects\!-important\data-book\publishing\Cengage\cce-2026\LIVE-DEMO\2-syllabus\input\BITM330-Fall-2026.docx 2. Lecture schedule: G:\My Drive\0-Projects\!-important\data-book\publishing\Cengage\cce-2026\LIVE-DEMO\2-syllabus\input\spring-2027-schedule.html 3. Lecture and seven lab sections, including meeting times and rooms: G:\My Drive\0-Projects\!-important\data-book\publishing\Cengage\cce-2026\LIVE-DEMO\2-syllabus\input\bitm330-schedule.txt 4. Official UAlbany Spring 2027 academic calendar: https://www.albany.edu/registrar/academic-calendar#spring-2027 The published Fall syllabus is also available at https://database-textbook.dimapublishing.com/files/bitm330/fall26/syllabus
TaskWhat to do, in order, with the approval stop
First inspect the sources and produce a concrete implementation plan. Identify the exact fields and tables you will change, how you will map each existing topic to the new dates, the output files you will create, your verification checks, and any decision you need from me. Save your plan to G:\My Drive\0-Projects\!-important\data-book\publishing\Cengage\cce-2026\LIVE-DEMO\2-syllabus\output\live-plan.md. STOP and wait for my approval before generating the syllabus. If I reject the plan, revise it and wait again. After I approve, update the term, lecture section, meeting time and room, and all seven lab sections from the supplied files. Use the official calendar to generate the Tuesday/Thursday teaching dates. Preserve the original topic order, readings, prerequisites, policies, and each individual grading weight. Remove fall-only breaks and include Spring Break. Flag any extra teaching day, uncertain final-exam date, or unchanged office hours for my review instead of inventing a decision. Make the document look ready to give to students: no emojis, consistent headings, readable spacing and column widths, visible outer and inner table borders, and repeated table headers. Keep table rows together where practical. Compare every grading weight with the original and verify the total is 100%.
OutcomeWhat to save and report
Save the following in G:\My Drive\0-Projects\!-important\data-book\publishing\Cengage\cce-2026\LIVE-DEMO\2-syllabus\output: - Word document: G:\My Drive\0-Projects\!-important\data-book\publishing\Cengage\cce-2026\LIVE-DEMO\2-syllabus\output\live-BITM330-Spring-2027.docx - A real native Google Doc named live-BITM330-Spring-2027 in this same Drive output folder. Verify that it opens as a Google Doc and record its URL. An HTML, Markdown, or .gdoc pointer alone does not satisfy this requirement. If native Google Docs creation is unavailable, report that explicitly. - Implementation report: G:\My Drive\0-Projects\!-important\data-book\publishing\Cengage\cce-2026\LIVE-DEMO\2-syllabus\output\live-report.md, listing the source files and calendar URL, the changes made, each check actually performed, saved file paths, the Google Doc URL, and questions for my review. Preserve all input files and prepared outputs. Use installed tools. End by opening the Word document and giving me the saved paths and Google Doc link.

4Plan

Claude

Plan: Update BITM 330 for Spring 2027

Status: Awaiting instructor approval Working folder: G:\My Drive\0-Projects\!-important\data-book\publishing\Cengage\cce-2026\LIVE-DEMO\2-syllabus

1. Reconcile the source documents

Read the Fall Word syllabus, spring-2027-schedule.html, and bitm330-schedule.txt from G:\My Drive\0-Projects\!-important\data-book\publishing\Cengage\cce-2026\LIVE-DEMO\2-syllabus\input. Build a field-by-field change list. Use the TXT for the seven labs and cross-check lecture section 2832, Tuesday/Thursday 4:30-5:50 PM, Lecture Center 7. Record conflicting details instead of choosing silently.

2. Map the calendar before editing the document

Read the Spring 2027 section of the official calendar at https://www.albany.edu/registrar/academic-calendar#spring-2027. Enumerate Tuesday/Thursday meetings from the first eligible date, January 21, through May 4. Exclude March 16 and 18 for Spring Break. Map each existing topic, reading, and deliverable in order. Put any unmatched date, including May 4 if unused, in an instructor-decision list. Keep the final-exam date pending unless separately verified.

3. Apply the approved changes and format the syllabus

Update the term, lecture details, seven-row lab table, and dated topic schedule. Preserve all other policies and each original grading weight. Use consistent headings, restrained typography, visible borders on every table cell, repeated headers, and no emojis. Render the Word file to inspect page breaks and long table rows.

4. Create both requested document formats

Save G:\My Drive\0-Projects\!-important\data-book\publishing\Cengage\cce-2026\LIVE-DEMO\2-syllabus\output\live-BITM330-Spring-2027.docx. Create the native Google Doc in the same Drive output folder. Reopen it and compare the tables and text with the Word version. Record its actual URL, or explicitly report a creation blocker.

5. Verify and write the implementation report

Compare every grade weight with Fall and confirm the 100% total. Match all seven labs to the TXT, check every teaching date and spring-break row, search for stale Fall dates, and confirm the input files are untouched. Save the actual checks and instructor questions to G:\My Drive\0-Projects\!-important\data-book\publishing\Cengage\cce-2026\LIVE-DEMO\2-syllabus\output\live-report.md.

Approval requested

Approve this plan before I generate the revised syllabus. Office hours, an unassigned extra teaching day, and an unverified final-exam time remain instructor decisions.

Gemini

Plan: Update BITM330 Syllabus for Spring 2027

Slug: update-bitm330-syllabus-spring-2027 | Repo: cce-2026 | Date: 2026-10-20 | Status: draft

סיכום

  • עדכון סילבוס הקורס BITM 330 מסמסטר סתיו 2026 לאביב 2027 על בסיס נתוני לוח הזמנים והמעבדות.
  • החלפת פרטי ההרצאה (קבוצה 2832, ימי שלישי וחמישי 16:30–17:50, Lecture Center 7) וטבלת 7 קבוצות המעבדה בנתוני אביב 2027.
  • מיפוי מחדש של תאריכי המפגשים (21 בינואר עד 29 באפריל/4 במאי 2027), החלפת חופשות הסתיו בחופשת אביב, ושמירה מוחלטת על שקלול הציונים (100%).
  • יצירת קובץ Word מעודכן (.docx) ותוצר תואם ל-Google Docs בתיקיית היעד output/gemini, בצירוף דו"ח שינויים מפורט.

Steps

1. Extract and inspect syllabus structure and schedule data

  • Files:
  • G:\My Drive\0-Projects\!-important\data-book\publishing\Cengage\cce-2026\LIVE-DEMO\2-syllabus\input\BITM330-Fall-2026.docx
  • G:\My Drive\0-Projects\!-important\data-book\publishing\Cengage\cce-2026\LIVE-DEMO\2-syllabus\input\spring-2027-schedule.html
  • G:\My Drive\0-Projects\!-important\data-book\publishing\Cengage\cce-2026\LIVE-DEMO\2-syllabus\input\bitm330-schedule.txt
  • Do:
  • Read Fall 2026 syllabus structure, header tables, course meeting times, lab sections table, topic schedule, and grade weights.
  • Parse lecture info from spring-2027-schedule.html (Class #2832, TTH 4:30 PM–5:50 PM, Lecture Center 7).
  • Parse the 7 lab sections from bitm330-schedule.txt (4457, 4458, 4459, 4460, 4461, 4462, 4696 with times and rooms).
  • Done when:
  • All replacement fields (term, lecture time, room, 7 labs) and existing grading weights (100% total) are cataloged.

2. Build the Spring 2027 course calendar and date mapping

  • Files:
  • G:\My Drive\0-Projects\!-important\data-book\publishing\Cengage\cce-2026\LIVE-DEMO\2-syllabus\input\BITM330-Fall-2026.docx
  • Do:
  • Map the semester calendar: semester runs Jan 20 to May 4, 2027; Spring Break March 13–19, 2027 (no class Tue 3/16, Thu 3/18).
  • First class: Thursday Jan 21, 2027.
  • Map all 26–27 lecture topics to the Tuesday/Thursday schedule, preserving topic order, readings, and deliverables.
  • Remove Fall Break and Thanksgiving rows; insert Spring Break row.
  • Flag any extra day (such as Tuesday May 4) as "Open day (to be planned)" for instructor review.
  • Done when:
  • A complete date-by-date schedule table for Spring 2027 is generated with holidays and extra days flagged.

3. Generate updated DOCX and Google Doc artifacts in output/gemini

  • Files:
  • G:\My Drive\0-Projects\!-important\data-book\publishing\Cengage\cce-2026\LIVE-DEMO\2-syllabus\output\gemini\BITM330-Spring-2027.docx
  • G:\My Drive\0-Projects\!-important\data-book\publishing\Cengage\cce-2026\LIVE-DEMO\2-syllabus\output\gemini\BITM330-Spring-2027-Syllabus.md
  • G:\My Drive\0-Projects\!-important\data-book\publishing\Cengage\cce-2026\LIVE-DEMO\2-syllabus\output\gemini\BITM330-Spring-2027-Syllabus.html
  • Do:
  • Create directory output\gemini\ if not present.
  • Update course title block: Term to Spring 2027, Class number to 2832, room to Lecture Center 7, meeting time to TTH 04:30 PM - 05:50 PM.
  • Replace the 7 lab entries in the lab table with the verified Spring 2027 sections, days, times, and rooms (Massry 119 and Taconic B021).
  • Replace class schedule table with the mapped Spring 2027 dates.
  • Verify every grading weight remains unchanged.
  • Save the resulting document as BITM330-Spring-2027.docx via python-docx.
  • Provide Google Doc compatible files directly inside the Drive folder for native Google Docs editing.
  • Done when:
  • BITM330-Spring-2027.docx is saved under output\gemini\ and opens cleanly with styles and formatting intact.

4. Verify deliverables and write the change audit report

  • Files:
  • G:\My Drive\0-Projects\!-important\data-book\publishing\Cengage\cce-2026\LIVE-DEMO\2-syllabus\output\gemini\report.md
  • Do:
  • Verify total grade weights sum to 100%.
  • Verify all 7 labs match bitm330-schedule.txt.
  • Check that no student or FERPA data is present.
  • Write report.md summarizing what changed, the exact file paths saved, and specific items for Nim to confirm (e.g., May 4 extra class, office hours, Zoom link).
  • Done when:
  • report.md exists in output\gemini\ and confirms all verification checks pass.

Relevant files - G:\My Drive\0-Projects\!-important\data-book\publishing\Cengage\cce-2026\LIVE-DEMO\2-syllabus\input\BITM330-Fall-2026.docx - G:\My Drive\0-Projects\!-important\data-book\publishing\Cengage\cce-2026\LIVE-DEMO\2-syllabus\input\spring-2027-schedule.html - G:\My Drive\0-Projects\!-important\data-book\publishing\Cengage\cce-2026\LIVE-DEMO\2-syllabus\input\bitm330-schedule.txt - G:\My Drive\0-Projects\!-important\data-book\publishing\Cengage\cce-2026\LIVE-DEMO\2-syllabus\output\gemini\

Verification 1. Read back BITM330-Spring-2027.docx to verify term, class number, meeting times, lab list, and dates. 2. Confirm grade weights total 100%. 3. Confirm all artifacts are written to output\gemini\ and input files remain untouched.

Decisions - Output files are placed in output\gemini\. - All grading percentages, policies, readings, and course prerequisites remain identical to Fall 2026. - The extra semester day (Tuesday, May 4) will be designated as "Open day (to be planned)" for instructor decision.

Your move. Read the plan, then paste one of these into the agent chat.

5Outcome

Claude

Gemini

  • DOCX
    BITM330-Spring-2027.docxGemini's Word file
    Open in Drive
  • HTML
    BITM330-Spring-2027.htmlFor the browser and Google Docs import
    Open in Drive
  • MD
    BITM330-Spring-2027.mdMarkdown version
    Open in Drive
  • MD
    report.mdGemini's audit summary
    Open in Drive

Check before you hand it out

Both runs keep the weights at 25 + 25 + 8 + 8 + 12 + 12 + 10 = 100. Both flag Tuesday, May 4 as an open day, and office hours and the Zoom link for your review. The agent drafts. You decide.

2

Prepare a normalization lab walkthrough

One prompt builds the whole teaching kit for the PetVax lab.

1Problem

Normalization is a lab students find hard to follow. I need an instructor walkthrough: what to say, what to show in Access, and files students can follow, all matching the published Chapter 8 lab.

The task: from the published lab alone, the agent creates everything: a small fictional example as CSV files, a guide, interactive slides, and starter and ending workbooks, carrying one example from repeating values to 3NF.

2Files

  • WEB
    Chapter 8, Lab 08The published lab: the authority for steps and schema

3Prompt

Complete prompt
GoalWhat I want and the role
I want a complete instructor walkthrough for the PetVax normalization lab in BITM 330. Act as my database teaching assistant.
ContextWhere to work and what to read
Work in this folder: G:\My Drive\0-Projects\!-important\data-book\publishing\Cengage\cce-2026\LIVE-DEMO\3-lesson-plan The published Chapter 8, Lab 08 is the authority for the lab steps and the final schema: https://github.com/nimdvir/database-book-project/blob/main/book-source/chapters/ch08/ch08-2026-10-16-2.html
TaskWhat to do, in order, with the approval stop
First read the lab and propose a concrete plan: the teaching sequence, one small fictional example carried from repeating values through 1NF, 2NF, and 3NF, the Access steps and SQL, and your checks. Save it to G:\My Drive\0-Projects\!-important\data-book\publishing\Cengage\cce-2026\LIVE-DEMO\3-lesson-plan\output\live-plan.md. STOP and wait for my approval. If I reject it, revise it and wait again. After approval, build the kit. Explain the anomalies, the grain, and the keys at each normal form. Then follow the published Access lab: create OWNER, PET, VET, VISIT, TREATMENT, and VISIT_TREATMENT; append records in dependency order; enforce the five relationships; show a rejected foreign key; and rebuild the original report. Keep StandardPrice and ActualCharge separate. Do not change the graded starter.
OutcomeWhat to save and report
Save these new files in G:\My Drive\0-Projects\!-important\data-book\publishing\Cengage\cce-2026\LIVE-DEMO\3-lesson-plan\output: 1. live-normalization-unnormalized.csv and live-normalization-1nf.csv: the small fictional example, before and after 1NF. 2. live-normalization-walkthrough.html: an offline instructor guide with timings, what to say, Access steps, SQL, and checkpoints. 3. live-normalization-slides.html: interactive slides that move the example through the normal forms. 4. live-normalization-starter.xlsx and live-normalization-ending.xlsx: the fictional starting table and the six normalized tables. 5. live-report.md: what you made, the checks you ran, and anything I should review. Use visible table borders. Check that IDs, foreign keys, and totals agree across all files. Preserve the existing files. Open the guide and slides when done.

4Plan

Saved plan

Plan: Create the PetVax normalization lab walkthrough

Status: Awaiting instructor approval Working folder: G:\My Drive\0-Projects\!-important\data-book\publishing\Cengage\cce-2026\LIVE-DEMO\3-lesson-plan

1. Establish the authoritative lab sequence

Read the published Chapter 8 Lab 08 at https://github.com/nimdvir/database-book-project/blob/main/book-source/chapters/ch08/ch08-2026-10-16-2.html. Record the required six-table schema, key fields, append-query order, five relationships, and submission checks. Treat the already atomic PETVAX_FLAT source separately from the fictional repeating-values demonstration.

2. Design the explanation around one continuous example

Use a single visit with multiple treatments to show why a repeating cell is hard to query. Expand it into one treatment line per row. Explain the grain and candidate key before discussing partial dependencies. Show the temporary visit/line split for 2NF, then remove transitive dependencies to reach the final six-table design. Explain why the catalog price and a line's actual charge belong in different tables.

3. Write the actual Access walkthrough

Follow the published lab from saving a working copy through the rebuilt report. For each action, provide the instructor cue, the Access menu or design-view steps, useful SQL, an expected result, and a checkpoint answer. Append parent records before dependent rows. Preserve VisitTreatmentID and every legitimate line. Include the invalid-foreign-key demonstration and how to return to a valid database afterward.

4. Create the teaching files

Create the fictional example as live-normalization-unnormalized.csv and live-normalization-1nf.csv in the output folder. Write G:\My Drive\0-Projects\!-important\data-book\publishing\Cengage\cce-2026\LIVE-DEMO\3-lesson-plan\output\live-normalization-walkthrough.html and live-normalization-slides.html. Create live-normalization-starter.xlsx with labeled fictional data and live-normalization-ending.xlsx with OWNER, PET, VET, VISIT, TREATMENT, and VISIT_TREATMENT. Add a key/relationship guide. The agent creates these files as deliverables. Existing prepared files remain intact.

5. Cross-check the whole kit

Compare the guide, slides, and workbook field names. Check primary-key uniqueness, required foreign-key coverage, five relationship definitions, treatment-line counts, and charge totals. Reconstruct the flat teaching example and compare it to the starter at the same grain. Open both HTML pages and both workbooks, and inspect the tables at presentation size.

6. Report and hand off

Save G:\My Drive\0-Projects\!-important\data-book\publishing\Cengage\cce-2026\LIVE-DEMO\3-lesson-plan\output\live-report.md with the files created, source used, actual validation results, and any Access behavior that still needs checking in the desktop app. Open the guide and slides for instructor review.

Approval requested

Approve the full walkthrough and teaching-kit scope before file creation. The fictional pre-lab demonstration supplements the published graded lab and does not alter its source.

Your move. Read the plan, then paste one of these into the agent chat.

5Outcome

  • CSV
    petvax-demo-unnormalized.csvCreated: the fictional example with repeating values
    Open in Drive
  • CSV
    petvax-demo-1nf-flat.csvCreated: the same example in 1NF
    Open in Drive
  • HTML
    Instructor walkthroughTimings, what to say, Access steps, SQL
    Open in Drive
  • HTML
    Interactive slidesNot normalized to 3NF. Use the arrow keys.
    Open in Drive
  • XLSX
    Starter workbookThe table students begin with
    Open in Drive
  • XLSX
    Ending workbookSix tables: OWNER, PET, VET, VISIT, TREATMENT, VISIT_TREATMENT
    Open in Drive
  • MD
    report.md and demo notesWhat was made and what to check before class
    Open in Drive
3

Analyze the class data

Two versions: the Claude and DeepSeek comparison, and a small sample you can run live.

AThe comparison: one dataset, two AI analyses

1Problem

I have a semester of class-form submissions and want a quick, presentation-ready report. I gave the same prompt to Claude and to DeepSeek, on the same file. I got two different reports.

The point is not which model wins. It is how each one grouped the answers, and what that does to the numbers.

2Files

  • CSV
    BITM330 Fall2026.csv2,436 form submissions, 9 columns. Not published: it holds students' free-text answers. The reports below show counts only.
  • MD
    prompt.mdThe one prompt both agents got
    Open in Drive
  • PY
    claude/analyze.pyClaude's reproducible script
  • PY
    deepseek/analyze.pyDeepSeek's reproducible script

3Prompt

Complete prompt
GoalWhat I want and the role
Analyze the supplied BITM330 Fall2026.csv and produce a self-contained HTML report that works offline.
ContextWhere to work and what to read
Treat one record as a form submission, not a unique student.
TaskWhat to do, in order, with the approval stop
Use five sections: (1) submissions per session, (2) attendance-status responses overall and by session, (3) instructor question groups and categorized answer counts, including the practice-test yes/no question, (4) aggregate absence-reason categories, and (5) data-quality findings. Inspect the file first. Define and document every grouping rule and denominator. Do not infer why sessions have few responses. Do not reproduce personal responses or absence explanations. Preserve the CSV unchanged.
OutcomeWhat to save and report
Save the analysis plan, reproducible code, computed aggregate results, and a work report. Verify totals and explain any difference between initial expectations and computed results.

4Plan

Claude

Plan: Quick data analysis of BITM330 Fall 2026 attendance log → HTML report

Context

Nim wants a presentation-ready analysis of G:\My Drive\0-Projects\!-important\data-book\publishing\Cengage\cce-2026\examples\data-analysis\BITM330 Fall2026.csv, output as an HTML file, with everything saved in a new claude\ subfolder next to the CSV. This sits in the CCE 2026 examples/ tree, so it doubles as a demo of an AI agent doing a data-analysis task for academic work.

What the data is (from inspection, read-only)

  • 2,436 Google-Form-style responses, 9 columns, no name/ID columns.
  • One row per student per class session. 8 real sessions (8/25 → 9/29/2026), roughly 250–320 rows each.
  • Columns: Timestamp, Date of Class, Class number, Attendance status, Why missed (free text, 14 rows), Seating (filled only on 9/29, n=283), Participation (n=288, multi-select ;-joined), Class question (free text), Your answer (free text).
  • Attendance: 2,408 Present, 14 Partial, 14 Absent (98.9% present).
  • Submission hours cluster at 2 PM (1,211) and 4 PM (860), suggesting two sections or a two-part class.
  • Data-quality issues worth surfacing: ~60 rows where class number disagrees with the date's dominant class; ~20 rows with impossible years (2003–2007, 2027, 3026); 39 rows whose timestamp date ≠ Date of Class; 4 #NAME? Excel artifacts in answers; the same instructor question typed 4–6 different ways.

Privacy constraint

"Why did you miss class" contains health and family details (surgery, funeral, hospital, biopsy). The report must aggregate only (counts by category such as medical / athletics travel / family), never quote excuse text verbatim. Student free-text answers will also be summarized (counts, lengths, yes/no split), not reproduced at length. No names exist in the file, so no other FERPA exposure.

Deliverables (all in ...\examples\data-analysis\claude\)

  1. analyze.py — standard-library-only Python (csv, collections, datetime, json, html). No pandas (not confirmed installed; stdlib is sufficient). Reads the CSV, computes all figures, writes the HTML.
  2. BITM330-Fall2026-analysis.html — self-contained report: inline CSS, inline SVG charts, no CDN, so it works offline in a conference room. Light/dark aware, readable at phone width.
  3. analysis-plan.md — this plan, copied into the folder so the method is visible next to the output.
  4. report.md — detailed written report: every number the HTML shows plus the ones that did not fit on a slide (per-session table, normalized question list with counts, answer categories with counts, absence categories, the full data-quality inventory with row counts), method notes, and caveats. Aggregates only, no verbatim student text.
  5. README.md — one-paragraph index of the folder and how to re-run (python analyze.py).

Report structure (per Nim's scoping: these five sections only)

  1. Submissions per session (bar chart, 8 real dates): shows the drift from ~310 down to ~283.
  2. Attendance status (present / partial / absent): overall split plus a per-session breakdown.
  3. Class questions: top instructor questions after normalizing case, punctuation, and whitespace; answers shown as categorized counts only (for example yes / no / other for the yes-no question, and coarse themes for the open questions such as "AI use" or "readings"); no verbatim student text.
  4. Absence reasons: categorized counts only (medical / athletics travel / family / other).
  5. Data-quality notes: the mismatches listed above, framed as "what an agent catches in 30 seconds."

Footer: source file, generated date, method (stdlib script), one-line privacy statement. Dropped from the earlier draft: headline tiles, submission-hour histogram, seating × participation.

Before writing chart code, load the dataviz skill for palette/form guidance (it triggers on any chart).

Steps

  1. Create claude\ folder; write analyze.py.
  2. Run it; open the HTML; check all five sections render and numbers match the profiling above (2,436 rows; 2,408 present / 14 partial / 14 absent; 14 absence reasons; 8 real session dates).
  3. Confirm no verbatim excuse text or long student answers appear in the HTML (grep for "surgery", "funeral", "hospital", "biopsy").
  4. Check the page at ~400 px width for horizontal scroll, and in dark mode.
  5. Have analyze.py also emit report.md from the same computed figures, so the HTML and the report can never disagree. Copy this plan to analysis-plan.md. Write README.md.
  6. Re-read report.md once for the same privacy check as step 3.

Out of scope / not touched

  • Nothing in the cce-2026 git repo changes. The CSV is read-only.
  • Optional follow-up Nim may want: save the prompt as a .github/prompts/*.prompt.md file in the repo, per AGENTS.md's "where prompts live" rule. Not done unless asked.

DeepSeek

Analysis plan — BITM 330 form data, quick session analysis

Folder: examples/data-analysis/deepseek/ (Google Drive copy of the CCE 2026 project) Source data: ../BITM330 Fall2026.csv — 2,609 form submissions, 9 columns. Read-only; never modified, never copied into the public repo. Prepared: 2026-09-30. Approved by Nim (v2.1) before execution. Executed by analyze.py.

Purpose

A quick, presentation-ready analysis of the BITM 330 class form data for the CCE 2026 data-analysis demo. Five sections only, in this order:

  1. Submissions per session — bar chart over the 8 real (in-person) session dates; shows the drift from first to last session.
  2. Attendance status — present / partially present / absent, overall and per session.
  3. Class questions — the top instructor questions (normalized, case- and punctuation-insensitive), answer categories as counts only, and the yes/no split for the yes/no question.
  4. Absence reasons — categorized counts only.
  5. Data quality — "what an agent catches in 30 seconds" checklist with counts.

Outputs: report.html (presentation result) plus session-stats.csv and category-counts.csv (backing counts). analysis-notes.md records what was done after the run.

Definitions and rules

  • Unit: one form submission. No unique-student inference; no attendance-rate claims. Every figure is labeled as a share or count of submissions.
  • Real session dates: parseable 2026 dates with 50 or more submissions (expected: 8/25, 8/27, 9/1, 9/3, 9/8, 9/15, 9/22, 9/29). Dates with fewer rows are "stray" or "near-empty" and are listed in the data-quality section instead of the chart.
  • Near-empty meeting days: inferred from the weekday pattern of the eight sessions; calendar days fitting the pattern between the first and last session are checked, and those with ~no submissions are listed.
  • No corrections, no deduplication, no imputation. Identical rows are counted, not merged. Entry errors are surfaced, never fixed.
  • Question normalization: lowercase, apostrophes removed, other punctuation becomes spaces, whitespace collapsed. The label shown is the most common original spelling of the cluster. "Did not ask" / "no question" style entries are counted separately.
  • Answer categories: Yes / No / Unsure / Other / Blank, by keyword rules (priority: blank, unsure, yes, no). Counts only — answer text is never displayed.
  • Absence buckets: Illness / medical, Family / personal, Athletics / travel, Schedule / work, Other; first matching bucket wins. Counts only — reason text is never displayed.
  • Privacy: free-text columns (reason, question, answer) never appear as raw text in any output. Questions appear only as the top normalized clusters; the displayed labels are reviewed before release.

Method

Single stdlib-only Python script (analyze.py): reads the CSV as utf-8-sig with stripped header names, computes everything in one pass structure, asserts summation checks, writes the three outputs, and prints an ASCII-only run summary.

Expected shapes (expectations, not results)

  • ~2,609 rows; 8 real sessions; first-to-last drift roughly 310 -> 283.
  • Session 7 (9/15) unusually low (~151 seen in reconnaissance).
  • Three near-empty meeting days (9/10, 9/17, 9/24).
  • If the run shows different values, the report states the actual values. Expectations are cross-checks, never targets.

Verification

  1. Script exits 0; only this folder is written; source file hash unchanged.
  2. Summation checks: date buckets = 2,609; per-session attendance = submissions; question buckets = all rows; answer categories = cluster sizes; absence buckets = reasons provided + no-reason count = absences.
  3. Expected-vs-actual recorded (8 sessions; drift; 9/15; near-empty days).
  4. Privacy scan of all outputs for distinctive free-text tokens; zero hits.
  5. Offline check: no external references in report.html; opens via file://; light and dark themes defined.
  6. Repo untouched; nothing committed or mirrored.

Provenance

  • v2.1 scope approved by Nim on 2026-09-30 (single HTML report + plan + work report, everything in this folder; supersedes the earlier profile/completeness scope).
  • Produced for the CCE 2026 hands-on comparison exercise ("deepseek" folder).

Your move. Read the plan, then paste one of these into the agent chat.

5Outcome

Claude

Open in Drive

DeepSeek

Open in Drive

Same counts. Different counting rules.

Both reports show the same eight session counts: 310, 318, 320, 302, 294, 291, 297, and 283. Both report 2,408 present, 14 partially present, and 14 absent responses. These are shares of submissions, not an attendance rate.

QuestionClaudeDeepSeek
Basic volume2,436 submissions; eight main sessionsSame
Answer groupingGroups by session; keyword themes can overlapNormalizes question wording and merges a practice-test question family
Practice-test Yes253 of 283 session answers (about 89%)244 of 262 clustered responses (93.1%)
Absence categoriesMedical 6; family 4; athletics 4Medical 8; family 2; athletics 4
Unusual dates21 outside the eight selected sessions15 with implausible years plus six stray-date records
GraphsHTML/CSS bars and question cardsInline SVG charts and tables

89% and 93.1% answer different selection rules. Don't rank the models from these percentages. Ask: what exactly was counted?

BThe small sample: run it live

1Problem

A counts-only CSV: 11 class meetings, submissions and self-reported status per meeting. No names, no IDs, no free text, so it is safe to run on screen.

2Files

  • CSV
    attendance-by-class.csvOne row per class meeting
    Open in Drive

3Prompt

Complete prompt
GoalWhat I want and the role
I want a presentation-ready analysis of my BITM 330 class-form submissions, and I want to show the two original analyses made with DeepSeek and Claude. Act as my teaching-data analyst.
ContextWhere to work and what to read
Work in this folder: G:\My Drive\0-Projects\!-important\data-book\publishing\Cengage\cce-2026\LIVE-DEMO\4-data Read this aggregate CSV: G:\My Drive\0-Projects\!-important\data-book\publishing\Cengage\cce-2026\LIVE-DEMO\4-data\input\attendance-by-class.csv Each row represents a class meeting. form_submissions counts submissions; present, partially_present, and absent are self-reported categories. The file does not identify unique students or give a roster denominator. Also inspect the two saved original analysis reports and their saved plans: - G:\My Drive\0-Projects\!-important\data-book\publishing\Cengage\cce-2026\LIVE-DEMO\4-data\output\claude\report.html - G:\My Drive\0-Projects\!-important\data-book\publishing\Cengage\cce-2026\LIVE-DEMO\4-data\output\claude\analysis-plan.md - G:\My Drive\0-Projects\!-important\data-book\publishing\Cengage\cce-2026\LIVE-DEMO\4-data\output\deepseek\report.html - G:\My Drive\0-Projects\!-important\data-book\publishing\Cengage\cce-2026\LIVE-DEMO\4-data\output\deepseek\analysis-plan.md Those are separate historical outputs from a different source snapshot. Keep their scope, grouping rules, and denominators separate from the small aggregate CSV. Preserve both originals.
TaskWhat to do, in order, with the approval stop
First inspect the files and propose a concrete analysis plan. State the questions you can answer, the row unit, validation rules, measures and denominators, chart designs, treatment of online meetings, and how you will compare the saved reports. Save the plan to G:\My Drive\0-Projects\!-important\data-book\publishing\Cengage\cce-2026\LIVE-DEMO\4-data\output\live-plan.md. STOP and wait for my approval. Revise the plan if I reject it. After approval, create one self-contained interactive HTML report that works offline. Include: 1. A data-quality summary: row count, missing/duplicate class numbers, numeric validity, chronological order, and whether attendance-status counts sum to submissions on every row. 2. A labeled bar chart of submissions for every class, distinguishing online and in-person meetings, with a format filter and the underlying counts table. 3. A like-for-like comparison of the in-person meetings, with exact counts and a first-to-last change calculation. Show the much smaller online counts separately and explain what additional context we would need to interpret them. 4. A breakdown of self-reported attendance status, with counts and clearly stated submission-share denominators. 5. Three evidence-based teaching observations and follow-up questions. Do not infer individual absences, attendance rates, or a causal effect of delivery format. 6. A comparison of the two original saved reports: show both outcomes, identify an agreed session-count result, and trace one disagreement to its grouping rule and denominator. Report any inconsistency between a saved plan's expected counts and its report's actual results. Do not call this a controlled model benchmark.
OutcomeWhat to save and report
Save G:\My Drive\0-Projects\!-important\data-book\publishing\Cengage\cce-2026\LIVE-DEMO\4-data\output\live-report.html and G:\My Drive\0-Projects\!-important\data-book\publishing\Cengage\cce-2026\LIVE-DEMO\4-data\output\live-report.md. Include the calculations and limitations in the written report. Check every plotted value against its input and ensure no names, IDs, or quoted student answers appear. Use installed tools, preserve all source files, and open the finished HTML in the local browser.

4Plan

Saved plan

Plan: Analyze the submissions and compare the two saved reports

Status: Awaiting instructor approval Working folder: G:\My Drive\0-Projects\!-important\data-book\publishing\Cengage\cce-2026\LIVE-DEMO\4-data

1. Profile and validate the aggregate input

Read G:\My Drive\0-Projects\!-important\data-book\publishing\Cengage\cce-2026\LIVE-DEMO\4-data\input\attendance-by-class.csv. Establish one class meeting per row and submissions as the counting unit. Check all 11 class numbers, dates, formats, nonnegative counts, duplicate/missing values, and the equality present + partially_present + absent = form_submissions. Report any failed check before relying on its row.

2. Define measures with explicit denominators

Compute total submissions and per-format totals/means. Measure first-to-last change among in-person meetings only, showing both endpoints and the calculation. Calculate attendance-status shares using submission counts as denominators. Do not estimate unique students, attendance rates, or a causal format effect. Online meetings stay visible as their own group.

3. Build a report that supports inspection

Create a labeled class chart with a format filter, an exact counts table, a status breakdown, a validation summary, and three supported observations with follow-up questions. Keep all styles, charts, and scripts inline so it works offline. Derive the visuals and written figures from the same computed values.

4. Inspect both original analyses and their saved plans

Read G:\My Drive\0-Projects\!-important\data-book\publishing\Cengage\cce-2026\LIVE-DEMO\4-data\output\claude\report.html and G:\My Drive\0-Projects\!-important\data-book\publishing\Cengage\cce-2026\LIVE-DEMO\4-data\output\deepseek\report.html, plus each analysis-plan.md. Keep these historical snapshots distinct from the 11-row aggregate input. Compare the eight reported main-session counts. Trace the practice-test question to Claude's 253/283 and DeepSeek's 244/262, explaining the different selection rules. Check plan expectations against report results rather than treating expected counts as verified facts.

5. Preserve and present both original outcomes

Keep each original HTML report intact in its own folder. Link both from the new report and add a concise comparison of the matching counts and differing denominators. Describe these as saved examples, without implying identical prompts or verified model versions.

6. Validate and deliver

Check every chart value and percentage against the source used for it. Confirm table/graph agreement and absence of names, IDs, or quoted answers. Open the offline report. Save G:\My Drive\0-Projects\!-important\data-book\publishing\Cengage\cce-2026\LIVE-DEMO\4-data\output\live-report.html and G:\My Drive\0-Projects\!-important\data-book\publishing\Cengage\cce-2026\LIVE-DEMO\4-data\output\live-report.md, listing actual checks, limitations, and paths.

Approval requested

Approve these definitions and report sections before I create the analysis. A roster and individual identifiers are outside the available data.

Your move. Read the plan, then paste one of these into the agent chat.

5Outcome

  • HTML
    report.htmlInteractive report with a format filter
    Open in Drive
  • MD
    report.mdChecks, numbers, limits
    Open in Drive
4

Put your names on the website

A small, real edit to the conference site, built and checked locally.

1Problem

I want the audience's first names on the Live page of this conference site, right now, without breaking anything. That is a two-file edit, a rebuild, and a check.

2Files

3Prompt

Complete prompt
GoalWhat I want and the role
Add the audience's first names to my local conference website. Act as my website editor.
ContextWhere to work and what to read
Names: [AUDIENCE FIRST NAMES] The website folder is: C:\Users\nd115232\github\cce-2026 Read the existing source: C:\Users\nd115232\github\cce-2026\docs\content\live.md The built local page is: C:\Users\nd115232\github\cce-2026\docs\live.html
TaskWhat to do, in order, with the approval stop
First inspect the existing data-names attribute and the project's documented build command. Give me a concrete plan showing the exact edit, build command, and checks. Save the plan to G:\My Drive\0-Projects\!-important\data-book\publishing\Cengage\cce-2026\LIVE-DEMO\5-website\output\live-plan.md. STOP and wait for my approval. If I reject it, revise the plan and wait again. After I approve, replace only the names in the existing data-names attribute with the supplied comma-separated first names. Escape the values correctly. Use the existing build process, then open or refresh C:\Users\nd115232\github\cce-2026\docs\live.html in the local browser. Limit website changes to these two files: - C:\Users\nd115232\github\cce-2026\docs\content\live.md - C:\Users\nd115232\github\cce-2026\docs\live.html
OutcomeWhat to save and report
Review the diff, verify the supplied names appear, and report the two changed paths and whether the build succeeded. Save that short report to G:\My Drive\0-Projects\!-important\data-book\publishing\Cengage\cce-2026\LIVE-DEMO\5-website\output\live-report.md. Do not install packages, change unrelated files, commit, push, or publish.

4Plan

Saved plan

Plan: Put the audience's names on the local Live page

Status: Awaiting approval Website folder: C:\Users\nd115232\github\cce-2026

1. Inspect the existing component and build command

Read C:\Users\nd115232\github\cce-2026\docs\content\live.md and locate the existing data-names attribute. Read the documented build command in the project. Check the supplied comma-separated first names and how the current component encodes its values.

2. Make the narrow source edit

Replace only the names in that attribute. Preserve the surrounding text, design, and component behavior. Escape any attribute-sensitive characters. Keep a readable diff for review.

3. Rebuild and check the two files

Use the existing project command. Review changes in C:\Users\nd115232\github\cce-2026\docs\content\live.md and C:\Users\nd115232\github\cce-2026\docs\live.html. Verify the generated names match the supplied names and that no unrelated files changed. Report the actual command and exit result.

4. Open the local outcome

Open C:\Users\nd115232\github\cce-2026\docs\live.html and check the displayed names. Save G:\My Drive\0-Projects\!-important\data-book\publishing\Cengage\cce-2026\LIVE-DEMO\5-website\output\live-report.md with the two changed website paths and checks. Leave publication for a later decision.

Approval requested

Approve the exact names and these two website files before the edit. No commit, push, or publication is part of this plan.

Your move. Read the plan, then paste one of these into the agent chat.

5Outcome

The live demo changes a local copy first. Publishing is a separate step.

More examples

Where this work lives every day.

Tips for advanced users

When a prompt works, keep it: instructions, saved prompts, skills, workflows, and more than one agent.

Slide 294. The Workflow
Slide 30Reviewing the work

Read the diff, check outputs, ask for a report, then accept, revise, or restore.

Slide 31Workspace instructions

Slide 32Reusable prompts

Slide 33Skills

Slide 34From prompting to workflows

Tip

Use multiple agents for the same task

Have them check each other's plans and output. You have an army of agents. Use it.

1

Same prompt

Give two agents the same prompt and the same files. This page does it twice: Claude and Gemini on the syllabus, Claude and DeepSeek on the data.

2

Cross-check the plans

Before you approve, give each agent the other's plan and ask what it missed.

3

Compare the outputs

Where they agree, you gain confidence. Where they differ, trace the difference to a rule, like 253/283 against 244/262.

4

You decide

Agents review agents. You still approve. Delegate work, not responsibility.

The review prompt I used on the two data reports
Compare the saved Claude and DeepSeek reports against their documented methods. List agreements and differences in counts, denominators, grouping rules, missing values, chart design, and interpretation. Do not label one model more accurate without checking the underlying computation. For the practice-test comparison, explicitly distinguish all session answers from the selected question cluster. Count CSV records separately from physical lines. Preserve the reports and source data. Save a concise comparison and unresolved questions. For a small demonstration edit, make a separate report copy and change only one chart title; do not change its values or scale.