Rethinking Programming in the Age of Artificial Intelligence

In an age increasingly shaped by artificial intelligence, a deceptively simple question—“What does it mean to program?”—demands renewed attention. Though often taken for granted by both educators and practitioners, this question touches the core of how we define human involvement in computational problem-solving. As programming education meets the rise of generative AI, this exploration is no longer philosophical—it is essential.

Theoretical Foundations: Programming Beyond Code

Historically, programming was defined as the process of specifying instructions for a computer. Alan Blackwell’s historical analysis shows this began with sequencing operations and gradually evolved into translating human language into machine-executable code. This definition, while functionally correct, is narrow.

Influential computer scientists like Donald Knuth and Edsger Dijkstra expanded this notion by framing programming as an art form, one that demands creativity, logic, aesthetics, and ingenuity. Peter Naur emphasized understanding the problem domain and maintaining contextual awareness within programming. More recently, Amy Ko highlighted the ethical and societal dimensions embedded within software systems. Together, these viewpoints define programming not just as code-writing, but as a deeply human process of composition, critical thinking, and social responsibility.

In Practice: The Educator’s Lens

To explore how programming is currently understood in educational settings, a comprehensive survey of programming educators in Denmark was conducted. This study encompassed 130 introductory programming courses across 175 higher education programs, with responses from a diverse and representative group of educators.

Despite the literature’s rich definitions, many educators narrowly defined programming as either problem-solving (36%) or writing instructions for a computer (35%). Few emphasized broader dimensions such as algorithms (10%), automation (5%), or ethics. This simplification may be intentional to make programming more approachable for beginners but risks reinforcing a reductive view.

What Makes a Good Programmer?

Interestingly, when asked what it means to be a good programmer, educators’ perspectives shifted. Attributes such as abstraction and decomposition (20%), readable structure (20%), logical reasoning (11%), and creativity (9%) were commonly cited reflecting a deeper understanding of programming as both an analytical and creative practice. These responses align more closely with scholarly definitions that emphasize conceptual understanding over rote instruction-writing.

Programming in the Age of Generative AI

Generative AI systems like ChatGPT and Copilot have redefined how programming tasks are approached, especially by beginners. Instructors must now ask: if students perceive programming as mere instruction-writing, what stops them from outsourcing all programming to AI?

This growing reliance underscores the urgent need to articulate what programming truly is. As AI automates syntax, the uniquely human aspects like problem framing, decomposition, logic, ethics, and creativity become more crucial. Programming education must adapt by explicitly teaching these impalpable qualities.

Toward a New Pedagogy

How should programming be taught in the AI era? Two potential approaches emerge:

  1. Craftsman Approach: Restrict early use of AI tools to develop foundational skills in problem-solving and code construction through oral exams, written assessments, and hands-on coding tasks.

  2. Editor Approach: Embrace AI-assisted programming while emphasizing analytical comprehension and refinement of AI-generated solutions.

Neither approach is universally correct, but both begin with the same premise: having intentional, explicit conversations with students about what programming truly entails.

There may never be a singular definition of programming and perhaps that’s a strength. Yet, in this ambiguity lies a responsibility: to ensure that students understand programming as more than coding. It is a domain of critical thought, creativity, and contextual awareness. These are the very elements least likely to be replicated by machines, and most necessary for navigating the future.

 

Origin Article: https://cacm.acm.org/opinion/what-is-programming/