OK. Now we need to complete today's activity. Here's what I'm thinking. We st...
OK. Now we need to complete today's activity. Here's what I'm thinking. We start with students exploring the next word demo in groups. Maybe 10m for that and then 5m discussion. Now, same groups, we have them explore the temperature demo to understand how the probabilities are used. 10m for that, 5m discussion. Next, same groups, now they are examining the Babbler demo and walkthrough. Let's give a bit more time for this: 15m, 10m discussion. Now we're at 55m. For the final section, let's try our first inductive activity. New groups, and we'll need some new components for this. First we have them talk to their partner and come up with, say, three questions that they'd like answered about how LLMs work based on their initial investigations. Groups enter those questions. The component can require a certain number, but also allow students to enter more, but into separate text boxes. Now, once we have those questions, we should aggregate them and then use GPT to (1) combine (eliminate duplicates), (2) clean (rephrase as needed), and (3) prioritize the questions generated by the group. Now we should have a list of questions to examine in priority order, which we can discuss as a group. Next, I'd like a way for the instructor to select a question from the list, which seeds the next part of the discussion. In the same groups, or in new groups, students now work together to find answers to that question, which they enter and then share in a following share out session. Does that make sense? Today we probably have time for one round of this.
Oh, and the questions component should also allow the instructor to optionally seed questions to help things along, since students may not know the right questions to ask. These questions should just be mixed in at the aggregate stage, and not identified to students as instructor provided.
This is a really interesting activity design - an inductive learning cycle where students generate questions from exploration, then collaboratively answer them. Let me explore the codebase to understand the existing activity infrastructure before planning.
Great, I have a thorough understanding of the existing infrastructure. Now let me look at a few specific files and then design the implementation.
Now let me look at the API registration and socket events to understand the patterns for adding new routes.
I have a thorough understanding of the codebase. Let me write the plan now.
Before I finalize, I have a couple of questions:
Good answers. Let me update the plan with the title adjusted to signal this is a first exploration, and the confirmed choices.
The plan is ready. Key points:
- Title: "How Do LLMs Work? A First Look" — signals this is the beginning of a deeper exploration
- Demos embedded directly in activity stages (no navigation away)
- Same groups for investigation as question generation
- 3 new components: QuestionEntry, QuestionBoard, SelectedQuestion
- 2 new DB tables: questionSubmissions (raw questions per group), questionAggregations (GPT-processed list + selection)
- GPT integration for combining, cleaning, and prioritizing student questions, with instructor seed questions mixed in silently
- Socket events for real-time updates (submission counts, question selection)
- 10 activity stages totaling ~85 minutes
Ah, sorry. I'd like the seed questions embedded in the activity itself, not ones that I need to add at runtime. Ah, OK. I see you're supporting that, great. Eventually we may want to support multiple investigation stages based on one question stage, if that makes sense. We gather questions, then do one, then do another, and so on. And can we fit today's activity into 80m? What would you trim?
Good points. Let me address each:
Seed questions: Yes, the plan has them as MDX props on <QuestionBoard seedQuestions={[...]} /> — no runtime entry needed.
Multiple investigation rounds: That makes sense — gather questions once, then the instructor selects from the same prioritized list for each subsequent round. The SelectedQuestion component would just re-poll, and the instructor clicks "Select" on a different question in the QuestionBoard between rounds. The current design supports this naturally since selectedIndex can be updated repeatedly. I'll note this as a future extension but won't over-engineer for it now.
Fitting into 80m: Here's what I'd suggest trimming:
| Stage | Current | Trimmed | Change |
|---|---|---|---|
| Explore: Next Word | 10m | 8m | -2m |
| Discussion: Next Word | 5m | 4m | -1m |
| Explore: Temperature | 10m | 8m | -2m |
| Discussion: Temperature | 5m | 4m | -1m |
| Explore: Markov Babbler | 15m | 12m | -3m |
| Discussion: Markov Babbler | 10m | 7m | -3m |
| Generate Questions | 10m | 8m | -2m |
| Question Review | 5m | 5m | — |
| Investigate | 10m | 10m | — |
| Share Out | 5m | 5m | — |
| Total | 85m | 71m | Leaves 9m buffer |
That's aggressive though. The other option is to protect the exploration time and trim the new activity:
Good call — merging those two keeps the investigation section well-protected. Updated stage layout:
| # | Stage | Duration | Cumulative |
|---|---|---|---|
| 1 | Explore: Predictions & Temperature | 15m | 15m |
| 2 | Discussion: Predictions & Temperature | 5m | 20m |
| 3 | Explore: Markov Babbler | 15m | 35m |
| 4 | Discussion: Markov Babbler | 10m | 45m |
| 5 | Generate Questions | 10m | 55m |
| 6 | Question Review | 5m | 60m |
| 7 | Investigate | 12m | 72m |
| 8 | Share Out | 8m | 80m |
That's 8 stages, 80m exactly. Let me update the plan.