Reflections on the Future of Introductory CS Classes
Thoughts about how AI is shaping early computer programming classes
May 23, 2025
I’ve been a section leader for Stanford’s introductory programming classes - both when I attended Stanford as an undergraduate and more recently as part of their Code in Place program.
AI coding tools have been making remarkable improvements this year and by many accounts can operate as junior developers in a team. Given this rapid progress, how should introductory programming education evolve? While professional software developers must deeply understand programming and system design, casual learners or those who only tangentially interact with coding may not require the same level of mastery.
AI, like many tools, enhances productivity and removes the burden of being an expert in multiple areas to accomplish tasks. But to effectively use AI, one must understand problem-solving fundamentals like breaking down challenges, iterating on solutions, and critically assessing AI-generated outputs. Whether coding manually or working alongside AI, a strong foundation in computer interaction remains essential.
Traditionally, CS courses focus on programming languages and syntax before gradually introducing complexity. While this approach has merit, a shift toward problem-solving and computational thinking could better prepare students for an AI-driven world. Instead of placing syntax at the core, introductory courses could emphasize:
- Clarifying problems to remove ambiguity and resolve assumptions
- Breaking problems into smaller parts to make them manageable
- Validating each component to ensure accuracy
- Iterating on solutions through feedback and refinement
- Integrating solutions to form a cohesive system
- Testing for real-world and unexpected inputs to ensure robustness
Such a course could incorporate AI tools, allowing students to engage in structured problem-solving without relying solely on a programming language like Python. This doesn’t mean coding fundamentals should be abandoned. Instead, they should be introduced strategically as students advance.
This shift would redefine programming education by prioritizing complex problem-solving and breaking challenges into manageable steps, rather than beginning with syntax and gradually increasing complexity. While programming languages and foundational skills remain essential for those pursuing a software development career, this new approach would serve as an exciting foundation for learners who want to build a foundation in computer interaction in the age of AI.
As AI continues to evolve, learning how to think computationally is just as important as learning how to code. The next generation of CS education must reflect that balance.