CS 124 All-Student Meeting
SummarySummary
For those who couldn’t attend, here’s a summary of what we discussed at our end-of-semester student meeting.
IntroductionIntroduction
First and foremost, congratulations to everyone who completed CS124. That’s a significant accomplishment and your first step in a journey in computer science. Some of you will go on to take CS128 and other courses in the department. Others will never take another computer science course—and that’s fine too. I hope we’ve given you some skills and tools that you’ll find useful in the future. Learning to work with computers sharpens your mind and makes you better at non-computer-related tasks as well.
I also want to thank the course staff. CS124 has by far the best tutors on campus in terms of engagement, preparation, and dedication. They spent an incredible amount of time on the tutoring site supporting you throughout the semester.
Becoming an Assistant TutorBecoming an Assistant Tutor
If you completed CS124, you’re eligible to join us next semester as an assistant tutor. This is the first step toward becoming a paid tutor. During your assistant tutor semester, we see how you do on the tutoring site—do you show up regularly? Are you supporting students effectively? It’s essentially a semester-long tryout. Assuming things go well, you’ll be ready to apply for a paid tutor position afterward. We provide mentorship and training to put you in the best position to succeed. I’ll contact everyone over break once the spring 2026 course is set up and the assistant tutor application is open—and by “application,” I mean you push a button on the website and you’re in.
Why We’re Having This MeetingWhy We’re Having This Meeting
This isn’t something we do every semester, but I thought it was important this time because there’s a lot changing around the class. I want to give you extra information about what we plan to do in the spring as we continue adapting to the changes taking place around us. I’ve been teaching this class for eight years and writing code for over 20 years. The last six months have been unlike any period I’ve ever experienced in terms of how quickly things are changing—not only within software development, but throughout society.
Acknowledging the Age of AnxietyAcknowledging the Age of Anxiety
Before we dive in, I want to recognize that this is an anxious time. I’ve started calling it the “age of anxiety” with AI in the middle. AI is driving a lot of excitement but also nervousness and fear. People are concerned about what the future might look like. Sometimes conversations about AI end up going past each other—someone excited about humans potentially creating artificial intelligence might be talking to someone terrified about large companies controlling this technology and what their vision for the world might mean for the rest of us. Both perspectives are completely valid. We’re not going to bury our heads in the sand, but I want everyone to be aware that this can be scary, and there are legitimate things to fear. I think about my own job—it’s possible that within a few years we’ll have AI tutors and AI instructors.
What Prompted These ChangesWhat Prompted These Changes
Let me set the stage by going back to the summer. I’m unusual compared to many faculty in that I actually write a lot of code—I maintain the autograders, website, backend systems, homework tools, and quizzes. This keeps me in the game and practicing what I’m professing. I was initially skeptical about AI, but over the summer I saw enough data points that I decided to try it. I signed up for Claude in late June, thinking I hoped I’d get my money’s worth. Within a week, I knew I already had.
The other thing I did was test whether Claude could complete last spring’s MP. I have a video of this (embedded in the slides). I gave it the test suites one at a time and just said “fix the errors.” With one minor exception where it got stuck briefly, it did the whole thing by itself in full “vibe coding” mode. That was my uh-oh moment. Clearly, if students could use AI to complete the assignment with almost no work, the assignment had very little value.
The Role of Specifications in AssignmentsThe Role of Specifications in Assignments
Traditional CS assignments work like this: the instructor creates a specification, gives it to students, students translate it into code, and then the code is graded against that specification. The specification plays a central role—it tells you what to do and how you’ll be evaluated. This is especially important for autograded assignments where ambiguity causes frustration. In the past, we gave full test suites to students, which served as part of the specification.
But here’s the problem: AI agents are too good at translating specifications into code. When I did my vibe coding experiment, I didn’t even give Claude the written instructions or video content—just the test suites—and it still completed everything.
This Semester’s ApproachThis Semester’s Approach
Coming into fall, we tried a compromise that I don’t think worked well. We wanted to continue the one-MP-everyone-does-the-same-thing structure while introducing AI and preventing students from just handing the spec to Claude. We faced an impossible tension: we needed specifications precise enough for fair grading but imprecise enough that AI couldn’t just do all the work. We tried not giving full test suites, but even the smaller test suites we provided were often enough. Staff members reported that when they told Claude to just “make the tests compile,” it not only compiled them but finished the entire assignment.
This approach essentially failed. Some students used AI and did very little work, learning very little. The goal was for students to learn by doing, but if students aren’t doing much, they aren’t learning much.
Spring 2026: My ProjectSpring 2026: My Project
So what’s the plan going forward? If AI agents are great at translating specifications to code, then the interesting human contribution is getting the idea out of your head and into a specification. That’s what we’ll have students do next semester.
Rather than everyone doing the same MP, each student will work on an individual project of their own choosing. It will still be an Android app (to keep students in the Java/Kotlin ecosystem), but you’ll be building your own idea.
Here’s how it will work:
- Discussions will be required next semester
- During the first half of the semester, you’ll use discussion sections to develop your idea—initial formulation, wireframing, planning activity flows, getting feedback from other students and tutors
- Around the midpoint, you’ll start using AI agents to realize your specification and turn it into a working application
- The MP lessons will become more general-purpose, covering concepts like activity lifecycle, layout, events, and UI elements that students can apply to their own projects
I’m calling this “My Project”—we’ve gone from “machine problem” to “machine project” to “My Project,” managing to retire both original words while keeping the MP acronym.
I’m genuinely excited about this. When you work on something you care about, it pulls you in more effectively. Some students are going to have a blast and learn far more than we could ever teach them with a standardized assignment. There’s a concept I like called “full breadth software developer”—the idea that one person can now go from product conception through implementation because AI agents make the coding part so much easier.
Of course there are challenges. Grading will be different. Supporting students will be different since everyone’s working on different projects. But I think this will force us to work with students at the level of the coding agent, which is really where I want this project to live.
Classical Programming ContinuesClassical Programming Continues
One thing that’s not changing: we’ll continue teaching what I’m calling “classical programming” through daily lessons and weekly CBTF quizzes. There’s still a strong argument that learning to take a written specification and translate it into working code is great mental training—it sharpens critical thinking, reading comprehension, and problem-solving abilities. It’s like weightlifting—the weights don’t go anywhere, but you’re getting stronger. So for spring, that component remains, while the project component supports AI-collaborative coding.
Call for FeedbackCall for Feedback
At a time like this when we’re adapting and trying new things, we need critical feedback from you and from the staff. We had a similar meeting with staff earlier this week with really useful conversation, including people saying “I don’t think you should do that.” That’s valuable—I want to hear multiple perspectives from people who might disagree. I’m not sure what the right thing to do is, but something is definitely changing. I’ve heard it all in my day and I’m pretty sturdy when it comes to critical feedback, so please don’t hold back.