This past week, I had the chance to teach vibe coding to high school students at my son's school. This was part of the Wintermission program, where teachers and parents get to teach topics not typically covered during the school year—things like baking, debating, and apparently, vibe coding.

I was at the school from 8:15 to 10:15, Monday through Friday. My son was skeptical anybody would sign up, but it turned out I had about 9 students who chose to participate. My son chose not to join—that's a story for another day :)

Going in, I had a rough plan for the week since I had to share something ahead of time. Here's how the week actually turned out:

Day 1: Use Claude to create a personal profile page with some gamification (e.g., a quiz to help others learn about the individual). Save the profile, open it in VS Code, make a change manually (like adding a profile picture), and share it with the class.

Day 2: Set up GitHub accounts and create repos. Check in the previously created profile page. Generate ideas for a group project, vote on the best ones, and form teams. We ended up with three teams—one building a Minecraft clone, one building a bullet hell game, and one creating an expense tracker.

Day 3: Created repos for each project. The teams had a clear vision for what they wanted to build and wrote detailed specifications—defining things like stone types, tools, rendering, and sprites for different characters. They also drew characters by hand and started generating sprites using pixel art. Then they presented their plans to the class and kicked off execution.

Day 4: They worked on building. By midpoint, each team showed an early proof of concept for feedback and discussion.

Day 5: Final presentations. They shared what they built and their learnings on vibe coding and the tools they used.

Key takeaways: