From syntax to specification: teaching computing when code writes itself

The September 2026 issue of Communications of the ACM carries an opinion piece by Ibrahim Albluwi and fifteen colleagues, “Computing Education When Writing Code Is No Longer the Challenge”. It is the outcome of a Dagstuhl seminar on generative AI in programming education, and it asks a simple question: what should we teach when producing code is no longer the hard part?

The authors’ answer is that the difficulty has moved. Before generating any code, students must be able to express what they want with enough precision (specification and design). After the code is produced, they must be able to read it, judge its quality and validate that it is correct and trustworthy. Banning the tools is not an option: students entering their first programming course in a few years will have always used them.

Diagram: before AI, humans analyze, design, implement, verify and validate; after AI, humans analyze, prompt, orchestrate, verify and validate while generative AI generates the code.
Shift in competencies before and after GenAI: the bottleneck moves from producing code to prompting, orchestrating and validating. Figure from Albluwi et al. (2026), Communications of the ACM, 69(9), licensed under CC BY 4.0.

The article proposes three levels of ambition, which the authors call Quickfix, Renovation and Visionary. They range from an explicit GenAI policy in every course and secured exams, to redesigned introductory courses and AI tutors, up to rebuilding the curriculum around design, requirements specification and testing. They also note that agentic AI systems only strengthen the case: the bottleneck is human judgement in framing problems, orchestrating work and evaluating results.

My take

I agree, and I would go further: we need to reimagine the curriculum from the ground up. LLMs are another abstraction layer, exactly like the move a few decades ago from assembly to interpreted programming languages. Each step let programmers say more about what they want and less about how the machine should do it.

The difference this time is the medium. LLMs let us express specifications in natural language, and natural language is polysemic: the same sentence can mean different things to different readers, and to different models. Ambiguities that a compiler would reject now quietly become code that does something we did not intend.

Education therefore has to shift from teaching the syntax of a specific language to teaching how to write specifications that avoid bugs and lead to efficient and effective code, and how to check that the result actually meets them. In short, we need to teach specification and verification.

Full article (open access): Albluwi, I., et al. (2026). Computing education when writing code is no longer the challenge. Communications of the ACM, 69(9), 22–25. https://doi.org/10.1145/3808702