Claude Co-Instructor

·Geoff Challen

The Collaboration Started Before the Code

Almost as soon as I started using AI, I started thinking about teaching a course on AI. And as I became more excited about the technology, my interest in teaching a course just grew and grew. From the beginning, I wanted this to be a collaboration with AI — not just in building the website, but in designing the course itself.

What Claude on the website doesn't know is that I was actually working with Claude on the syllabus back last semester. We designed it together through conversation. Claude helped me create a version of the syllabus that we could accept feedback on — we even built an integration with Google Docs so we could grab comments that people left on the document, talk about how to incorporate them, and fold that feedback into the course. That was the first stage of our collaboration.

What I Wanted the Website to Do

I knew the course was going to have a website, and I wanted it to do more than just host content. I wanted it to facilitate the actual operation of the class: giving students access to AI models to chat with, organizing our in-class activities, tracking enrollment, handling applications, sending email. This is a course that involves a lot of human interaction, and I wanted tools to organize and supervise those interactions.

These are all things I had done before with my CS 124 class. The phrase I've been using recently is that I had crawled over glass to get this stuff to work. Even things that seem like they should be obvious — like figuring out who's in the course — can be remarkably challenging given the lack of APIs at the university. You can figure out who's in your course by going to some website, logging in through two-factor authentication, and downloading a CSV. But if you want to do that programmatically so you can monitor enrollment changes continuously, that's a totally different story.

I figured out ways to do this for CS 124, writing code by hand. It took years. I remember the first couple of times I taught that course just being so frustrated by how much time I had to devote to roster management alone. The amount of time and energy it took to build those tools and get them to work reliably was terrible, and it impeded my ability to work on the things that actually mattered. Those tools stabilized over time, but if I look back on the journey teaching CS 124, I have been able to realize a lot of my vision for the course — but it has taken a long time.

A Different Approach

With this new course, I wanted to try something different. I wanted to push the limits of what AI code generation and coding agents are capable of, and I wanted Claude as a collaborator from the very beginning.

I already work with Claude on all of my coding projects. I've used it heavily to maintain and improve CS 124 as well, and it does fantastic work there. But on CS 124 it's coming into an established codebase. This time I wanted it involved from the start — in the design decisions about how to implement the course, how to create the infrastructure.

And I wanted it to do all of the coding. All of it. I didn't want to read, write, or debug a single line. I wanted to talk to it and let it do its thing. I still do things like run tests or run the linter — it can do those things itself, but I can still contribute that way. But in general, our workflow has been that I talk about what I'd like to happen, and I apply some of my understanding and knowledge where it matters.

Bringing Vision, Letting Claude Design

Here's an example of how the collaboration works. The course activities are maintained as MDX files — that was my choice, because I knew it was a good fit for mixing structured content with interactive components. So Claude worked with me within that framework to figure out how we could create group activities with multiple stages, time boxes, partner switches, moments where we pause and come together to discuss. I brought the vision of what I want the in-classroom experience to be, and Claude figured out how to implement it.

In many cases, I let Claude make its own design decisions. The choice of database is a good example. I've been frustrated in the past with SQL databases, particularly around schema migrations. I had some terrible experiences years ago that left me preferring NoSQL databases, which is what I used exclusively for CS 124. But for this course, Claude wanted to use SQL, and I said fine. There have been a few times when I thought I might regret that, but it's actually been remarkably good at dealing with the schema issues that used to terrify me.

And it's not just implementation. Claude makes suggestions about content, timing for activities, how to approach teaching a particular concept. It was involved in writing the syllabus, so it's part of those conversations too. But where it really shines right now is in turning ideas into working infrastructure.

The Speed Difference

The result is that I've been able to build infrastructure for this course at a speed I never could have imagined. The things that took me years to build for CS 124, I can do in a tenth of the time, maybe a twentieth, working with Claude.

Roster management is a perfect example — that was such a huge pain before. This time: use the Canvas API, here's the key, done.

Mail is another good story. I like having my own mailing list so I can email students from my mail client instead of the university's web interfaces. In the past I used Mailman for this, but it's getting long in the teeth, and mail has always scared me — I don't understand the protocols as well, and it feels complicated and messy. So I talked to Claude and said: can we build a mail server? Now we have one running as part of the course infrastructure, proxying inbound mail to a container that handles routing, with logging and a UI to see what happened. That would have taken me ages on my own.

Where Things Stand

Students haven't started going through the activities yet — we're really just getting to the interesting part. But the core course infrastructure is already built, and built well.

I have the experience of it taking eight years to build out even a fraction of my vision for CS 124. In the space of weeks, I've gotten way further on this course — probably years ahead of where I'd be writing the code by hand. Eight years versus weeks. That's what having a collaborator who can turn ideas into working code almost instantly changes about building a course.